Month: June 2024
Please tell me what corrections can I make when encountering the following error?
[X, Y, T] = ndgrid(xspan, yspan, tspan0);
R_pre = interpn(X, Y, T, u_history, x, y, tref, ‘linear’);
Incorrect use of griddedInterpolant.
GridVectors must define grids whose size is compatible with the Values array.[X, Y, T] = ndgrid(xspan, yspan, tspan0);
R_pre = interpn(X, Y, T, u_history, x, y, tref, ‘linear’);
Incorrect use of griddedInterpolant.
GridVectors must define grids whose size is compatible with the Values array. [X, Y, T] = ndgrid(xspan, yspan, tspan0);
R_pre = interpn(X, Y, T, u_history, x, y, tref, ‘linear’);
Incorrect use of griddedInterpolant.
GridVectors must define grids whose size is compatible with the Values array. transferred MATLAB Answers — New Questions
Image Representation conversion to functional array
I want to be able to convert a set of image representations of wing venation patterns to a multiple array format.
For each wing vein, the array needs to include
L, h = xy coordinate for the start of the vein
vt = the thickness of the vein
Lf, hf = xy coordinate for the end of the vein
R = rough aggregate radius of the arc of the vein.
For each cross-vein, the array needs to include
L1% = the starting x position of the connecting cross-vein
L2% = the finishing x position of the connecting cross-vein
ct = thickness of the cross vein
The total array is about 69 values long with it being split into a 7×6 and 3×9 array for vein and cross-vein properties respectively.
I’ve had some success with the reverse of this (taking an encoded array and converting that into an image representation, attached below with an example of one of the images that will be used).
%% Define the vein and cross_vein arrays
asydentus.vein = [1.25 25 2 92.5 29.5 39.47041396 ; 2.25 27.5 3 43.75 16.5 -14.73949649 ; 13.75 29.5 1 71.25 21 -33.2551027 ; 13.75 29.5 1 86.75 26.5 -79.65111699 ; 10 37.5 2 74.5 58.5 43.17494694 ; 10 37.5 2 63 93 17.18991587 ; 10 37.5 1 25 72.5 4.144372635];
asydentus.cross_vein = [13.25 15 2 ; 0 0 0 ; 0 0 0 ; 25.25 26.75 2 ; 30.75 30.5 2 ; 20.5 19.25 2 ; 0 0 0 ; 0 0 0 ; 0 0 0];
% Scaling factors
sf1 = 4;
sf2 = -2;
sf3 = 20;
%% Define startpoints and endpoints for veins and cross-veins and define radius for veins
vein1.p1 = [sf1 * asydentus.vein(1,1), sf2 * asydentus.vein(1,2)]; % vein 1 startpoint
vein1.p2 = [sf1 * asydentus.vein(1,4), sf2 * asydentus.vein(1,5)]; % vein 1 endpoint
vein1.r = sf3 * [asydentus.vein(1,6)]; % vein 1 radius value
vein2.p1 = [sf1 * asydentus.vein(2,1), sf2 * asydentus.vein(2,2)]; % vein 2 startpoint
vein2.p2 = [sf1 * asydentus.vein(2,4), sf2 * asydentus.vein(2,5)]; % vein 2 endpoint
vein2.r = sf3 * [asydentus.vein(2,6)]; % vein 2 radius value
vein3.p1 = [sf1 * asydentus.vein(3,1), sf2 * asydentus.vein(3,2)]; % vein 3 startpoint
vein3.p2 = [sf1 * asydentus.vein(3,4), sf2 * asydentus.vein(3,5)]; % vein 3 endpoint
vein3.r = sf3 * [asydentus.vein(3,6)]; % vein 3 radius value
vein4.p1 = [sf1 * asydentus.vein(4,1), sf2 * asydentus.vein(4,2)]; % vein 4 startpoint
vein4.p2 = [sf1 * asydentus.vein(4,4), sf2 * asydentus.vein(4,5)]; % vein 4 endpoint
vein4.r = sf3 * [asydentus.vein(4,6)]; % vein 4 radius value
vein5.p1 = [sf1 * asydentus.vein(5,1), sf2 * asydentus.vein(5,2)]; % vein 5 startpoint
vein5.p2 = [sf1 * asydentus.vein(5,4), sf2 * asydentus.vein(5,5)]; % vein 5 endpoint
vein5.r = sf3 * [asydentus.vein(5,6)]; % vein 5 radius value
vein6.p1 = [sf1 * asydentus.vein(6,1), sf2 * asydentus.vein(6,2)]; % vein 6 startpoint
vein6.p2 = [sf1 * asydentus.vein(6,4), sf2 * asydentus.vein(6,5)]; % vein 6 endpoint
vein6.r = sf3 * [asydentus.vein(6,6)]; % vein 6 radius value
vein7.p1 = [sf1 * asydentus.vein(7,1), sf2 * asydentus.vein(7,2)]; % vein 7 startpoint
vein7.p2 = [sf1 * asydentus.vein(7,4), sf2 * asydentus.vein(7,5)]; % vein 7 endpoint
vein7.r = sf3 * [asydentus.vein(7,6)]; % vein 7 radius value
crossvein1.x1 = sf1 * [asydentus.cross_vein(1,1)]; % crossvein 1 start x-coordinate
crossvein1.x2 = sf1 * [asydentus.cross_vein(1,2)]; % crossvein 1 end x-coordinate
crossvein4.x1 = sf1 * [asydentus.cross_vein(4,1)]; % crossvein 4 start x-coordinate
crossvein4.x2 = sf1 * [asydentus.cross_vein(4,2)]; % crossvein 4 end x-coordinate
crossvein5.x1 = sf1 * [asydentus.cross_vein(5,1)]; % crossvein 5 start x-coordinate
crossvein5.x2 = sf1 * [asydentus.cross_vein(5,2)]; % crossvein 5 end x-coordinate
crossvein6.x1 = sf1 * [asydentus.cross_vein(6,1)]; % crossvein 6 start x-coordinate
crossvein6.x2 = sf1 * [asydentus.cross_vein(6,1)]; % crossvein 6 end x-coordinate
%% Solve for centre of radius and cross-vein coordinates
syms x1 y1
[x1, y1] = solve((x1-vein1.p1(1))^2+(y1-vein1.p1(2))^2==vein1.r^2, (x1-vein1.p2(1))^2+(y1-vein1.p2(2))^2==vein1.r^2, x1, y1);
% vein 1 centre of radius
arc1_c1 = double([x1(1), y1(1)]);
arc1_c2 = double([x1(2), y1(2)]);
syms x2 y2
[x2, y2] = solve((x2-vein2.p1(1))^2+(y2-vein2.p1(2))^2==vein2.r^2, (x2-vein2.p2(1))^2+(y2-vein2.p2(2))^2==vein2.r^2, x2, y2);
% vein 2 centre of radius
arc2_c1 = double([x2(1), y2(1)]);
arc2_c2 = double([x2(2), y2(2)]);
syms x3 y3
[x3, y3] = solve((x3-vein3.p1(1))^2+(y3-vein3.p1(2))^2==vein3.r^2, (x3-vein3.p2(1))^2+(y3-vein3.p2(2))^2==vein3.r^2, x3, y3);
% vein 3 centre of radius
arc3_c1 = double([x3(1), y3(1)]);
arc3_c2 = double([x3(2), y3(2)]);
syms x4 y4
[x4, y4] = solve((x4-vein4.p1(1))^2+(y4-vein4.p1(2))^2==vein4.r^2, (x4-vein4.p2(1))^2+(y4-vein4.p2(2))^2==vein4.r^2, x4, y4);
% vein 4 centre of radius
arc4_c1 = double([x4(1), y4(1)]);
arc4_c2 = double([x4(2), y4(2)]);
syms x5 y5
[x5, y5] = solve((x5-vein5.p1(1))^2+(y5-vein5.p1(2))^2==vein5.r^2, (x5-vein5.p2(1))^2+(y5-vein5.p2(2))^2==vein5.r^2, x5, y5);
% vein 5 centre of radius
arc5_c1 = double([x5(1), y5(1)]);
arc5_c2 = double([x5(2), y5(2)]);
syms x6 y6
[x6, y6] = solve((x6-vein6.p1(1))^2+(y6-vein6.p1(2))^2==vein6.r^2, (x6-vein6.p2(1))^2+(y6-vein6.p2(2))^2==vein6.r^2, x6, y6);
% vein 6 centre of radius
arc6_c1 = double([x6(1), y6(1)]);
arc6_c2 = double([x6(2), y6(2)]);
syms x7 y7
[x7, y7] = solve((x7-vein7.p1(1))^2+(y7-vein7.p1(2))^2==vein7.r^2, (x7-vein7.p2(1))^2+(y7-vein7.p2(2))^2==vein7.r^2, x7, y7);
% vein 7 centre of radius
arc7_c1 = double([x7(1), y7(1)]);
arc7_c2 = double([x7(2), y7(2)]);
syms yc1_1
[yc1_1] = solve ((crossvein1.x1(1) – arc1_c1(1)).^2 + (yc1_1 – arc1_c1(2)).^2 – vein1.r^2, (-200<=yc1_1)<=0);
crossvein1.y1 = yc1_1;
syms yc1_2
[yc1_2] = solve ((crossvein1.x2(1) – arc2_c2(1)).^2 + (yc1_2 – arc2_c2(2)).^2 – vein2.r^2, (-200<=yc1_2)<=0);
crossvein1.y2 = yc1_2;
syms yc4_1
[yc4_1] = solve ((crossvein4.x1(1) – arc4_c2(1)).^2 + (yc4_1 – arc4_c2(2)).^2 – vein4.r^2, (-200<=yc4_1)<=0);
crossvein4.y1 = yc4_1;
syms yc4_2
[yc4_2] = solve ((crossvein4.x2(1) – arc5_c1(1)).^2 + (yc4_2 – arc5_c1(2)).^2 – vein5.r^2, (-200<=yc4_2)<=0);
crossvein4.y2 = yc4_2;
syms yc5_1
[yc5_1] = solve ((crossvein5.x1(1) – arc5_c1(1)).^2 + (yc5_1 – arc5_c1(2)).^2 – vein5.r^2, (-200<=yc5_1)<=0);
crossvein5.y1 = yc5_1;
syms yc5_2
[yc5_2] = solve ((crossvein5.x2(1) – arc6_c1(1)).^2 + (yc5_2 – arc6_c1(2)).^2 – vein6.r^2, (-200<=yc5_2)<=0);
crossvein5.y2 = yc5_2;
syms yc6_1
[yc6_1] = solve ((crossvein6.x1(1) – arc6_c1(1)).^2 + (yc6_1 – arc6_c1(2)).^2 – vein6.r^2, (-200<=yc6_1)<=0);
crossvein6.y1 = yc6_1;
syms yc6_2
[yc6_2] = solve ((crossvein6.x2(1) – arc7_c1(1)).^2 + (yc6_2 – arc7_c1(2)).^2 – vein7.r^2, (-200<=yc6_2)<=0);
crossvein6.y2 = yc6_2;
%% Define Arc Function for vein radius
figure;
hold on;
% Define the implicit functions for the circles
f1_1 = @(X1, Y1) (X1 – arc1_c1(1)).^2 + (Y1 – arc1_c1(2)).^2 – vein1.r^2;
f1_2 = @(X1, Y1) (X1 – arc1_c2(1)).^2 + (Y1 – arc1_c2(2)).^2 – vein1.r^2;
f2_1 = @(X2, Y2) (X2 – arc2_c1(1)).^2 + (Y2 – arc2_c1(2)).^2 – vein2.r^2;
f2_2 = @(X2, Y2) (X2 – arc2_c2(1)).^2 + (Y2 – arc2_c2(2)).^2 – vein2.r^2;
f3_1 = @(X3, Y3) (X3 – arc3_c1(1)).^2 + (Y3 – arc3_c1(2)).^2 – vein3.r^2;
f3_2 = @(X3, Y3) (X3 – arc3_c2(1)).^2 + (Y3 – arc3_c2(2)).^2 – vein3.r^2;
f4_1 = @(X4, Y4) (X4 – arc4_c1(1)).^2 + (Y4 – arc4_c1(2)).^2 – vein4.r^2;
f4_2 = @(X4, Y4) (X4 – arc4_c2(1)).^2 + (Y4 – arc4_c2(2)).^2 – vein4.r^2;
f5_1 = @(X5, Y5) (X5 – arc5_c1(1)).^2 + (Y5 – arc5_c1(2)).^2 – vein5.r^2;
f5_2 = @(X5, Y5) (X5 – arc5_c2(1)).^2 + (Y5 – arc5_c2(2)).^2 – vein5.r^2;
f6_1 = @(X6, Y6) (X6 – arc6_c1(1)).^2 + (Y6 – arc6_c1(2)).^2 – vein6.r^2;
f6_2 = @(X6, Y6) (X6 – arc6_c2(1)).^2 + (Y6 – arc6_c2(2)).^2 – vein6.r^2;
f7_1 = @(X7, Y7) (X7 – arc7_c1(1)).^2 + (Y7 – arc7_c1(2)).^2 – vein7.r^2;
f7_2 = @(X7, Y7) (X7 – arc7_c2(1)).^2 + (Y7 – arc7_c2(2)).^2 – vein7.r^2;
%% Plot the veins and cross-veins using fimplicit
% Depending on whether the arc of the vein is 0<=180 or 180<=360 will
% decide which implicit function is used
% use image representations as a guide
t = [1; 2; 3]; % Line Thickness
fimplicit(f1_1, [5 370 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f1_2, [5 370 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f2_1, [9 175 -200 0], ‘LineWidth’, t(3) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f2_2, [9 175 -200 0], ‘LineWidth’, t(3) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f3_1, [55 285 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f3_2, [55 285 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f4_1, [55 347 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f4_2, [55 347 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f5_1, [40 298 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f5_2, [40 298 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f6_1, [40 252 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f6_2, [40 252 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f7_1, [40 100 -160 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f7_2, [40 100 -160 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
plot([crossvein1.x1 crossvein1.x2], [crossvein1.y1 crossvein1.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein4.x1 crossvein4.x2], [crossvein4.y1 crossvein4.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein5.x1 crossvein5.x2], [crossvein5.y1 crossvein5.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein6.x1 crossvein6.x2], [crossvein6.y1 crossvein6.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
% Plot settings
axis([0 400 -200 0]);
xlabel(‘X’);
ylabel(‘Y’);
title(‘Asydentus Venation’);
hold off;I want to be able to convert a set of image representations of wing venation patterns to a multiple array format.
For each wing vein, the array needs to include
L, h = xy coordinate for the start of the vein
vt = the thickness of the vein
Lf, hf = xy coordinate for the end of the vein
R = rough aggregate radius of the arc of the vein.
For each cross-vein, the array needs to include
L1% = the starting x position of the connecting cross-vein
L2% = the finishing x position of the connecting cross-vein
ct = thickness of the cross vein
The total array is about 69 values long with it being split into a 7×6 and 3×9 array for vein and cross-vein properties respectively.
I’ve had some success with the reverse of this (taking an encoded array and converting that into an image representation, attached below with an example of one of the images that will be used).
%% Define the vein and cross_vein arrays
asydentus.vein = [1.25 25 2 92.5 29.5 39.47041396 ; 2.25 27.5 3 43.75 16.5 -14.73949649 ; 13.75 29.5 1 71.25 21 -33.2551027 ; 13.75 29.5 1 86.75 26.5 -79.65111699 ; 10 37.5 2 74.5 58.5 43.17494694 ; 10 37.5 2 63 93 17.18991587 ; 10 37.5 1 25 72.5 4.144372635];
asydentus.cross_vein = [13.25 15 2 ; 0 0 0 ; 0 0 0 ; 25.25 26.75 2 ; 30.75 30.5 2 ; 20.5 19.25 2 ; 0 0 0 ; 0 0 0 ; 0 0 0];
% Scaling factors
sf1 = 4;
sf2 = -2;
sf3 = 20;
%% Define startpoints and endpoints for veins and cross-veins and define radius for veins
vein1.p1 = [sf1 * asydentus.vein(1,1), sf2 * asydentus.vein(1,2)]; % vein 1 startpoint
vein1.p2 = [sf1 * asydentus.vein(1,4), sf2 * asydentus.vein(1,5)]; % vein 1 endpoint
vein1.r = sf3 * [asydentus.vein(1,6)]; % vein 1 radius value
vein2.p1 = [sf1 * asydentus.vein(2,1), sf2 * asydentus.vein(2,2)]; % vein 2 startpoint
vein2.p2 = [sf1 * asydentus.vein(2,4), sf2 * asydentus.vein(2,5)]; % vein 2 endpoint
vein2.r = sf3 * [asydentus.vein(2,6)]; % vein 2 radius value
vein3.p1 = [sf1 * asydentus.vein(3,1), sf2 * asydentus.vein(3,2)]; % vein 3 startpoint
vein3.p2 = [sf1 * asydentus.vein(3,4), sf2 * asydentus.vein(3,5)]; % vein 3 endpoint
vein3.r = sf3 * [asydentus.vein(3,6)]; % vein 3 radius value
vein4.p1 = [sf1 * asydentus.vein(4,1), sf2 * asydentus.vein(4,2)]; % vein 4 startpoint
vein4.p2 = [sf1 * asydentus.vein(4,4), sf2 * asydentus.vein(4,5)]; % vein 4 endpoint
vein4.r = sf3 * [asydentus.vein(4,6)]; % vein 4 radius value
vein5.p1 = [sf1 * asydentus.vein(5,1), sf2 * asydentus.vein(5,2)]; % vein 5 startpoint
vein5.p2 = [sf1 * asydentus.vein(5,4), sf2 * asydentus.vein(5,5)]; % vein 5 endpoint
vein5.r = sf3 * [asydentus.vein(5,6)]; % vein 5 radius value
vein6.p1 = [sf1 * asydentus.vein(6,1), sf2 * asydentus.vein(6,2)]; % vein 6 startpoint
vein6.p2 = [sf1 * asydentus.vein(6,4), sf2 * asydentus.vein(6,5)]; % vein 6 endpoint
vein6.r = sf3 * [asydentus.vein(6,6)]; % vein 6 radius value
vein7.p1 = [sf1 * asydentus.vein(7,1), sf2 * asydentus.vein(7,2)]; % vein 7 startpoint
vein7.p2 = [sf1 * asydentus.vein(7,4), sf2 * asydentus.vein(7,5)]; % vein 7 endpoint
vein7.r = sf3 * [asydentus.vein(7,6)]; % vein 7 radius value
crossvein1.x1 = sf1 * [asydentus.cross_vein(1,1)]; % crossvein 1 start x-coordinate
crossvein1.x2 = sf1 * [asydentus.cross_vein(1,2)]; % crossvein 1 end x-coordinate
crossvein4.x1 = sf1 * [asydentus.cross_vein(4,1)]; % crossvein 4 start x-coordinate
crossvein4.x2 = sf1 * [asydentus.cross_vein(4,2)]; % crossvein 4 end x-coordinate
crossvein5.x1 = sf1 * [asydentus.cross_vein(5,1)]; % crossvein 5 start x-coordinate
crossvein5.x2 = sf1 * [asydentus.cross_vein(5,2)]; % crossvein 5 end x-coordinate
crossvein6.x1 = sf1 * [asydentus.cross_vein(6,1)]; % crossvein 6 start x-coordinate
crossvein6.x2 = sf1 * [asydentus.cross_vein(6,1)]; % crossvein 6 end x-coordinate
%% Solve for centre of radius and cross-vein coordinates
syms x1 y1
[x1, y1] = solve((x1-vein1.p1(1))^2+(y1-vein1.p1(2))^2==vein1.r^2, (x1-vein1.p2(1))^2+(y1-vein1.p2(2))^2==vein1.r^2, x1, y1);
% vein 1 centre of radius
arc1_c1 = double([x1(1), y1(1)]);
arc1_c2 = double([x1(2), y1(2)]);
syms x2 y2
[x2, y2] = solve((x2-vein2.p1(1))^2+(y2-vein2.p1(2))^2==vein2.r^2, (x2-vein2.p2(1))^2+(y2-vein2.p2(2))^2==vein2.r^2, x2, y2);
% vein 2 centre of radius
arc2_c1 = double([x2(1), y2(1)]);
arc2_c2 = double([x2(2), y2(2)]);
syms x3 y3
[x3, y3] = solve((x3-vein3.p1(1))^2+(y3-vein3.p1(2))^2==vein3.r^2, (x3-vein3.p2(1))^2+(y3-vein3.p2(2))^2==vein3.r^2, x3, y3);
% vein 3 centre of radius
arc3_c1 = double([x3(1), y3(1)]);
arc3_c2 = double([x3(2), y3(2)]);
syms x4 y4
[x4, y4] = solve((x4-vein4.p1(1))^2+(y4-vein4.p1(2))^2==vein4.r^2, (x4-vein4.p2(1))^2+(y4-vein4.p2(2))^2==vein4.r^2, x4, y4);
% vein 4 centre of radius
arc4_c1 = double([x4(1), y4(1)]);
arc4_c2 = double([x4(2), y4(2)]);
syms x5 y5
[x5, y5] = solve((x5-vein5.p1(1))^2+(y5-vein5.p1(2))^2==vein5.r^2, (x5-vein5.p2(1))^2+(y5-vein5.p2(2))^2==vein5.r^2, x5, y5);
% vein 5 centre of radius
arc5_c1 = double([x5(1), y5(1)]);
arc5_c2 = double([x5(2), y5(2)]);
syms x6 y6
[x6, y6] = solve((x6-vein6.p1(1))^2+(y6-vein6.p1(2))^2==vein6.r^2, (x6-vein6.p2(1))^2+(y6-vein6.p2(2))^2==vein6.r^2, x6, y6);
% vein 6 centre of radius
arc6_c1 = double([x6(1), y6(1)]);
arc6_c2 = double([x6(2), y6(2)]);
syms x7 y7
[x7, y7] = solve((x7-vein7.p1(1))^2+(y7-vein7.p1(2))^2==vein7.r^2, (x7-vein7.p2(1))^2+(y7-vein7.p2(2))^2==vein7.r^2, x7, y7);
% vein 7 centre of radius
arc7_c1 = double([x7(1), y7(1)]);
arc7_c2 = double([x7(2), y7(2)]);
syms yc1_1
[yc1_1] = solve ((crossvein1.x1(1) – arc1_c1(1)).^2 + (yc1_1 – arc1_c1(2)).^2 – vein1.r^2, (-200<=yc1_1)<=0);
crossvein1.y1 = yc1_1;
syms yc1_2
[yc1_2] = solve ((crossvein1.x2(1) – arc2_c2(1)).^2 + (yc1_2 – arc2_c2(2)).^2 – vein2.r^2, (-200<=yc1_2)<=0);
crossvein1.y2 = yc1_2;
syms yc4_1
[yc4_1] = solve ((crossvein4.x1(1) – arc4_c2(1)).^2 + (yc4_1 – arc4_c2(2)).^2 – vein4.r^2, (-200<=yc4_1)<=0);
crossvein4.y1 = yc4_1;
syms yc4_2
[yc4_2] = solve ((crossvein4.x2(1) – arc5_c1(1)).^2 + (yc4_2 – arc5_c1(2)).^2 – vein5.r^2, (-200<=yc4_2)<=0);
crossvein4.y2 = yc4_2;
syms yc5_1
[yc5_1] = solve ((crossvein5.x1(1) – arc5_c1(1)).^2 + (yc5_1 – arc5_c1(2)).^2 – vein5.r^2, (-200<=yc5_1)<=0);
crossvein5.y1 = yc5_1;
syms yc5_2
[yc5_2] = solve ((crossvein5.x2(1) – arc6_c1(1)).^2 + (yc5_2 – arc6_c1(2)).^2 – vein6.r^2, (-200<=yc5_2)<=0);
crossvein5.y2 = yc5_2;
syms yc6_1
[yc6_1] = solve ((crossvein6.x1(1) – arc6_c1(1)).^2 + (yc6_1 – arc6_c1(2)).^2 – vein6.r^2, (-200<=yc6_1)<=0);
crossvein6.y1 = yc6_1;
syms yc6_2
[yc6_2] = solve ((crossvein6.x2(1) – arc7_c1(1)).^2 + (yc6_2 – arc7_c1(2)).^2 – vein7.r^2, (-200<=yc6_2)<=0);
crossvein6.y2 = yc6_2;
%% Define Arc Function for vein radius
figure;
hold on;
% Define the implicit functions for the circles
f1_1 = @(X1, Y1) (X1 – arc1_c1(1)).^2 + (Y1 – arc1_c1(2)).^2 – vein1.r^2;
f1_2 = @(X1, Y1) (X1 – arc1_c2(1)).^2 + (Y1 – arc1_c2(2)).^2 – vein1.r^2;
f2_1 = @(X2, Y2) (X2 – arc2_c1(1)).^2 + (Y2 – arc2_c1(2)).^2 – vein2.r^2;
f2_2 = @(X2, Y2) (X2 – arc2_c2(1)).^2 + (Y2 – arc2_c2(2)).^2 – vein2.r^2;
f3_1 = @(X3, Y3) (X3 – arc3_c1(1)).^2 + (Y3 – arc3_c1(2)).^2 – vein3.r^2;
f3_2 = @(X3, Y3) (X3 – arc3_c2(1)).^2 + (Y3 – arc3_c2(2)).^2 – vein3.r^2;
f4_1 = @(X4, Y4) (X4 – arc4_c1(1)).^2 + (Y4 – arc4_c1(2)).^2 – vein4.r^2;
f4_2 = @(X4, Y4) (X4 – arc4_c2(1)).^2 + (Y4 – arc4_c2(2)).^2 – vein4.r^2;
f5_1 = @(X5, Y5) (X5 – arc5_c1(1)).^2 + (Y5 – arc5_c1(2)).^2 – vein5.r^2;
f5_2 = @(X5, Y5) (X5 – arc5_c2(1)).^2 + (Y5 – arc5_c2(2)).^2 – vein5.r^2;
f6_1 = @(X6, Y6) (X6 – arc6_c1(1)).^2 + (Y6 – arc6_c1(2)).^2 – vein6.r^2;
f6_2 = @(X6, Y6) (X6 – arc6_c2(1)).^2 + (Y6 – arc6_c2(2)).^2 – vein6.r^2;
f7_1 = @(X7, Y7) (X7 – arc7_c1(1)).^2 + (Y7 – arc7_c1(2)).^2 – vein7.r^2;
f7_2 = @(X7, Y7) (X7 – arc7_c2(1)).^2 + (Y7 – arc7_c2(2)).^2 – vein7.r^2;
%% Plot the veins and cross-veins using fimplicit
% Depending on whether the arc of the vein is 0<=180 or 180<=360 will
% decide which implicit function is used
% use image representations as a guide
t = [1; 2; 3]; % Line Thickness
fimplicit(f1_1, [5 370 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f1_2, [5 370 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f2_1, [9 175 -200 0], ‘LineWidth’, t(3) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f2_2, [9 175 -200 0], ‘LineWidth’, t(3) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f3_1, [55 285 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f3_2, [55 285 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f4_1, [55 347 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f4_2, [55 347 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f5_1, [40 298 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f5_2, [40 298 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f6_1, [40 252 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f6_2, [40 252 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f7_1, [40 100 -160 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f7_2, [40 100 -160 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
plot([crossvein1.x1 crossvein1.x2], [crossvein1.y1 crossvein1.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein4.x1 crossvein4.x2], [crossvein4.y1 crossvein4.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein5.x1 crossvein5.x2], [crossvein5.y1 crossvein5.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein6.x1 crossvein6.x2], [crossvein6.y1 crossvein6.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
% Plot settings
axis([0 400 -200 0]);
xlabel(‘X’);
ylabel(‘Y’);
title(‘Asydentus Venation’);
hold off; I want to be able to convert a set of image representations of wing venation patterns to a multiple array format.
For each wing vein, the array needs to include
L, h = xy coordinate for the start of the vein
vt = the thickness of the vein
Lf, hf = xy coordinate for the end of the vein
R = rough aggregate radius of the arc of the vein.
For each cross-vein, the array needs to include
L1% = the starting x position of the connecting cross-vein
L2% = the finishing x position of the connecting cross-vein
ct = thickness of the cross vein
The total array is about 69 values long with it being split into a 7×6 and 3×9 array for vein and cross-vein properties respectively.
I’ve had some success with the reverse of this (taking an encoded array and converting that into an image representation, attached below with an example of one of the images that will be used).
%% Define the vein and cross_vein arrays
asydentus.vein = [1.25 25 2 92.5 29.5 39.47041396 ; 2.25 27.5 3 43.75 16.5 -14.73949649 ; 13.75 29.5 1 71.25 21 -33.2551027 ; 13.75 29.5 1 86.75 26.5 -79.65111699 ; 10 37.5 2 74.5 58.5 43.17494694 ; 10 37.5 2 63 93 17.18991587 ; 10 37.5 1 25 72.5 4.144372635];
asydentus.cross_vein = [13.25 15 2 ; 0 0 0 ; 0 0 0 ; 25.25 26.75 2 ; 30.75 30.5 2 ; 20.5 19.25 2 ; 0 0 0 ; 0 0 0 ; 0 0 0];
% Scaling factors
sf1 = 4;
sf2 = -2;
sf3 = 20;
%% Define startpoints and endpoints for veins and cross-veins and define radius for veins
vein1.p1 = [sf1 * asydentus.vein(1,1), sf2 * asydentus.vein(1,2)]; % vein 1 startpoint
vein1.p2 = [sf1 * asydentus.vein(1,4), sf2 * asydentus.vein(1,5)]; % vein 1 endpoint
vein1.r = sf3 * [asydentus.vein(1,6)]; % vein 1 radius value
vein2.p1 = [sf1 * asydentus.vein(2,1), sf2 * asydentus.vein(2,2)]; % vein 2 startpoint
vein2.p2 = [sf1 * asydentus.vein(2,4), sf2 * asydentus.vein(2,5)]; % vein 2 endpoint
vein2.r = sf3 * [asydentus.vein(2,6)]; % vein 2 radius value
vein3.p1 = [sf1 * asydentus.vein(3,1), sf2 * asydentus.vein(3,2)]; % vein 3 startpoint
vein3.p2 = [sf1 * asydentus.vein(3,4), sf2 * asydentus.vein(3,5)]; % vein 3 endpoint
vein3.r = sf3 * [asydentus.vein(3,6)]; % vein 3 radius value
vein4.p1 = [sf1 * asydentus.vein(4,1), sf2 * asydentus.vein(4,2)]; % vein 4 startpoint
vein4.p2 = [sf1 * asydentus.vein(4,4), sf2 * asydentus.vein(4,5)]; % vein 4 endpoint
vein4.r = sf3 * [asydentus.vein(4,6)]; % vein 4 radius value
vein5.p1 = [sf1 * asydentus.vein(5,1), sf2 * asydentus.vein(5,2)]; % vein 5 startpoint
vein5.p2 = [sf1 * asydentus.vein(5,4), sf2 * asydentus.vein(5,5)]; % vein 5 endpoint
vein5.r = sf3 * [asydentus.vein(5,6)]; % vein 5 radius value
vein6.p1 = [sf1 * asydentus.vein(6,1), sf2 * asydentus.vein(6,2)]; % vein 6 startpoint
vein6.p2 = [sf1 * asydentus.vein(6,4), sf2 * asydentus.vein(6,5)]; % vein 6 endpoint
vein6.r = sf3 * [asydentus.vein(6,6)]; % vein 6 radius value
vein7.p1 = [sf1 * asydentus.vein(7,1), sf2 * asydentus.vein(7,2)]; % vein 7 startpoint
vein7.p2 = [sf1 * asydentus.vein(7,4), sf2 * asydentus.vein(7,5)]; % vein 7 endpoint
vein7.r = sf3 * [asydentus.vein(7,6)]; % vein 7 radius value
crossvein1.x1 = sf1 * [asydentus.cross_vein(1,1)]; % crossvein 1 start x-coordinate
crossvein1.x2 = sf1 * [asydentus.cross_vein(1,2)]; % crossvein 1 end x-coordinate
crossvein4.x1 = sf1 * [asydentus.cross_vein(4,1)]; % crossvein 4 start x-coordinate
crossvein4.x2 = sf1 * [asydentus.cross_vein(4,2)]; % crossvein 4 end x-coordinate
crossvein5.x1 = sf1 * [asydentus.cross_vein(5,1)]; % crossvein 5 start x-coordinate
crossvein5.x2 = sf1 * [asydentus.cross_vein(5,2)]; % crossvein 5 end x-coordinate
crossvein6.x1 = sf1 * [asydentus.cross_vein(6,1)]; % crossvein 6 start x-coordinate
crossvein6.x2 = sf1 * [asydentus.cross_vein(6,1)]; % crossvein 6 end x-coordinate
%% Solve for centre of radius and cross-vein coordinates
syms x1 y1
[x1, y1] = solve((x1-vein1.p1(1))^2+(y1-vein1.p1(2))^2==vein1.r^2, (x1-vein1.p2(1))^2+(y1-vein1.p2(2))^2==vein1.r^2, x1, y1);
% vein 1 centre of radius
arc1_c1 = double([x1(1), y1(1)]);
arc1_c2 = double([x1(2), y1(2)]);
syms x2 y2
[x2, y2] = solve((x2-vein2.p1(1))^2+(y2-vein2.p1(2))^2==vein2.r^2, (x2-vein2.p2(1))^2+(y2-vein2.p2(2))^2==vein2.r^2, x2, y2);
% vein 2 centre of radius
arc2_c1 = double([x2(1), y2(1)]);
arc2_c2 = double([x2(2), y2(2)]);
syms x3 y3
[x3, y3] = solve((x3-vein3.p1(1))^2+(y3-vein3.p1(2))^2==vein3.r^2, (x3-vein3.p2(1))^2+(y3-vein3.p2(2))^2==vein3.r^2, x3, y3);
% vein 3 centre of radius
arc3_c1 = double([x3(1), y3(1)]);
arc3_c2 = double([x3(2), y3(2)]);
syms x4 y4
[x4, y4] = solve((x4-vein4.p1(1))^2+(y4-vein4.p1(2))^2==vein4.r^2, (x4-vein4.p2(1))^2+(y4-vein4.p2(2))^2==vein4.r^2, x4, y4);
% vein 4 centre of radius
arc4_c1 = double([x4(1), y4(1)]);
arc4_c2 = double([x4(2), y4(2)]);
syms x5 y5
[x5, y5] = solve((x5-vein5.p1(1))^2+(y5-vein5.p1(2))^2==vein5.r^2, (x5-vein5.p2(1))^2+(y5-vein5.p2(2))^2==vein5.r^2, x5, y5);
% vein 5 centre of radius
arc5_c1 = double([x5(1), y5(1)]);
arc5_c2 = double([x5(2), y5(2)]);
syms x6 y6
[x6, y6] = solve((x6-vein6.p1(1))^2+(y6-vein6.p1(2))^2==vein6.r^2, (x6-vein6.p2(1))^2+(y6-vein6.p2(2))^2==vein6.r^2, x6, y6);
% vein 6 centre of radius
arc6_c1 = double([x6(1), y6(1)]);
arc6_c2 = double([x6(2), y6(2)]);
syms x7 y7
[x7, y7] = solve((x7-vein7.p1(1))^2+(y7-vein7.p1(2))^2==vein7.r^2, (x7-vein7.p2(1))^2+(y7-vein7.p2(2))^2==vein7.r^2, x7, y7);
% vein 7 centre of radius
arc7_c1 = double([x7(1), y7(1)]);
arc7_c2 = double([x7(2), y7(2)]);
syms yc1_1
[yc1_1] = solve ((crossvein1.x1(1) – arc1_c1(1)).^2 + (yc1_1 – arc1_c1(2)).^2 – vein1.r^2, (-200<=yc1_1)<=0);
crossvein1.y1 = yc1_1;
syms yc1_2
[yc1_2] = solve ((crossvein1.x2(1) – arc2_c2(1)).^2 + (yc1_2 – arc2_c2(2)).^2 – vein2.r^2, (-200<=yc1_2)<=0);
crossvein1.y2 = yc1_2;
syms yc4_1
[yc4_1] = solve ((crossvein4.x1(1) – arc4_c2(1)).^2 + (yc4_1 – arc4_c2(2)).^2 – vein4.r^2, (-200<=yc4_1)<=0);
crossvein4.y1 = yc4_1;
syms yc4_2
[yc4_2] = solve ((crossvein4.x2(1) – arc5_c1(1)).^2 + (yc4_2 – arc5_c1(2)).^2 – vein5.r^2, (-200<=yc4_2)<=0);
crossvein4.y2 = yc4_2;
syms yc5_1
[yc5_1] = solve ((crossvein5.x1(1) – arc5_c1(1)).^2 + (yc5_1 – arc5_c1(2)).^2 – vein5.r^2, (-200<=yc5_1)<=0);
crossvein5.y1 = yc5_1;
syms yc5_2
[yc5_2] = solve ((crossvein5.x2(1) – arc6_c1(1)).^2 + (yc5_2 – arc6_c1(2)).^2 – vein6.r^2, (-200<=yc5_2)<=0);
crossvein5.y2 = yc5_2;
syms yc6_1
[yc6_1] = solve ((crossvein6.x1(1) – arc6_c1(1)).^2 + (yc6_1 – arc6_c1(2)).^2 – vein6.r^2, (-200<=yc6_1)<=0);
crossvein6.y1 = yc6_1;
syms yc6_2
[yc6_2] = solve ((crossvein6.x2(1) – arc7_c1(1)).^2 + (yc6_2 – arc7_c1(2)).^2 – vein7.r^2, (-200<=yc6_2)<=0);
crossvein6.y2 = yc6_2;
%% Define Arc Function for vein radius
figure;
hold on;
% Define the implicit functions for the circles
f1_1 = @(X1, Y1) (X1 – arc1_c1(1)).^2 + (Y1 – arc1_c1(2)).^2 – vein1.r^2;
f1_2 = @(X1, Y1) (X1 – arc1_c2(1)).^2 + (Y1 – arc1_c2(2)).^2 – vein1.r^2;
f2_1 = @(X2, Y2) (X2 – arc2_c1(1)).^2 + (Y2 – arc2_c1(2)).^2 – vein2.r^2;
f2_2 = @(X2, Y2) (X2 – arc2_c2(1)).^2 + (Y2 – arc2_c2(2)).^2 – vein2.r^2;
f3_1 = @(X3, Y3) (X3 – arc3_c1(1)).^2 + (Y3 – arc3_c1(2)).^2 – vein3.r^2;
f3_2 = @(X3, Y3) (X3 – arc3_c2(1)).^2 + (Y3 – arc3_c2(2)).^2 – vein3.r^2;
f4_1 = @(X4, Y4) (X4 – arc4_c1(1)).^2 + (Y4 – arc4_c1(2)).^2 – vein4.r^2;
f4_2 = @(X4, Y4) (X4 – arc4_c2(1)).^2 + (Y4 – arc4_c2(2)).^2 – vein4.r^2;
f5_1 = @(X5, Y5) (X5 – arc5_c1(1)).^2 + (Y5 – arc5_c1(2)).^2 – vein5.r^2;
f5_2 = @(X5, Y5) (X5 – arc5_c2(1)).^2 + (Y5 – arc5_c2(2)).^2 – vein5.r^2;
f6_1 = @(X6, Y6) (X6 – arc6_c1(1)).^2 + (Y6 – arc6_c1(2)).^2 – vein6.r^2;
f6_2 = @(X6, Y6) (X6 – arc6_c2(1)).^2 + (Y6 – arc6_c2(2)).^2 – vein6.r^2;
f7_1 = @(X7, Y7) (X7 – arc7_c1(1)).^2 + (Y7 – arc7_c1(2)).^2 – vein7.r^2;
f7_2 = @(X7, Y7) (X7 – arc7_c2(1)).^2 + (Y7 – arc7_c2(2)).^2 – vein7.r^2;
%% Plot the veins and cross-veins using fimplicit
% Depending on whether the arc of the vein is 0<=180 or 180<=360 will
% decide which implicit function is used
% use image representations as a guide
t = [1; 2; 3]; % Line Thickness
fimplicit(f1_1, [5 370 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f1_2, [5 370 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f2_1, [9 175 -200 0], ‘LineWidth’, t(3) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f2_2, [9 175 -200 0], ‘LineWidth’, t(3) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f3_1, [55 285 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f3_2, [55 285 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
%fimplicit(f4_1, [55 347 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
fimplicit(f4_2, [55 347 -200 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f5_1, [40 298 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f5_2, [40 298 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f6_1, [40 252 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f6_2, [40 252 -200 0], ‘LineWidth’, t(2) , ‘Color’, ‘k’); % Adjust LineWidth as needed
fimplicit(f7_1, [40 100 -160 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed, matrix within fimplicit is made
%fimplicit(f7_2, [40 100 -160 0], ‘LineWidth’, t(1) , ‘Color’, ‘k’); % Adjust LineWidth as needed
plot([crossvein1.x1 crossvein1.x2], [crossvein1.y1 crossvein1.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein4.x1 crossvein4.x2], [crossvein4.y1 crossvein4.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein5.x1 crossvein5.x2], [crossvein5.y1 crossvein5.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
plot([crossvein6.x1 crossvein6.x2], [crossvein6.y1 crossvein6.y2], ‘LineWidth’,t(2), ‘Color’, ‘r’)
% Plot settings
axis([0 400 -200 0]);
xlabel(‘X’);
ylabel(‘Y’);
title(‘Asydentus Venation’);
hold off; image analysis, digital image processing MATLAB Answers — New Questions
How do features from ‘license’ correspond to names from ‘ver’
This is the best information I had available as of May 2019.
Many of the codes used by ver() are missing as I do not have all products available for installation. Historical information is not always present.
The first column is the formal name of the product such as it shows up in ver(). It is not uncommon for Mathworks to rebrand a product.
The second column is the name of the product as it appears in license files. It would be those names that you would use with the license() command, such as |license(‘test’, ‘Audio_System_Toolbox’) . It is rare for Mathworks to change a license code — only when the license model itself changes such as Polyspace as of R2019a. When toolboxes get merged, one of the license codes is retained. The license code is the best way to follow products through historical releases.
The third column is the name of the product used by ver(). For example, ver(‘audio’). It is often the same as the name of the major sub-directory that the product is installed into. The ver code typically stays the same as products are rebranded, even if the installation directory moves. The installation directory mostly stays the same as products get rebranded, but tends to move as products get merge, and sometimes eventually changes after a rebrand. Historically, the code used by ver has typically matched the URL used in the documentation of the product, such as the Global Optimization Toolbox documentation being underneath /help/gads where gads is the ver code (the original product name was Genetic Algorithm and Direct Search Toolbox, GADS)
licver_info = {
‘5G Toolbox’ ‘MATLAB_5G_Toolbox’ ‘<unknown>’ %needs ver code
‘Aerospace Blockset’ ‘Aerospace_Blockset’ ‘aeroblks’
‘Aerospace Toolbox’ ‘Aerospace_Toolbox’ ‘aero’
‘Antenna Toolbox’ ‘Antenna_Toolbox’ ‘antenna’
‘Audio System Toolbox’ ‘Audio_System_Toolbox’ ‘audio’
‘Automated Driving Toolbox’ ‘Automated_Driving_Toolbox’ ‘<unknown>’ %needs ver code
‘AUTOSAR Blockset’ ‘AUTOSAR_Blockset’ ‘<unknown>’ %needs ver code
‘Bioinformatics Toolbox’ ‘Bioinformatics_Toolbox’ ‘bioinfo’
‘Communications System Toolbox’ ‘Communication_Toolbox’ ‘comm’
‘Computer Vision System Toolbox’ ‘Video_and_Image_Blockset’ ‘vision’
‘Control System Toolbox’ ‘Control_Toolbox’ ‘control’
‘Curve Fitting Toolbox’ ‘Curve_Fitting_Toolbox’ ‘curvefit’
‘DSP System Toolbox’ ‘Signal_Blocks’ ‘dsp’
‘Data Acquisition Toolbox’ ‘Data_Acq_Toolbox’ ‘daq’
‘Database Toolbox’ ‘Database_Toolbox’ ‘database’
‘Datafeed Toolbox’ ‘Datafeed_Toolbox’ ‘datafeed’
‘Deep Learning Toolbox’ ‘Neural_Network_Toolbox’ ‘nnet’
‘DO Qualification Kit’ ‘Qual_Kit_DO’ ‘<unknown>’ %needs ver code
‘Econometrics Toolbox’ ‘Econometrics_Toolbox’ ‘econ’
‘Embedded Coder’ ‘RTW_Embedded_Coder’ ’embeddedcoder’
‘Filter Design HDL Coder’ ‘Filter_Design_HDL_Coder’ ‘<unknown>’ %needs ver code
‘Financial Instruments Toolbox’ ‘Fin_Instruments_Toolbox’ ‘fininst’
‘Financial Toolbox’ ‘Financial_Toolbox’ ‘finance’
‘Fixed-Point Designer’ ‘Fixed_Point_Toolbox’ ‘fixedpoint’
‘Fuzzy Logic Toolbox’ ‘Fuzzy_Toolbox’ ‘fuzzy’
‘Global Optimization Toolbox’ ‘GADS_Toolbox’ ‘globaloptim’
‘GPU Coder’ ‘GPU_Coder’ ‘<unknown>’ %needs ver code
‘HDL Coder’ ‘Simulink_HDL_Coder’ ‘<unknown>’ %needs ver code
‘HDL Verifier’ ‘EDA_Simulator_Link’ ‘<unknown>’ %needs ver code
‘Image Acquisition Toolbox’ ‘Image_Acquisition_Toolbox’ ‘imaq’
‘Image Processing Toolbox’ ‘Image_Toolbox’ ‘images’
‘Instrument Control Toolbox’ ‘Instr_Control_Toolbox’ ‘instrument’
‘LTE Toolbox’ ‘LTE_Toolbox’ ‘<unknown>’ %needs ver code
‘LTE HDL Toolbox’ ‘LTE HDL Toolbox’ ‘<unknown>’ %needs ver code
‘MATLAB’ ‘MATLAB’ ‘general’
‘MATLAB Coder’ ‘MATLAB_Coder’ ‘matlabcoder’
‘MATLAB Compiler’ ‘Compiler’ ‘compiler’
‘MATLAB Compiler SDK’ ‘MATLAB_Builder_for_Java’ ‘<unknown>’ %needs ver code
‘MATLAB Parallel Server’ ‘MATLAB_Distrib_Comp_Engine’ ‘<unknown>’ %needs ver code
‘MATLAB Production Server’ ‘MATLAB_Production_Server’ ‘<unknown>’ %needs ver code
‘MATLAB Report Generator’ ‘MATLAB_Report_Gen’ ‘rptgen’
‘Mapping Toolbox’ ‘MAP_Toolbox’ ‘map’
‘Mixed-Signal Blockset’ ‘Mixed_Signal_Blockset’ ‘<unknown>’ %needs ver code
‘Model-Based Calibration Toolbox’ ‘MBC_Toolbox’ ‘<unknown>’ %needs ver code
‘Model Predictive Control Toolbox’ ‘MPC_Toolbox’ ‘mpc’
‘Neural Network Toolbox’ ‘Neural_Network_Toolbox’ ‘nnet’ %renamed to Deep Learning
‘OPC Toolbox’ ‘OPC_Toolbox’ ‘<unknown>’ %needs ver code
‘Optimization Toolbox’ ‘Optimization_Toolbox’ ‘optim’
‘Parallel Computing Toolbox’ ‘Distrib_Computing_Toolbox’ ‘distcomp’ %e.g., local parfor, gpu — not the server. newer releases ver(‘parallel’)
‘Partial Differential Equation Toolbox’ ‘PDE_Toolbox’ ‘pde’
‘Phased Array System Toolbox’ ‘Phased_Array_System_Toolbox’ ‘phased’
‘Polyspace Bug Finder’ ‘Polyspace_BF’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Bug Finder’ ‘PolySpace_Bug_Finder’ ‘psbugfinder’ %older flex name
‘Polyspace Bug Finder’ ‘PolySpace_Bug_Finder_Engine’ ‘psbugfinder’ %older flex name
‘Polyspace Bug Finder Server’ ‘Polyspace_BF_Server’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Code Prover’ ‘PolySpace_Server_C_CPP’ ‘pscodeprover’ %older flex name
‘Polyspace Code Prover’ ‘Polyspace_CP’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Code Prover Server’ ‘Polyspace_CP_Server’ ‘<unknown>’ %newer flex name %needs ver code
‘Powertrain Blockset’ ‘Powertrain_Blockset’ ‘<unknown>’ %needs ver code
‘Predictive Maintenance Toolbox’ ‘Pred_Maintenance_Toolbox’ ‘<unknown>’ %needs ver code
‘Reinforcement Learning Toolbox’ ‘Reinforcement_Learn_Toolbox’ ‘<unknown>’ %needs ver code
‘RF Blockset’ ‘RF_Blockset’ ‘rfblks’
‘RF Toolbox’ ‘RF_Toolbox’ ‘rf’
‘Risk Management Toolbox’ ‘Risk_Management_Toolbox’ ‘<unknown>’ %needs ver code
‘Robotics System Toolbox’ ‘Robotics_System_Toolbox’ ‘robotics’
‘Robust Control Toolbox’ ‘Robust_Toolbox’ ‘robust’
‘Sensor Fusion and Tracking Toolbox’ ‘Sensor_Fusion_and_Tracking’ ‘<unknown>’ %needs ver code
‘SerDes Toolbox’ ‘SerDes_Toolbox’ ‘<unknown>’ %needs ver code
‘Signal Processing Toolbox’ ‘Signal_Toolbox’ ‘signal’
‘SimBiology’ ‘Simbiology’ ‘simbio’
‘SimEvents’ ‘SimEvents’ ‘simevents’
‘Simscape’ ‘Simscape’ ‘simscape’
‘Simscape Driveline’ ‘SimDriveline’ ‘sdl’ %possibly ‘simdrive’
‘Simscape Electronics’ ‘SimElectronics’ ‘elec’
‘Simscape Fluids’ ‘SimHydraulics’ ‘fluids’
‘Simscape Multibody’ ‘SimMechanics’ ‘mech’
‘Simscape Power Systems’ ‘Power_System_Blocks’ ‘sps’
‘Simulink’ ‘SIMULINK’ ‘simulink’
‘Simulink 3D Animation’ ‘Virtual_Reality_Toolbox’ ‘sl3d’
‘Simulink Check’ ‘SL_Verification_Validation’ ‘<unknown>’ %needs ver code
‘Simulink Code Inspector’ ‘Simulink_Code_Inspector’ ‘<unknown>’ %needs ver code
‘Simulink Coder’ ‘Real-Time_Workshop’ ‘simulinkcoder’
‘Simulink Control Design’ ‘Simulink_Control_Design’ ‘slcontrol’
‘Simulink Coverage’ ‘Simulink_Coverage’ ‘<unknown>’ %needs ver code
‘Simulink Design Optimization’ ‘Simulink_Design_Optim’ ‘sldo’
‘Simulink Desktop Real-Time’ ‘Real-Time_Win_Target’ ‘sldrt’
‘Simulink Design Verifier’ ‘Simulink_Design_Verifier’ ‘<unknown>’ %needs ver code
‘Simulink PLC Coder’ ‘Simulink_PLC_Coder’
‘Simulink Real-Time’ ‘XPC_Target’ ‘<unknown>’ %needs ver code
‘Simulink Report Generator’ ‘SIMULINK_Report_Gen’ ‘rptgenext’
‘Simulink Requirements’ ‘Simulink_Requirements’ ‘<unknown>’ %needs ver code
‘Simulink Test’ ‘Simulink_Test’ ‘<unknown>’ %needs ver code
‘SoC Blockset’ ‘SoC_Blockset’ ‘<unknown>’ %needs ver code
‘Spreadsheet Link’ ‘Excel_Link’ ‘excellink’
‘Stateflow’ ‘Stateflow’ ‘stateflow’
‘Statistics and Machine Learning Toolbox’ ‘Statistics_Toolbox’ ‘stats’
‘Symbolic Math Toolbox’ ‘Symbolic_Toolbox’ ‘symbolic’
‘System Identification Toolbox’ ‘Identification_Toolbox’ ‘ident’
‘System Composer’ ‘System_Composer’ ‘<unknown>’ %needs ver code
‘Text Analytics Toolbox’ ‘Text_Analytics_Toolbox’ ‘<unknown>’ %needs ver code
‘Trading Toolbox’ ‘Trading_Toolbox’ ‘trading’
‘Vehicle Dynamics Blockset’ ‘Vehicle_Dynamics_Blockset’ ‘<unknown>’ %needs ver code
‘Vehicle Network Toolbox’ ‘Vehicle_Network_Toolbox’ ‘<unknown>’ %needs ver code
‘Vision HDL Toolbox’ ‘Vision_HDL_Toolbox’ ‘<unknown>’ %needs ver code
‘Wavelet Toolbox’ ‘Wavelet_Toolbox’ ‘wavelet’
‘WLAN Toolbox’ ‘WLAN_System_Toolbox’ ‘<unknown>’ %needs ver code
};
A useful post for this purpose was https://www.mathworks.com/matlabcentral/answers/195425-how-do-i-get-a-license-feature-name-for-a-toolbox-in-verThis is the best information I had available as of May 2019.
Many of the codes used by ver() are missing as I do not have all products available for installation. Historical information is not always present.
The first column is the formal name of the product such as it shows up in ver(). It is not uncommon for Mathworks to rebrand a product.
The second column is the name of the product as it appears in license files. It would be those names that you would use with the license() command, such as |license(‘test’, ‘Audio_System_Toolbox’) . It is rare for Mathworks to change a license code — only when the license model itself changes such as Polyspace as of R2019a. When toolboxes get merged, one of the license codes is retained. The license code is the best way to follow products through historical releases.
The third column is the name of the product used by ver(). For example, ver(‘audio’). It is often the same as the name of the major sub-directory that the product is installed into. The ver code typically stays the same as products are rebranded, even if the installation directory moves. The installation directory mostly stays the same as products get rebranded, but tends to move as products get merge, and sometimes eventually changes after a rebrand. Historically, the code used by ver has typically matched the URL used in the documentation of the product, such as the Global Optimization Toolbox documentation being underneath /help/gads where gads is the ver code (the original product name was Genetic Algorithm and Direct Search Toolbox, GADS)
licver_info = {
‘5G Toolbox’ ‘MATLAB_5G_Toolbox’ ‘<unknown>’ %needs ver code
‘Aerospace Blockset’ ‘Aerospace_Blockset’ ‘aeroblks’
‘Aerospace Toolbox’ ‘Aerospace_Toolbox’ ‘aero’
‘Antenna Toolbox’ ‘Antenna_Toolbox’ ‘antenna’
‘Audio System Toolbox’ ‘Audio_System_Toolbox’ ‘audio’
‘Automated Driving Toolbox’ ‘Automated_Driving_Toolbox’ ‘<unknown>’ %needs ver code
‘AUTOSAR Blockset’ ‘AUTOSAR_Blockset’ ‘<unknown>’ %needs ver code
‘Bioinformatics Toolbox’ ‘Bioinformatics_Toolbox’ ‘bioinfo’
‘Communications System Toolbox’ ‘Communication_Toolbox’ ‘comm’
‘Computer Vision System Toolbox’ ‘Video_and_Image_Blockset’ ‘vision’
‘Control System Toolbox’ ‘Control_Toolbox’ ‘control’
‘Curve Fitting Toolbox’ ‘Curve_Fitting_Toolbox’ ‘curvefit’
‘DSP System Toolbox’ ‘Signal_Blocks’ ‘dsp’
‘Data Acquisition Toolbox’ ‘Data_Acq_Toolbox’ ‘daq’
‘Database Toolbox’ ‘Database_Toolbox’ ‘database’
‘Datafeed Toolbox’ ‘Datafeed_Toolbox’ ‘datafeed’
‘Deep Learning Toolbox’ ‘Neural_Network_Toolbox’ ‘nnet’
‘DO Qualification Kit’ ‘Qual_Kit_DO’ ‘<unknown>’ %needs ver code
‘Econometrics Toolbox’ ‘Econometrics_Toolbox’ ‘econ’
‘Embedded Coder’ ‘RTW_Embedded_Coder’ ’embeddedcoder’
‘Filter Design HDL Coder’ ‘Filter_Design_HDL_Coder’ ‘<unknown>’ %needs ver code
‘Financial Instruments Toolbox’ ‘Fin_Instruments_Toolbox’ ‘fininst’
‘Financial Toolbox’ ‘Financial_Toolbox’ ‘finance’
‘Fixed-Point Designer’ ‘Fixed_Point_Toolbox’ ‘fixedpoint’
‘Fuzzy Logic Toolbox’ ‘Fuzzy_Toolbox’ ‘fuzzy’
‘Global Optimization Toolbox’ ‘GADS_Toolbox’ ‘globaloptim’
‘GPU Coder’ ‘GPU_Coder’ ‘<unknown>’ %needs ver code
‘HDL Coder’ ‘Simulink_HDL_Coder’ ‘<unknown>’ %needs ver code
‘HDL Verifier’ ‘EDA_Simulator_Link’ ‘<unknown>’ %needs ver code
‘Image Acquisition Toolbox’ ‘Image_Acquisition_Toolbox’ ‘imaq’
‘Image Processing Toolbox’ ‘Image_Toolbox’ ‘images’
‘Instrument Control Toolbox’ ‘Instr_Control_Toolbox’ ‘instrument’
‘LTE Toolbox’ ‘LTE_Toolbox’ ‘<unknown>’ %needs ver code
‘LTE HDL Toolbox’ ‘LTE HDL Toolbox’ ‘<unknown>’ %needs ver code
‘MATLAB’ ‘MATLAB’ ‘general’
‘MATLAB Coder’ ‘MATLAB_Coder’ ‘matlabcoder’
‘MATLAB Compiler’ ‘Compiler’ ‘compiler’
‘MATLAB Compiler SDK’ ‘MATLAB_Builder_for_Java’ ‘<unknown>’ %needs ver code
‘MATLAB Parallel Server’ ‘MATLAB_Distrib_Comp_Engine’ ‘<unknown>’ %needs ver code
‘MATLAB Production Server’ ‘MATLAB_Production_Server’ ‘<unknown>’ %needs ver code
‘MATLAB Report Generator’ ‘MATLAB_Report_Gen’ ‘rptgen’
‘Mapping Toolbox’ ‘MAP_Toolbox’ ‘map’
‘Mixed-Signal Blockset’ ‘Mixed_Signal_Blockset’ ‘<unknown>’ %needs ver code
‘Model-Based Calibration Toolbox’ ‘MBC_Toolbox’ ‘<unknown>’ %needs ver code
‘Model Predictive Control Toolbox’ ‘MPC_Toolbox’ ‘mpc’
‘Neural Network Toolbox’ ‘Neural_Network_Toolbox’ ‘nnet’ %renamed to Deep Learning
‘OPC Toolbox’ ‘OPC_Toolbox’ ‘<unknown>’ %needs ver code
‘Optimization Toolbox’ ‘Optimization_Toolbox’ ‘optim’
‘Parallel Computing Toolbox’ ‘Distrib_Computing_Toolbox’ ‘distcomp’ %e.g., local parfor, gpu — not the server. newer releases ver(‘parallel’)
‘Partial Differential Equation Toolbox’ ‘PDE_Toolbox’ ‘pde’
‘Phased Array System Toolbox’ ‘Phased_Array_System_Toolbox’ ‘phased’
‘Polyspace Bug Finder’ ‘Polyspace_BF’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Bug Finder’ ‘PolySpace_Bug_Finder’ ‘psbugfinder’ %older flex name
‘Polyspace Bug Finder’ ‘PolySpace_Bug_Finder_Engine’ ‘psbugfinder’ %older flex name
‘Polyspace Bug Finder Server’ ‘Polyspace_BF_Server’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Code Prover’ ‘PolySpace_Server_C_CPP’ ‘pscodeprover’ %older flex name
‘Polyspace Code Prover’ ‘Polyspace_CP’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Code Prover Server’ ‘Polyspace_CP_Server’ ‘<unknown>’ %newer flex name %needs ver code
‘Powertrain Blockset’ ‘Powertrain_Blockset’ ‘<unknown>’ %needs ver code
‘Predictive Maintenance Toolbox’ ‘Pred_Maintenance_Toolbox’ ‘<unknown>’ %needs ver code
‘Reinforcement Learning Toolbox’ ‘Reinforcement_Learn_Toolbox’ ‘<unknown>’ %needs ver code
‘RF Blockset’ ‘RF_Blockset’ ‘rfblks’
‘RF Toolbox’ ‘RF_Toolbox’ ‘rf’
‘Risk Management Toolbox’ ‘Risk_Management_Toolbox’ ‘<unknown>’ %needs ver code
‘Robotics System Toolbox’ ‘Robotics_System_Toolbox’ ‘robotics’
‘Robust Control Toolbox’ ‘Robust_Toolbox’ ‘robust’
‘Sensor Fusion and Tracking Toolbox’ ‘Sensor_Fusion_and_Tracking’ ‘<unknown>’ %needs ver code
‘SerDes Toolbox’ ‘SerDes_Toolbox’ ‘<unknown>’ %needs ver code
‘Signal Processing Toolbox’ ‘Signal_Toolbox’ ‘signal’
‘SimBiology’ ‘Simbiology’ ‘simbio’
‘SimEvents’ ‘SimEvents’ ‘simevents’
‘Simscape’ ‘Simscape’ ‘simscape’
‘Simscape Driveline’ ‘SimDriveline’ ‘sdl’ %possibly ‘simdrive’
‘Simscape Electronics’ ‘SimElectronics’ ‘elec’
‘Simscape Fluids’ ‘SimHydraulics’ ‘fluids’
‘Simscape Multibody’ ‘SimMechanics’ ‘mech’
‘Simscape Power Systems’ ‘Power_System_Blocks’ ‘sps’
‘Simulink’ ‘SIMULINK’ ‘simulink’
‘Simulink 3D Animation’ ‘Virtual_Reality_Toolbox’ ‘sl3d’
‘Simulink Check’ ‘SL_Verification_Validation’ ‘<unknown>’ %needs ver code
‘Simulink Code Inspector’ ‘Simulink_Code_Inspector’ ‘<unknown>’ %needs ver code
‘Simulink Coder’ ‘Real-Time_Workshop’ ‘simulinkcoder’
‘Simulink Control Design’ ‘Simulink_Control_Design’ ‘slcontrol’
‘Simulink Coverage’ ‘Simulink_Coverage’ ‘<unknown>’ %needs ver code
‘Simulink Design Optimization’ ‘Simulink_Design_Optim’ ‘sldo’
‘Simulink Desktop Real-Time’ ‘Real-Time_Win_Target’ ‘sldrt’
‘Simulink Design Verifier’ ‘Simulink_Design_Verifier’ ‘<unknown>’ %needs ver code
‘Simulink PLC Coder’ ‘Simulink_PLC_Coder’
‘Simulink Real-Time’ ‘XPC_Target’ ‘<unknown>’ %needs ver code
‘Simulink Report Generator’ ‘SIMULINK_Report_Gen’ ‘rptgenext’
‘Simulink Requirements’ ‘Simulink_Requirements’ ‘<unknown>’ %needs ver code
‘Simulink Test’ ‘Simulink_Test’ ‘<unknown>’ %needs ver code
‘SoC Blockset’ ‘SoC_Blockset’ ‘<unknown>’ %needs ver code
‘Spreadsheet Link’ ‘Excel_Link’ ‘excellink’
‘Stateflow’ ‘Stateflow’ ‘stateflow’
‘Statistics and Machine Learning Toolbox’ ‘Statistics_Toolbox’ ‘stats’
‘Symbolic Math Toolbox’ ‘Symbolic_Toolbox’ ‘symbolic’
‘System Identification Toolbox’ ‘Identification_Toolbox’ ‘ident’
‘System Composer’ ‘System_Composer’ ‘<unknown>’ %needs ver code
‘Text Analytics Toolbox’ ‘Text_Analytics_Toolbox’ ‘<unknown>’ %needs ver code
‘Trading Toolbox’ ‘Trading_Toolbox’ ‘trading’
‘Vehicle Dynamics Blockset’ ‘Vehicle_Dynamics_Blockset’ ‘<unknown>’ %needs ver code
‘Vehicle Network Toolbox’ ‘Vehicle_Network_Toolbox’ ‘<unknown>’ %needs ver code
‘Vision HDL Toolbox’ ‘Vision_HDL_Toolbox’ ‘<unknown>’ %needs ver code
‘Wavelet Toolbox’ ‘Wavelet_Toolbox’ ‘wavelet’
‘WLAN Toolbox’ ‘WLAN_System_Toolbox’ ‘<unknown>’ %needs ver code
};
A useful post for this purpose was https://www.mathworks.com/matlabcentral/answers/195425-how-do-i-get-a-license-feature-name-for-a-toolbox-in-ver This is the best information I had available as of May 2019.
Many of the codes used by ver() are missing as I do not have all products available for installation. Historical information is not always present.
The first column is the formal name of the product such as it shows up in ver(). It is not uncommon for Mathworks to rebrand a product.
The second column is the name of the product as it appears in license files. It would be those names that you would use with the license() command, such as |license(‘test’, ‘Audio_System_Toolbox’) . It is rare for Mathworks to change a license code — only when the license model itself changes such as Polyspace as of R2019a. When toolboxes get merged, one of the license codes is retained. The license code is the best way to follow products through historical releases.
The third column is the name of the product used by ver(). For example, ver(‘audio’). It is often the same as the name of the major sub-directory that the product is installed into. The ver code typically stays the same as products are rebranded, even if the installation directory moves. The installation directory mostly stays the same as products get rebranded, but tends to move as products get merge, and sometimes eventually changes after a rebrand. Historically, the code used by ver has typically matched the URL used in the documentation of the product, such as the Global Optimization Toolbox documentation being underneath /help/gads where gads is the ver code (the original product name was Genetic Algorithm and Direct Search Toolbox, GADS)
licver_info = {
‘5G Toolbox’ ‘MATLAB_5G_Toolbox’ ‘<unknown>’ %needs ver code
‘Aerospace Blockset’ ‘Aerospace_Blockset’ ‘aeroblks’
‘Aerospace Toolbox’ ‘Aerospace_Toolbox’ ‘aero’
‘Antenna Toolbox’ ‘Antenna_Toolbox’ ‘antenna’
‘Audio System Toolbox’ ‘Audio_System_Toolbox’ ‘audio’
‘Automated Driving Toolbox’ ‘Automated_Driving_Toolbox’ ‘<unknown>’ %needs ver code
‘AUTOSAR Blockset’ ‘AUTOSAR_Blockset’ ‘<unknown>’ %needs ver code
‘Bioinformatics Toolbox’ ‘Bioinformatics_Toolbox’ ‘bioinfo’
‘Communications System Toolbox’ ‘Communication_Toolbox’ ‘comm’
‘Computer Vision System Toolbox’ ‘Video_and_Image_Blockset’ ‘vision’
‘Control System Toolbox’ ‘Control_Toolbox’ ‘control’
‘Curve Fitting Toolbox’ ‘Curve_Fitting_Toolbox’ ‘curvefit’
‘DSP System Toolbox’ ‘Signal_Blocks’ ‘dsp’
‘Data Acquisition Toolbox’ ‘Data_Acq_Toolbox’ ‘daq’
‘Database Toolbox’ ‘Database_Toolbox’ ‘database’
‘Datafeed Toolbox’ ‘Datafeed_Toolbox’ ‘datafeed’
‘Deep Learning Toolbox’ ‘Neural_Network_Toolbox’ ‘nnet’
‘DO Qualification Kit’ ‘Qual_Kit_DO’ ‘<unknown>’ %needs ver code
‘Econometrics Toolbox’ ‘Econometrics_Toolbox’ ‘econ’
‘Embedded Coder’ ‘RTW_Embedded_Coder’ ’embeddedcoder’
‘Filter Design HDL Coder’ ‘Filter_Design_HDL_Coder’ ‘<unknown>’ %needs ver code
‘Financial Instruments Toolbox’ ‘Fin_Instruments_Toolbox’ ‘fininst’
‘Financial Toolbox’ ‘Financial_Toolbox’ ‘finance’
‘Fixed-Point Designer’ ‘Fixed_Point_Toolbox’ ‘fixedpoint’
‘Fuzzy Logic Toolbox’ ‘Fuzzy_Toolbox’ ‘fuzzy’
‘Global Optimization Toolbox’ ‘GADS_Toolbox’ ‘globaloptim’
‘GPU Coder’ ‘GPU_Coder’ ‘<unknown>’ %needs ver code
‘HDL Coder’ ‘Simulink_HDL_Coder’ ‘<unknown>’ %needs ver code
‘HDL Verifier’ ‘EDA_Simulator_Link’ ‘<unknown>’ %needs ver code
‘Image Acquisition Toolbox’ ‘Image_Acquisition_Toolbox’ ‘imaq’
‘Image Processing Toolbox’ ‘Image_Toolbox’ ‘images’
‘Instrument Control Toolbox’ ‘Instr_Control_Toolbox’ ‘instrument’
‘LTE Toolbox’ ‘LTE_Toolbox’ ‘<unknown>’ %needs ver code
‘LTE HDL Toolbox’ ‘LTE HDL Toolbox’ ‘<unknown>’ %needs ver code
‘MATLAB’ ‘MATLAB’ ‘general’
‘MATLAB Coder’ ‘MATLAB_Coder’ ‘matlabcoder’
‘MATLAB Compiler’ ‘Compiler’ ‘compiler’
‘MATLAB Compiler SDK’ ‘MATLAB_Builder_for_Java’ ‘<unknown>’ %needs ver code
‘MATLAB Parallel Server’ ‘MATLAB_Distrib_Comp_Engine’ ‘<unknown>’ %needs ver code
‘MATLAB Production Server’ ‘MATLAB_Production_Server’ ‘<unknown>’ %needs ver code
‘MATLAB Report Generator’ ‘MATLAB_Report_Gen’ ‘rptgen’
‘Mapping Toolbox’ ‘MAP_Toolbox’ ‘map’
‘Mixed-Signal Blockset’ ‘Mixed_Signal_Blockset’ ‘<unknown>’ %needs ver code
‘Model-Based Calibration Toolbox’ ‘MBC_Toolbox’ ‘<unknown>’ %needs ver code
‘Model Predictive Control Toolbox’ ‘MPC_Toolbox’ ‘mpc’
‘Neural Network Toolbox’ ‘Neural_Network_Toolbox’ ‘nnet’ %renamed to Deep Learning
‘OPC Toolbox’ ‘OPC_Toolbox’ ‘<unknown>’ %needs ver code
‘Optimization Toolbox’ ‘Optimization_Toolbox’ ‘optim’
‘Parallel Computing Toolbox’ ‘Distrib_Computing_Toolbox’ ‘distcomp’ %e.g., local parfor, gpu — not the server. newer releases ver(‘parallel’)
‘Partial Differential Equation Toolbox’ ‘PDE_Toolbox’ ‘pde’
‘Phased Array System Toolbox’ ‘Phased_Array_System_Toolbox’ ‘phased’
‘Polyspace Bug Finder’ ‘Polyspace_BF’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Bug Finder’ ‘PolySpace_Bug_Finder’ ‘psbugfinder’ %older flex name
‘Polyspace Bug Finder’ ‘PolySpace_Bug_Finder_Engine’ ‘psbugfinder’ %older flex name
‘Polyspace Bug Finder Server’ ‘Polyspace_BF_Server’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Code Prover’ ‘PolySpace_Server_C_CPP’ ‘pscodeprover’ %older flex name
‘Polyspace Code Prover’ ‘Polyspace_CP’ ‘<unknown>’ %newer flex name %needs ver code
‘Polyspace Code Prover Server’ ‘Polyspace_CP_Server’ ‘<unknown>’ %newer flex name %needs ver code
‘Powertrain Blockset’ ‘Powertrain_Blockset’ ‘<unknown>’ %needs ver code
‘Predictive Maintenance Toolbox’ ‘Pred_Maintenance_Toolbox’ ‘<unknown>’ %needs ver code
‘Reinforcement Learning Toolbox’ ‘Reinforcement_Learn_Toolbox’ ‘<unknown>’ %needs ver code
‘RF Blockset’ ‘RF_Blockset’ ‘rfblks’
‘RF Toolbox’ ‘RF_Toolbox’ ‘rf’
‘Risk Management Toolbox’ ‘Risk_Management_Toolbox’ ‘<unknown>’ %needs ver code
‘Robotics System Toolbox’ ‘Robotics_System_Toolbox’ ‘robotics’
‘Robust Control Toolbox’ ‘Robust_Toolbox’ ‘robust’
‘Sensor Fusion and Tracking Toolbox’ ‘Sensor_Fusion_and_Tracking’ ‘<unknown>’ %needs ver code
‘SerDes Toolbox’ ‘SerDes_Toolbox’ ‘<unknown>’ %needs ver code
‘Signal Processing Toolbox’ ‘Signal_Toolbox’ ‘signal’
‘SimBiology’ ‘Simbiology’ ‘simbio’
‘SimEvents’ ‘SimEvents’ ‘simevents’
‘Simscape’ ‘Simscape’ ‘simscape’
‘Simscape Driveline’ ‘SimDriveline’ ‘sdl’ %possibly ‘simdrive’
‘Simscape Electronics’ ‘SimElectronics’ ‘elec’
‘Simscape Fluids’ ‘SimHydraulics’ ‘fluids’
‘Simscape Multibody’ ‘SimMechanics’ ‘mech’
‘Simscape Power Systems’ ‘Power_System_Blocks’ ‘sps’
‘Simulink’ ‘SIMULINK’ ‘simulink’
‘Simulink 3D Animation’ ‘Virtual_Reality_Toolbox’ ‘sl3d’
‘Simulink Check’ ‘SL_Verification_Validation’ ‘<unknown>’ %needs ver code
‘Simulink Code Inspector’ ‘Simulink_Code_Inspector’ ‘<unknown>’ %needs ver code
‘Simulink Coder’ ‘Real-Time_Workshop’ ‘simulinkcoder’
‘Simulink Control Design’ ‘Simulink_Control_Design’ ‘slcontrol’
‘Simulink Coverage’ ‘Simulink_Coverage’ ‘<unknown>’ %needs ver code
‘Simulink Design Optimization’ ‘Simulink_Design_Optim’ ‘sldo’
‘Simulink Desktop Real-Time’ ‘Real-Time_Win_Target’ ‘sldrt’
‘Simulink Design Verifier’ ‘Simulink_Design_Verifier’ ‘<unknown>’ %needs ver code
‘Simulink PLC Coder’ ‘Simulink_PLC_Coder’
‘Simulink Real-Time’ ‘XPC_Target’ ‘<unknown>’ %needs ver code
‘Simulink Report Generator’ ‘SIMULINK_Report_Gen’ ‘rptgenext’
‘Simulink Requirements’ ‘Simulink_Requirements’ ‘<unknown>’ %needs ver code
‘Simulink Test’ ‘Simulink_Test’ ‘<unknown>’ %needs ver code
‘SoC Blockset’ ‘SoC_Blockset’ ‘<unknown>’ %needs ver code
‘Spreadsheet Link’ ‘Excel_Link’ ‘excellink’
‘Stateflow’ ‘Stateflow’ ‘stateflow’
‘Statistics and Machine Learning Toolbox’ ‘Statistics_Toolbox’ ‘stats’
‘Symbolic Math Toolbox’ ‘Symbolic_Toolbox’ ‘symbolic’
‘System Identification Toolbox’ ‘Identification_Toolbox’ ‘ident’
‘System Composer’ ‘System_Composer’ ‘<unknown>’ %needs ver code
‘Text Analytics Toolbox’ ‘Text_Analytics_Toolbox’ ‘<unknown>’ %needs ver code
‘Trading Toolbox’ ‘Trading_Toolbox’ ‘trading’
‘Vehicle Dynamics Blockset’ ‘Vehicle_Dynamics_Blockset’ ‘<unknown>’ %needs ver code
‘Vehicle Network Toolbox’ ‘Vehicle_Network_Toolbox’ ‘<unknown>’ %needs ver code
‘Vision HDL Toolbox’ ‘Vision_HDL_Toolbox’ ‘<unknown>’ %needs ver code
‘Wavelet Toolbox’ ‘Wavelet_Toolbox’ ‘wavelet’
‘WLAN Toolbox’ ‘WLAN_System_Toolbox’ ‘<unknown>’ %needs ver code
};
A useful post for this purpose was https://www.mathworks.com/matlabcentral/answers/195425-how-do-i-get-a-license-feature-name-for-a-toolbox-in-ver ver, license, product names MATLAB Answers — New Questions
Inputting conditional coding into alternating rows in Lists
Hello,
I am attempting to use both alternating rows and conditional formatting in Microsoft Lists.
The short of it is this;
If [$field_4] is == [$field_6] I want it to code the whole line gray and text red.
Otherwise, I just want it to use alternating rows to make the separated items easily identifiable.
I am not super familiar with coding; so I basically just tried to use a modified version of the code from the conditional JSON, and plug it into the code for alternating rows.
I am not sure what I would need to enter in order to use alternating rows AND the conditional together.
Basically wanting an IF, Then, Else… But I know that those aren’t immediately usable in JSON without writing the logic for it.
Help please? Thanks in advance.
{
“$schema”: “https://developer.microsoft.com/json-schemas/sp/v2/row-formatting.schema.json”,
“additionalRowClass”: {
“operator”: “:”,
“operands”: [
{
“operator”: “==”,
“operands”: [
“[$field_4]”,
“[$field_6]”
]
},
“sp-css-backgroundColor-BgLightGray sp-field-fontSizeMedium sp-field-bold sp-css-color-DarkRedText sp-field-borderTopBottomSemibold sp-field-borderTopBottomSolid sp-css-borderTopColor-DarkRedText sp-css-borderBottomColor-DarkRedText”,
“”,
{
“operator”: “==”,
“operands”: [
{
“operator”: “%”,
“operands”: [
“@rowIndex”,
2
]
},
0
]
},
“sp-css-backgroundColor-BgCornflowerBlue40”,
{
“operator”: “:”,
“operands”: [
{
“operator”: “==”,
“operands”: [
{
“operator”: “%”,
“operands”: [
“@rowIndex”,
2
]
},
1
]
},
“sp-css-backgroundColor-noFill”,
“”
]
}
]
}
}
Hello,I am attempting to use both alternating rows and conditional formatting in Microsoft Lists.The short of it is this;If [$field_4] is == [$field_6] I want it to code the whole line gray and text red.Otherwise, I just want it to use alternating rows to make the separated items easily identifiable.I am not super familiar with coding; so I basically just tried to use a modified version of the code from the conditional JSON, and plug it into the code for alternating rows.I am not sure what I would need to enter in order to use alternating rows AND the conditional together.Basically wanting an IF, Then, Else… But I know that those aren’t immediately usable in JSON without writing the logic for it.Help please? Thanks in advance. {
“$schema”: “https://developer.microsoft.com/json-schemas/sp/v2/row-formatting.schema.json”,
“additionalRowClass”: {
“operator”: “:”,
“operands”: [
{
“operator”: “==”,
“operands”: [
“[$field_4]”,
“[$field_6]”
]
},
“sp-css-backgroundColor-BgLightGray sp-field-fontSizeMedium sp-field-bold sp-css-color-DarkRedText sp-field-borderTopBottomSemibold sp-field-borderTopBottomSolid sp-css-borderTopColor-DarkRedText sp-css-borderBottomColor-DarkRedText”,
“”,
{
“operator”: “==”,
“operands”: [
{
“operator”: “%”,
“operands”: [
“@rowIndex”,
2
]
},
0
]
},
“sp-css-backgroundColor-BgCornflowerBlue40”,
{
“operator”: “:”,
“operands”: [
{
“operator”: “==”,
“operands”: [
{
“operator”: “%”,
“operands”: [
“@rowIndex”,
2
]
},
1
]
},
“sp-css-backgroundColor-noFill”,
“”
]
}
]
}
} Read More
Top Stories: June 18, 2024
Find out more!
English Top Stories: June 18, 2024 | Microsoft
Français À la une : 18 juin 2024 | Microsoft
Español Novedades más relevantes: 18 de junio de 2024 | Microsoft
Português Notícias principais: 18 de junho de 2024 | Microsoft
Find out more!
English Top Stories: June 18, 2024 | Microsoft
Français À la une : 18 juin 2024 | Microsoft
Español Novedades más relevantes: 18 de junio de 2024 | Microsoft
Português Notícias principais: 18 de junho de 2024 | Microsoft Read More
Transform photos with Restyle Image in Microsoft Designer
Hello, Microsoft 365 Insiders,
Unleash your creativity with the new Restyle Image feature in Microsoft Designer! Using this new feature, transform your photos into stunning, stylized images with just a few clicks.
Explore this new feature and share your thoughts with us in our latest blog:
Transform photos with Restyle Image in Microsoft Designer
Thanks!
Perry Sjogren
Microsoft 365 Insider Community Manager
Become a Microsoft 365 Insider and gain exclusive access to new features and help shape the future of Microsoft 365. Join Now: Windows | Mac | iOS | Android
Hello, Microsoft 365 Insiders,
Unleash your creativity with the new Restyle Image feature in Microsoft Designer! Using this new feature, transform your photos into stunning, stylized images with just a few clicks.
Explore this new feature and share your thoughts with us in our latest blog:
Transform photos with Restyle Image in Microsoft Designer
Thanks!
Perry Sjogren
Microsoft 365 Insider Community Manager
Become a Microsoft 365 Insider and gain exclusive access to new features and help shape the future of Microsoft 365. Join Now: Windows | Mac | iOS | Android Read More
Webinar June 19, 2024 | Introduction to Copilot Partner Led Immersion Experience
Join us for a 45-minute session on June 19, 2024 on how to use the recently launched Partner-led Copilot Immersion Experience, providing partners the ability to demo and help customers with hands-on experiences.
In this session, we will walk you through each of the assets to drive adoption of Copilot for Microsoft 365 by role/persona and provide you guidance on the best way to utilize and demo with your customers–showcasing how Copilot can help businesses solve common problems and achieve more.
What is included?
Simulated click-thru demos for Sales, Marketing, HR, and Exec personas for each of the M365 apps. Finance, Legal, and Consulting personas are coming soon.
Facilitator Guide to help partners deliver a great experience
Participant Guide for end-users to follow along
How does it work?
Our guidance is to invite an entire department to a training session where you can spend 15 minutes showing what’s possible with Copilot using click-thru demos, 15 minutes for customers to try hands-on themselves with dummy content, and lastly 15 minutes for customers to progress their own projects by bringing their own files.
Register today to get started!
Microsoft Tech Community – Latest Blogs –Read More
What’s new in Azure AI Translator: document translation?
Seattle—June 18, 2024—Today, we are happy to announce new releases and enhancements to Azure AI Translator Service. We are introducing a new endpoint which unifies document translation async batch and sync operation and the SDKs are updated. Now, you can use and deploy document translation features in your organization to translate documents through Azure AI Studio and SharePoint without writing any code. Azure AI Translator container is now enhanced to translate both text and documents.
Overview
Document translation offers two operations: asynchronous batch and synchronous. Depending on the scenario, customers may use either operations or a combination of both. Today, we are delighted to announce that both operations have been unified and will share the same endpoint.
Asynchronous batch operation:
Asynchronous batch translation supports the processing of multiple documents and large files. The batch translation processes source documents from an Azure Blob storage and uploads translated documents back into it.
The endpoint for the asynchronous batch operation is getting updated to:
{your-document translation-endpoint}/translator/document/batches?api-version=[Date]
The service will continue to support backward compatibility for the deprecated endpoint. We recommend new customers adapt the latest endpoint as new functions in the future will be added to the same.
Synchronous operation:
Synchronous operation supports the processing of single document translation. It accepts source document as part of the request body, processes the document in memory and return translated document as part of the response body.
{your-document translation-endpoint}/translator/document:translate?api-version=[Date]
This unification is aimed to provide customers with consistency and simplicity while using either of the document translation operations.
Updated SDK
The updated document translation SDK supports both asynchronous batch operation and synchronous operation. Here’s how you can leverage it:
To run a translation operation for a document, you need a Translator endpoint and credentials. You can use the DefaultAzureCredential to try a number of common authentication methods optimized for both running as a service and development. The samples below uses a Translator API key credential by creating an AzureKeyCredential object. You can set endpoint and apiKey based on an environment variable, a configuration setting, or any way that works for your application.
Asynchronous batch method:
Creating a DocumentTranslationClient
string endpoint = “<Document Translator Resource Endpoint>”;
string apiKey = “<Document Translator Resource API Key>”;
SingleDocumentTranslationClient client = new SingleDocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
To Start a translation operation for documents in a blob container, call StartTranslationAsync. The result is a Long Running operation of type DocumentTranslationOperation which polls for the status of the translation operation from the API. To call StartTranslationAsync you need to initialize an object of type DocumentTranslationInput which contains the information needed to translate the documents.
Uri sourceUri = new Uri(“<source SAS URI>”);
Uri targetUri = new Uri(“<target SAS URI>”);
var input = new DocumentTranslationInput(sourceUri, targetUri, “es”);
DocumentTranslationOperation operation = await client.StartTranslationAsync(input);
await operation.WaitForCompletionAsync();
Console.WriteLine($” Status: {operation.Status}”);
Console.WriteLine($” Created on: {operation.CreatedOn}”);
Console.WriteLine($” Last modified: {operation.LastModified}”);
Console.WriteLine($” Total documents: {operation.DocumentsTotal}”);
Console.WriteLine($” Succeeded: {operation.DocumentsSucceeded}”);
Console.WriteLine($” Failed: {operation.DocumentsFailed}”);
Console.WriteLine($” In Progress: {operation.DocumentsInProgress}”);
Console.WriteLine($” Not started: {operation.DocumentsNotStarted}”);
await foreach (DocumentStatusResult document in operation.Value)
{
Console.WriteLine($”Document with Id: {document.Id}”);
Console.WriteLine($” Status:{document.Status}”);
if (document.Status == DocumentTranslationStatus.Succeeded)
{
Console.WriteLine($” Translated Document Uri: {document.TranslatedDocumentUri}”);
Console.WriteLine($” Translated to language code: {document.TranslatedToLanguageCode}.”);
Console.WriteLine($” Document source Uri: {document.SourceDocumentUri}”);
}
else
{
Console.WriteLine($” Error Code: {document.Error.Code}”);
Console.WriteLine($” Message: {document.Error.Message}”);
}
}
Synchronous method:
Creating a SingleDocumentTranslationClient
string endpoint = “<Document Translator Resource Endpoint>”;
string apiKey = “<Document Translator Resource API Key>”;
SingleDocumentTranslationClient client = new SingleDocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
To start a synchronous translation operation for a single document, call DocumentTranslate. To call DocumentTranslate you need to initialize an object of type MultipartFormFileData which contains the information needed to translate the documents. You would need to specify the target language to which the document must be translated to.
try
{
string filePath = Path.Combine(“TestData”, “test-input.txt”);
using Stream fileStream = File.OpenRead(filePath);
var sourceDocument = new MultipartFormFileData(Path.GetFileName(filePath), fileStream, “text/html”);
DocumentTranslateContent content = new DocumentTranslateContent(sourceDocument);
var response = client.DocumentTranslate(“hi”, content);
var requestString = File.ReadAllText(filePath);
var responseString = Encoding.UTF8.GetString(response.Value.ToArray());
Console.WriteLine($”Request string for translation: {requestString}”);
Console.WriteLine($”Response string after translation: {responseString}”);
}
catch (RequestFailedException exception)
{
Console.WriteLine($”Error Code: {exception.ErrorCode}”);
Console.WriteLine($”Message: {exception.Message}”);
}
Ready to use solution in Azure AI Studio
Customers can easily build apps for their document translation needs using the SDK. One such example is the document translation tool in the Azure AI Studio, which was announced to be generally available at //build 2024. Here is a glimpse of how you may translate documents in this user interface:
SharePoint document translation
The document translation integration in SharePoint lets you easily translate a selected file or a set of files into a SharePoint document library. This feature lets you translate files of different types either manually or automatically by creating a rule.
Learn more about the SharePoint integration here.
You can also use the translation feature for translating video transcripts and closed captioning files. More information here.
Document translation in container is generally available
In addition to the above updates, earlier this year, we announced the release of document translation and transliteration features for Azure AI Translator containers as preview. Today, both capabilities are generally available. All Translator container customers will get these new features automatically as part of the update.
Translator containers provide users with the capability to host the Azure AI Translator API on their own infrastructure and include all libraries, tools, and dependencies needed to run the service in any private, public, or personal computing environment. They are isolated, lightweight, portable, and are great for implementing specific security or data governance requirements.
With that update, the following are the operations that are now supported in Azure AI Translator containers:
Text translation: Translate the text phrases between supported source and target language(s) in real-time.
Text transliteration: Converts text in a language from one script to another script in real-time.
Document translation: Translate a document between supported source and target language while preserving the original document’s content structure and format.
References
User documentation
Document translation overview
Document translation API guide
Document translation SDK
Translate documents in Azure AI studio
SharePoint integration
Stream integration
Translator container
Microsoft Tech Community – Latest Blogs –Read More
Prompt engineering 101: Reimagine your workflow with Copilot for Microsoft 365
In the world of AI-powered collaboration, Copilot has emerged as a valuable tool for achieving desired outcomes. Whether you’re a seasoned user or just getting started, understanding the key ingredients for a successful interaction with Copilot is essential.
In the first two blogs in this series on prompt engineering, Prompt engineering 101: Create content in 3 simple steps with ASK AI and Prompt engineering 101 for images: Crafting detailed visual descriptions, we shared some quick tips to get started with effective prompting to get the best results from Copilot. Now we’ll share how to use Copilot prompts within Microsoft 365 to seamlessly pull content and insights from any source into the format and application you need.
Let’s dive into these four crucial elements:
Purpose and context: How can Copilot help?
Before engaging with Copilot, clarify your purpose. Are you seeking assistance with drafting documents, creating presentations, or analyzing data? Knowing your objective will guide your interactions.
Stakeholders: Who’s involved?
Identify the key players. Are you collaborating with a team, clients, or stakeholders? Recognize their roles and expectations. Copilot can adapt its responses based on the context you provide.
Expectations: How could Copilot meet your needs?
Set clear expectations. Specify the level of detail, tone, and format you desire. Copilot can generate content, but it’s up to you to review and refine it to align with your goals.
Information sources: What data should Copilot use?
Be explicit about the sources you want Copilot to draw from. Whether it’s existing documents, research articles, or internal guidelines, Copilot can incorporate relevant information.
Seamless workflows with Copilot
Copilot for Microsoft 365 is available as an AI-powered feature across Microsoft 365. This means that the power of AI can be accessed seamlessly in the apps you already know and use every day – Word, Excel, PowerPoint, Teams and more.
In Word, for example, Copilot appears in a new document to help you kickstart content from a blank page. Select “Draft with Copilot” and enter your prompt to being an outline, summary, or even long-form content.
Copilot can also “sit next to you” as your assistant as you write, edit, or read documents. When you open a document, the Copilot panel lets you quickly summarize, ask for editing suggestions, build an outline, or check for clarity:
The advantage of using Copilot in Microsoft 365 is that the power of AI is available to pull insights and create new content within the tools you already use. Copilot is also interoperable between apps – you can easily turn a Word document into a PowerPoint presentation or pull meeting notes from Teams into an email.
Learn more about the breadth of Copilot for Microsoft 365 and be sure to watch Jared Spataro’s Copilot demo where he shows how quickly you can create insights and content.
Example scenario: Launching a summer mentoring program
Let’s explore how Copilot can assist different teams involved in a nonprofit’s new mentoring program:
1. Program Management Team: Creating Guidelines and a Handbook (Copilot in Word)
Copilot generates a handbook for the summer mentoring program, outlining phases (initiation, planning, implementation, and evaluation).
It includes a checklist for mentors and mentees, clarifying their responsibilities during the program.
A sample schedule for 30-minute weekly check-ins is also provided.
2. Training Team: Crafting a Presentation (Copilot in PowerPoint)
Convert the handbook into a presentation using Copilot in PowerPoint.
Copilot outlines the introduction, phases, and checklist slides.
As an expert, review and tailor the content to match your vision.
3. Marketing Team: Engaging Volunteers via Email (Copilot in Outlook)
Draft an enthusiastic email to promote volunteering opportunities.
Copilot provides coaching, suggesting improvements to tone and formality.
Attach the mentoring program handbook for reference.
4. Fundraising Team: Analyzing Donor Contributions (Copilot in Excel)
Use Copilot in Excel to calculate total donations by donors.
Identify top donors for celebration and recognition.
5. Administrative Tasks: Capturing meeting notes (Copilot in Teams)
Record meeting notes and ask Copilot to summarize key points.
Copilot lists action items, streamlining follow-up tasks.
Remember, while Copilot streamlines tasks, your expertise ensures the final output aligns with your goals. Embrace the collaboration between human and AI, and let Copilot enhance your productivity across Microsoft 365 products.
Keep learning
Explore these resources and learning paths to keep building skills in Microsoft 365:
Microsoft Digital Skills Center for Nonprofits: aka.ms/TechSoup
AI skills for nonprofits collection on Microsoft Learn: aka.ms/AI-for-nonprofits-collection
LinkedIn Learning pathways for digital and AI fluency: aka.ms/MyLearningPathway
Note: This article was created in collaboration between the author and Microsoft Copilot.
Continue the conversation by joining us in the Nonprofit Community! Want to share best practices or join community events? Become a member by “Joining” the Nonprofit Community. To stay up to date on the latest nonprofit news, make sure to Follow or Subscribe to the Nonprofit Community Blog space!
Microsoft Tech Community – Latest Blogs –Read More
Partner Case Study Series | Uptale case study
Powerful training experiences with Uptale immersive learning on Microsoft Azure
Uptale is a software-as-a-service company providing an immersive learning platform for large and distributed enterprises in Europe, North America, and Asia. Uptale’s mission is to educate the workforce at scale by enabling anyone to create VR training. Uptale’s immersive learning platform on Azure makes situation-handling skills easy to digitize, distribute, and track. The Uptale solution features an intuitive virtual reality authoring tool to create simulated workplace environments plus distribution options to deliver consistent training content to any device, at any location, in real time. It also provides insights and analytics across workforce enablement programs.
Uptale is built on Azure and takes advantage of Azure Cognitive Services. Uptale utilizes Azure Speech services, including the Text to Speech service with new neural voices and Speech to Text for voice recognition in the Uptale VR Translator.
Continue reading here
**Explore all case studies or submit your own**
Microsoft Tech Community – Latest Blogs –Read More
Announcing the Public Preview of Upgrade Policies for Virtual Machine Scale Sets with Flexible Orche
Today we are announcing the public preview of upgrade policies for Virtual Machine Scale Sets with Flexible Orchestration. Upgrade policies allow for more granular control over the upgrade process, ensuring that your services remain available and responsive during updates.
Automatic upgrade policy
With an automatic upgrade policy, the scale set makes no guarantees about the order of virtual machines being brought down. The scale set might take down all virtual machines at the same time to perform upgrades.
Automatic upgrade policy is best suited for DevTest scenarios where you aren’t concerned about the uptime of your instances while making changes to configurations and settings.
Manual upgrade policy
With a manual upgrade policy, you choose when to update the scale set instances. Nothing happens automatically to the existing virtual machines when changes occur to the scale set model. New instances added to the scale set use the most update-to-date model available.
Manual upgrade policy is best suited for workloads where you require more control over when and how instances are updated.
Rolling upgrade policy
With a rolling upgrade policy, the scale set performs updates in batches. You also get more control over the upgrades with settings like batch size, max healthy percentage, prioritizing unhealthy instances and enabling upgrades across availability zones. Additionally, Rolling has the option to enable MaxSurge. MaxSurge deploys new instances running the latest model to replace instances using the old model. MaxSurge allows customers to maintain their full scale set capacity during the upgrade process, ensuring the entirety of their scale set is available to receive traffic
Rolling upgrade policy is best suited for production workloads that require a set number of instances always be available. Rolling upgrades is safest way to upgrade instances to the latest model without compromising availability and uptime.
Key Benefits
Keep scale set instances up to date and secure without impacting availability
Choose an upgrade policy that best fits your workload
Change and modify your upgrade policy at any time
Spend less time manually managing the upgrade process
Setting the Upgrade Policy
The upgrade policy can be set during scale set creation or change any time post creation. If you do not explicitly set an upgrade policy, it will default to manual.
During the Virtual Machine Scale Set creation in the Azure portal, under the Management tab, set the upgrade policy to Rolling, Automatic, or Manual.
Alternatively, for existing Virtual Machine Scale Sets, select the Virtual Machine Scale Set you want to change the upgrade policy for. In the menu under Settings, select Upgrade Policy and from the drop-down menu, select the upgrade policy you want to enable.
If using a Rolling Upgrade Policy, you can configure additional settings such as batch size, max unhealthy percentage or opt to use MaxSurge which will help to ensure your application remains fully up and running during the upgrade process.
Available Now
Upgrade policies for Virtual Machine Scale Sets with Flexible Orchestration are available in all public cloud regions. To get started, see Upgrade Policies for Virtual Machine Scale Sets.
Micah McKittrick
Microsoft Azure Compute Services
Senior Product Manager
Microsoft Tech Community – Latest Blogs –Read More
Skype for Business Server Roadmap Update
Today, we are providing an update on our product roadmap for Microsoft Skype for Business Server. Here’s what’s ahead:
We will release a Cumulative Update (CU)—CU8—for Skype for Business Server 2019 in H2 of 2024.
We will release Skype for Business Server Subscription Edition (SE) early in the third quarter of calendar year 2025.
Skype for Business Server SE, the next release of Microsoft Skype for Business Server, will be available for download from the Microsoft 365 admin center (previously the Microsoft Volume License Service Center) in early Q3 of 2025.
The licensing model for Skype for Business Server SE is the same as SharePoint Server Subscription Edition and Exchange Server Subscription Edition, which requires subscription licenses or licenses with active Software Assurance for server and user licenses.
The hardware, operating system, and other requirements for Skype for Business Server SE are the same as Skype for Business Server 2019.
Finally, Skype for Business Server SE will be supported under the modern lifecycle support policy.
Upcoming Changes in CU8
We’re adding Persistent Chat to Skype for Business Server 2019 in CU8 and completing our final phase of the Modern Admin Control Panel.
Persistent Chat
We are adding Persistent Chat (PChat) to Skype for Business Server 2019, which plays a pivotal role in promoting collaboration. PChat lets users create discussion rooms centered around specific topics, with those conversations persisted over time. Based on valuable feedback from our user community, we are providing an option to install PChat in our next CU.
Modern Admin Control Panel
We are also adding functionality to our new admin interface, the Modern Admin Control Panel (MACP), in our next CU.
This is the final phase for our updates to MACP. For information about previous phases, see Phase 1 (2019), Phase 2 (2020), and Phase 3 (2021).
This final phase includes:
IM & Presence: Dedicated tab for instant messaging and presence management.
Security: Centralizes security-related settings, allowing admins to configure access controls, authentication methods, and encryption protocols.
Monitoring & Archiving: Real-time monitoring and archiving capabilities to help admins keep track of system performance, user activity, and compliance requirements.
Network Configuration: Fine-tune network settings, optimize performance, troubleshoot issues, and ensure seamless connectivity.
Clients: Manage client applications, configure client policies, update versions, and address compatibility concerns.
Persistent Chat (PChat): Topic-based discussion rooms that persist over time.
Please start using the MACP today and share your feedback and questions using the ‘Give Feedback’ link.
Upgrading to Skype for Business Server SE from Previous Versions
To help accelerate the transition to Skype for Business Server SE, in addition to being code equivalent to Skype for Business Server 2019 CU8 (plus any subsequent Security Updates (SUs) or Hotfixes (HFs) to CU8), Skype for Business Server SE will support an in-place upgrade from Skype for Business Server 2019.
In-Place Upgrade
The fastest and easiest way to get to Skype for Business Server SE is to perform an in-place upgrade from Skype for Business Server 2019. The upgrade experience is identical to installing a CU. Once a server is running Skype for Business Server SE, it will be updated with our update cadence of periodic CUs and as-needed SUs and HFs.
Update Paths to Skype for Business Server SE
Below is a table that summarizes the available paths based on the version(s) you’re running:
Version in use
Upgrade Path
Skype for Business Server 2013
Upgrade to Skype for Business 2019 now, update to CU8 when available, and then upgrade in-place to Skype for Business Server SE when available.
Skype for Business Server 2015
Upgrade to Skype for Business 2019 now, update to CU8 when available, and upgrade in-place to Skype for Business Server SE when available.
Skype for Business Server 2019
Update to CU8 when available, and then upgrade in-place to Skype for Business Server SE when available.
Call to Action
Skype for Business Server SE will be available shortly before Skype for Business Server 2015 and Skype for Business Server 2019 both reach end of support on October 14, 2025. If you intend to continue to run Skype for Business Server on-premises, we recommend moving to Skype for Business Server 2019 with the latest update now, and upgrading to Skype for Business Server SE when it is available in 2025.
— Skype for Business Server Engineering Team
Microsoft Tech Community – Latest Blogs –Read More
June 2024: Azure Updates undergoing maintenance
Azure Updates website is undergoing maintenance. During this time, you may notice limited functionality affecting RSS feeds and search features. We apologize for any inconvenience this may cause. Thank you for your patience and understanding.
We are committed to bringing you weekly updates for Azure Updates, and will be posting them here, in the Tech Community every Thursday for the near term.
Critical updates and retirements will also be communicated via emails and service health alerts.
Microsoft Tech Community – Latest Blogs –Read More
Python Matlab integration error – Error using numpy_ops>init thinc.backends.numpy_ops
I want to call my python script from the Matlab. I received the error Error using numpy_ops>init thinc.backends.numpy_ops
Python Error: ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject.
The Python script is as follows
import spacy
def text_recognizer(model_path, text):
try:
# Load the trained model
nlp = spacy.load(model_path)
print("Model loaded successfully.")
# Process the given text
doc = nlp(text)
ent_labels = [(ent.text, ent.label_) for ent in doc.ents]
return ent_labels
The Matlab script is as follows
% Set up the Python environment
pe = pyenv;
py.importlib.import_module(‘final_output’);
% Add the directory containing the Python script to the Python path
path_add = fileparts(which(‘final_output.py’));
if count(py.sys.path, path_add) == 0
insert(py.sys.path, int64(0), path_add);
end
% Define model path and text to process
model_path = ‘D:trained_model\output\model-best’;
text = ‘Roses are red’;
% Call the Python function
pyOut = py.final_output.text_recognizer(model_path, text);
% Convert the output to a MATLAB cell array
entity_labels = cell(pyOut);
disp(entity_labels);
I found one solution to update numpy, what I did, but nothing changed.
How can I fix the issue?I want to call my python script from the Matlab. I received the error Error using numpy_ops>init thinc.backends.numpy_ops
Python Error: ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject.
The Python script is as follows
import spacy
def text_recognizer(model_path, text):
try:
# Load the trained model
nlp = spacy.load(model_path)
print("Model loaded successfully.")
# Process the given text
doc = nlp(text)
ent_labels = [(ent.text, ent.label_) for ent in doc.ents]
return ent_labels
The Matlab script is as follows
% Set up the Python environment
pe = pyenv;
py.importlib.import_module(‘final_output’);
% Add the directory containing the Python script to the Python path
path_add = fileparts(which(‘final_output.py’));
if count(py.sys.path, path_add) == 0
insert(py.sys.path, int64(0), path_add);
end
% Define model path and text to process
model_path = ‘D:trained_model\output\model-best’;
text = ‘Roses are red’;
% Call the Python function
pyOut = py.final_output.text_recognizer(model_path, text);
% Convert the output to a MATLAB cell array
entity_labels = cell(pyOut);
disp(entity_labels);
I found one solution to update numpy, what I did, but nothing changed.
How can I fix the issue? I want to call my python script from the Matlab. I received the error Error using numpy_ops>init thinc.backends.numpy_ops
Python Error: ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject.
The Python script is as follows
import spacy
def text_recognizer(model_path, text):
try:
# Load the trained model
nlp = spacy.load(model_path)
print("Model loaded successfully.")
# Process the given text
doc = nlp(text)
ent_labels = [(ent.text, ent.label_) for ent in doc.ents]
return ent_labels
The Matlab script is as follows
% Set up the Python environment
pe = pyenv;
py.importlib.import_module(‘final_output’);
% Add the directory containing the Python script to the Python path
path_add = fileparts(which(‘final_output.py’));
if count(py.sys.path, path_add) == 0
insert(py.sys.path, int64(0), path_add);
end
% Define model path and text to process
model_path = ‘D:trained_model\output\model-best’;
text = ‘Roses are red’;
% Call the Python function
pyOut = py.final_output.text_recognizer(model_path, text);
% Convert the output to a MATLAB cell array
entity_labels = cell(pyOut);
disp(entity_labels);
I found one solution to update numpy, what I did, but nothing changed.
How can I fix the issue? python, matlab MATLAB Answers — New Questions
how to skip lines that start with a certain character while reading a text file
I have a text file with two coloumns for a certain amount of rows. The coloumns are then divided from a text line that start with #, how can I load only the data by removing the # line?I have a text file with two coloumns for a certain amount of rows. The coloumns are then divided from a text line that start with #, how can I load only the data by removing the # line? I have a text file with two coloumns for a certain amount of rows. The coloumns are then divided from a text line that start with #, how can I load only the data by removing the # line? text, load, file MATLAB Answers — New Questions
How to add error bars to scatter plot?
I have x and y data points that I’m fitting a custom equation to using cftool. I have also calculated vertical error for each of my points. How can I show the error bars and the fit at the same time?I have x and y data points that I’m fitting a custom equation to using cftool. I have also calculated vertical error for each of my points. How can I show the error bars and the fit at the same time? I have x and y data points that I’m fitting a custom equation to using cftool. I have also calculated vertical error for each of my points. How can I show the error bars and the fit at the same time? cftool MATLAB Answers — New Questions
Assigning tasks to multiple people
Hello Planner community, I’m trying to create a recurring Planner task that would be assigned to multiple people (ex. “Submit timesheet”). When assigning to more than one person, the task is “complete” when any one of the people completes it.
I can create a task for each person, but that becomes burdensome if the task is being assigned to a large number of people. I’m curious how others approach this problem and what workaround the community has come up with. Also curious, of course, what the Planner team has to say.
Hello Planner community, I’m trying to create a recurring Planner task that would be assigned to multiple people (ex. “Submit timesheet”). When assigning to more than one person, the task is “complete” when any one of the people completes it.I can create a task for each person, but that becomes burdensome if the task is being assigned to a large number of people. I’m curious how others approach this problem and what workaround the community has come up with. Also curious, of course, what the Planner team has to say. Read More
Pagination in Word
Please help me begin with page 1 on page 3 of document.
Thank you very much
markc12
Please help me begin with page 1 on page 3 of document. Thank you very much markc12 Read More
Export SharePoint Permissions
Hello Experts,
I am the site Owner for a Modern Teams SharePoint site (or Classic). The site permission is Private and I have several Permission Groups created with about 150 users assigned to a specific group (Region Read/Write, Region Read Only, Region Full Control, etc…).
I need to periodically review and reconcile the users assigned to this site’s permission groups with our Access Management tool to ensure that they match.
Does anyone have a solution for exporting a list of all site users with their assigned Permission Groups?
It seems that this is still a challenge without using PowerShell or having full company-level SharePoint Administration.
Is there a way a site Owner can do this?
Hello Experts, I am the site Owner for a Modern Teams SharePoint site (or Classic). The site permission is Private and I have several Permission Groups created with about 150 users assigned to a specific group (Region Read/Write, Region Read Only, Region Full Control, etc…). I need to periodically review and reconcile the users assigned to this site’s permission groups with our Access Management tool to ensure that they match. Does anyone have a solution for exporting a list of all site users with their assigned Permission Groups?It seems that this is still a challenge without using PowerShell or having full company-level SharePoint Administration. Is there a way a site Owner can do this? Read More
Exchange Online Best Practices
From an EMM / MDM perspective and on premise Exchange we would have a Secure Email Gateway (SEG) as a protection layer for email from devices. With O365 migrations is there an equivalent SEG to protect email access only from managed devices for example? And secondly, are gateways as relevant nowadays and should we instead look at 2fa, Purview and Conditional Access signal related stuff?
Any best practices and complete answers I am very grateful for. TIA.
From an EMM / MDM perspective and on premise Exchange we would have a Secure Email Gateway (SEG) as a protection layer for email from devices. With O365 migrations is there an equivalent SEG to protect email access only from managed devices for example? And secondly, are gateways as relevant nowadays and should we instead look at 2fa, Purview and Conditional Access signal related stuff?Any best practices and complete answers I am very grateful for. TIA. Read More