Tag Archives: matlab
Why Spatial referencing information is missing or not readable directly from ENVI format data?
I have created ENVI formatted data along with its header file. I can open it in ENVI software and even extracted the data using shape file manually. However, when I tried to extract the data using same shape file from MATLAB code given below;
[img, R] = readgeoraster(img_file.name);
% Verify if R contains the necessary spatial referencing information
if isempty(R)
error(‘Spatial referencing information is missing or not readable directly.’);
end
It gives following error
Spatial referencing information is missing or not readable directly
I am attaching the ENVI header file and request you to please suggest me how to use it.
ChaharI have created ENVI formatted data along with its header file. I can open it in ENVI software and even extracted the data using shape file manually. However, when I tried to extract the data using same shape file from MATLAB code given below;
[img, R] = readgeoraster(img_file.name);
% Verify if R contains the necessary spatial referencing information
if isempty(R)
error(‘Spatial referencing information is missing or not readable directly.’);
end
It gives following error
Spatial referencing information is missing or not readable directly
I am attaching the ENVI header file and request you to please suggest me how to use it.
Chahar I have created ENVI formatted data along with its header file. I can open it in ENVI software and even extracted the data using shape file manually. However, when I tried to extract the data using same shape file from MATLAB code given below;
[img, R] = readgeoraster(img_file.name);
% Verify if R contains the necessary spatial referencing information
if isempty(R)
error(‘Spatial referencing information is missing or not readable directly.’);
end
It gives following error
Spatial referencing information is missing or not readable directly
I am attaching the ENVI header file and request you to please suggest me how to use it.
Chahar spatial referencing information is missing? MATLAB Answers — New Questions
Exporting MATLAB code to word file
I want to export my MATLAB code in word file. If I opt for print command directly, the code is getting printed, but the vertical lines that connect the start and end of a loop are not getting shown. For example,
for d=1:s
fraction(d)=vert(d)/add;
if(d==1)
cumulative(d)=fraction(d);
continue
end
cumulative(d)=cumulative(d-1)+fraction(d)
end
The vertical line connecting the For loop with its corresponding end is not appearing. Any suggestions how I can do that ?I want to export my MATLAB code in word file. If I opt for print command directly, the code is getting printed, but the vertical lines that connect the start and end of a loop are not getting shown. For example,
for d=1:s
fraction(d)=vert(d)/add;
if(d==1)
cumulative(d)=fraction(d);
continue
end
cumulative(d)=cumulative(d-1)+fraction(d)
end
The vertical line connecting the For loop with its corresponding end is not appearing. Any suggestions how I can do that ? I want to export my MATLAB code in word file. If I opt for print command directly, the code is getting printed, but the vertical lines that connect the start and end of a loop are not getting shown. For example,
for d=1:s
fraction(d)=vert(d)/add;
if(d==1)
cumulative(d)=fraction(d);
continue
end
cumulative(d)=cumulative(d-1)+fraction(d)
end
The vertical line connecting the For loop with its corresponding end is not appearing. Any suggestions how I can do that ? print MATLAB Answers — New Questions
how to plot the motor chamber pressure and the vacuum thrust as a function of both time and web assuming quasi-steady state (equilibrium)
I have computed the equilibrium pressure assuming a quasi steady state condition: using the following eq attached to this question and below is my code. How do I plot Pc_eq as a function of time?
clear all
%% Step 1
% ========================================================================= %
% Basing on the motor and propellant data indicated in Table 1 and on the
% burning surface evolution shown in Figs. 5 and 6 and assuming a constant
% chambre temperature profile compute the following curves without taking
% into account the non-ideal parameters.
%% Step 1.1
%Find: The motor chamber pressure and the vaccume thrust as a
% function of both time and web assuming quasi-steady state (equilibrium)
% User inputs – First stage P80 SRM
% ========================================================================= %
mp = 88000; % Propellant Mass [kg]
ms = 7330; % Structural mass [kg]
l = 10.6; % length [m]
d = 3.0; % Diameter [m]
f = 3015; % Max thrust(vaccum) [kN]
bt = 110; % Buring time [sec]
isp = 280; % Specifi Impulse (vaccuum) [sec]
% User inputs – Propellant Ballistic Properties
% ========================================================================= %
a = 1.847e-05; % Temperature coefficient @ 300 K [m/s * Pae-0.4]
n = 0.4; % Combustion index
tau = 0.0015; % Temperature sensitivity [k^-1]
rho = 1790; % Density [kg/m^3]
% User inputs – Propellant thermochemocal properties
% ========================================================================= %
T_F = 3550; % Flame temperature [K]
M = 29; % Molecular mass [kg/kmole]
gamma = 1.13; % Specific heat ratio
% User inputs – Motor geometrical properties
% ========================================================================= %
d_throat = 0.496; % Throat diameter [m]
e = 16; % expansion ratio
v_c = 8.6; % Initial chamber volume [m^3]
v_frac = 0.85; % volumetric loading fraction (V_c/(V_c+V_p)
% constants
% ========================================================================= %
r = 8314.5 % gas constant [J/kmol)
% Calculations
% Find: The motor chamber pressure and the vaccum thrust as a
% ========================================================================= %
a_t = pi* (d_throat/2)^2; % Thrat area [m^2]
m_dot = mp/bt; % mass flow rate [kg/s]
s_b = 48; % burning surface area – pulled from the Sb vs Y plot [m^2]
cap_gamma = sqrt (gamma * (2/(gamma + 1))^((gamma+1)/(gamma-1))); % capital gamma
c_star = (1/cap_gamma)*sqrt((r*T_F)/M);
K = s_b/a_t; % Klemmung
Pc_eq = (a *rho*c_star*K)^(1/(1-n));I have computed the equilibrium pressure assuming a quasi steady state condition: using the following eq attached to this question and below is my code. How do I plot Pc_eq as a function of time?
clear all
%% Step 1
% ========================================================================= %
% Basing on the motor and propellant data indicated in Table 1 and on the
% burning surface evolution shown in Figs. 5 and 6 and assuming a constant
% chambre temperature profile compute the following curves without taking
% into account the non-ideal parameters.
%% Step 1.1
%Find: The motor chamber pressure and the vaccume thrust as a
% function of both time and web assuming quasi-steady state (equilibrium)
% User inputs – First stage P80 SRM
% ========================================================================= %
mp = 88000; % Propellant Mass [kg]
ms = 7330; % Structural mass [kg]
l = 10.6; % length [m]
d = 3.0; % Diameter [m]
f = 3015; % Max thrust(vaccum) [kN]
bt = 110; % Buring time [sec]
isp = 280; % Specifi Impulse (vaccuum) [sec]
% User inputs – Propellant Ballistic Properties
% ========================================================================= %
a = 1.847e-05; % Temperature coefficient @ 300 K [m/s * Pae-0.4]
n = 0.4; % Combustion index
tau = 0.0015; % Temperature sensitivity [k^-1]
rho = 1790; % Density [kg/m^3]
% User inputs – Propellant thermochemocal properties
% ========================================================================= %
T_F = 3550; % Flame temperature [K]
M = 29; % Molecular mass [kg/kmole]
gamma = 1.13; % Specific heat ratio
% User inputs – Motor geometrical properties
% ========================================================================= %
d_throat = 0.496; % Throat diameter [m]
e = 16; % expansion ratio
v_c = 8.6; % Initial chamber volume [m^3]
v_frac = 0.85; % volumetric loading fraction (V_c/(V_c+V_p)
% constants
% ========================================================================= %
r = 8314.5 % gas constant [J/kmol)
% Calculations
% Find: The motor chamber pressure and the vaccum thrust as a
% ========================================================================= %
a_t = pi* (d_throat/2)^2; % Thrat area [m^2]
m_dot = mp/bt; % mass flow rate [kg/s]
s_b = 48; % burning surface area – pulled from the Sb vs Y plot [m^2]
cap_gamma = sqrt (gamma * (2/(gamma + 1))^((gamma+1)/(gamma-1))); % capital gamma
c_star = (1/cap_gamma)*sqrt((r*T_F)/M);
K = s_b/a_t; % Klemmung
Pc_eq = (a *rho*c_star*K)^(1/(1-n)); I have computed the equilibrium pressure assuming a quasi steady state condition: using the following eq attached to this question and below is my code. How do I plot Pc_eq as a function of time?
clear all
%% Step 1
% ========================================================================= %
% Basing on the motor and propellant data indicated in Table 1 and on the
% burning surface evolution shown in Figs. 5 and 6 and assuming a constant
% chambre temperature profile compute the following curves without taking
% into account the non-ideal parameters.
%% Step 1.1
%Find: The motor chamber pressure and the vaccume thrust as a
% function of both time and web assuming quasi-steady state (equilibrium)
% User inputs – First stage P80 SRM
% ========================================================================= %
mp = 88000; % Propellant Mass [kg]
ms = 7330; % Structural mass [kg]
l = 10.6; % length [m]
d = 3.0; % Diameter [m]
f = 3015; % Max thrust(vaccum) [kN]
bt = 110; % Buring time [sec]
isp = 280; % Specifi Impulse (vaccuum) [sec]
% User inputs – Propellant Ballistic Properties
% ========================================================================= %
a = 1.847e-05; % Temperature coefficient @ 300 K [m/s * Pae-0.4]
n = 0.4; % Combustion index
tau = 0.0015; % Temperature sensitivity [k^-1]
rho = 1790; % Density [kg/m^3]
% User inputs – Propellant thermochemocal properties
% ========================================================================= %
T_F = 3550; % Flame temperature [K]
M = 29; % Molecular mass [kg/kmole]
gamma = 1.13; % Specific heat ratio
% User inputs – Motor geometrical properties
% ========================================================================= %
d_throat = 0.496; % Throat diameter [m]
e = 16; % expansion ratio
v_c = 8.6; % Initial chamber volume [m^3]
v_frac = 0.85; % volumetric loading fraction (V_c/(V_c+V_p)
% constants
% ========================================================================= %
r = 8314.5 % gas constant [J/kmol)
% Calculations
% Find: The motor chamber pressure and the vaccum thrust as a
% ========================================================================= %
a_t = pi* (d_throat/2)^2; % Thrat area [m^2]
m_dot = mp/bt; % mass flow rate [kg/s]
s_b = 48; % burning surface area – pulled from the Sb vs Y plot [m^2]
cap_gamma = sqrt (gamma * (2/(gamma + 1))^((gamma+1)/(gamma-1))); % capital gamma
c_star = (1/cap_gamma)*sqrt((r*T_F)/M);
K = s_b/a_t; % Klemmung
Pc_eq = (a *rho*c_star*K)^(1/(1-n)); quassi steady state MATLAB Answers — New Questions
How can I solve the error of too many input arguments in fuzzy logic toolbox?
I’m new here so i don’t understand a thing. I was interested in fuzzy logic for food control operations with the help of matlab. I took the help of a decades old book for the program; i’m seeing this and i have no clue
for i = 1:k
CC = [fuzzy(S1(i,:), Qrel(i,:)); fuzzy(S2(i,:), Qrel(i,:)); fuzzy(S3(i,:), Qrel(i,:))];
So=So+CC ;
end
Error using fuzzy
Too many input arguments.
please help out
*see page 397 in the attached pdf for clarity.I’m new here so i don’t understand a thing. I was interested in fuzzy logic for food control operations with the help of matlab. I took the help of a decades old book for the program; i’m seeing this and i have no clue
for i = 1:k
CC = [fuzzy(S1(i,:), Qrel(i,:)); fuzzy(S2(i,:), Qrel(i,:)); fuzzy(S3(i,:), Qrel(i,:))];
So=So+CC ;
end
Error using fuzzy
Too many input arguments.
please help out
*see page 397 in the attached pdf for clarity. I’m new here so i don’t understand a thing. I was interested in fuzzy logic for food control operations with the help of matlab. I took the help of a decades old book for the program; i’m seeing this and i have no clue
for i = 1:k
CC = [fuzzy(S1(i,:), Qrel(i,:)); fuzzy(S2(i,:), Qrel(i,:)); fuzzy(S3(i,:), Qrel(i,:))];
So=So+CC ;
end
Error using fuzzy
Too many input arguments.
please help out
*see page 397 in the attached pdf for clarity. fuzzy, fuzzy logic, input, arrays, variables MATLAB Answers — New Questions
How to replace negative elements in a Matrix with zeros?
A = [2, 3, -1, 5;
-1, 4, -7, -3;
-6, 0, 3, 9;
7, 6, -3, 8];
B = [9;
17;
15;
-3];
AI = inv(A)
I = A*AI
X = AI*B
A*X
Now I am trying to set up a nested for loop to redefine negative elements in A. I need to replace negative elements in A with a zero. How do I go about doing this?A = [2, 3, -1, 5;
-1, 4, -7, -3;
-6, 0, 3, 9;
7, 6, -3, 8];
B = [9;
17;
15;
-3];
AI = inv(A)
I = A*AI
X = AI*B
A*X
Now I am trying to set up a nested for loop to redefine negative elements in A. I need to replace negative elements in A with a zero. How do I go about doing this? A = [2, 3, -1, 5;
-1, 4, -7, -3;
-6, 0, 3, 9;
7, 6, -3, 8];
B = [9;
17;
15;
-3];
AI = inv(A)
I = A*AI
X = AI*B
A*X
Now I am trying to set up a nested for loop to redefine negative elements in A. I need to replace negative elements in A with a zero. How do I go about doing this? matrix, for loops MATLAB Answers — New Questions
How can I get Runge-Kutta method to display exponential decay when solving a two dimensional wave equation?
Hello, I am trying to create a wave equation solver using the method of lines and Runge-Kutta to numerically approximate the solution. If my initial conditions are u(0,x,y)=sin(pix)sin(piy), u_t(0,x,y)=0, then I know the exact solution to be e^(-2pi^2)sin(pix)sin(piy). I plot both my approximation (figure 1) and the exact solution (figure 2) below. Since the exact solution has exponential decay I would expect to see that in the approximation, but it just oscillates between -1 and 1 like a regular sine function. Can anyone point me towards what is wrong with my program? I think it has to do with my choices for n, m, and tf but I’m not sure. How can I fix this without changing the solution method? Any advice is appreciated!
n = 200; m = 100; tf = .5;
x = linspace(0,1,n+1)’; xs = x(2:end-1); dx = 1/n;
t = linspace(0,tf,m+1)’; dt = tf/m;
[X,Y] = meshgrid(x,x); [Xs,Ys] = meshgrid(xs,xs);
% Building the Laplacian
d = kron(ones(n,1),[1,-2,1]);
D2 = (1/dx^2) * spdiags(d, -1:1, n-1, n-1);
I = speye(n-1);
L = kron(I,D2) + kron(D2,I);
% Setting up function
F = @(t,w) [w((n-1)^2+1:end); L*w(1:(n-1)^2)];
% Initial conditions
f = @(x,y) sin(pi*x) .* sin(pi*y);
w0 = [reshape(f(Xs,Ys),[(n-1)^2,1]); zeros((n-1)^2,1)];
% Runge-Kutta
w = RK_solver(F,t,w0);
% Plotting
figure(1);
for i = 1:m+1
colormap(spring);
u = reshape(w(1:(n-1)^2,i),n-1,n-1);
z = zeros(n+1);
z(2:end-1,2:end-1) = u;
surf(X,Y,z); zlim([-1 1]);
pause(0.05)
end
% Exact for comparison
figure(2);
for i = 0:dt:tf
colormap(autumn);
U = exp(-2*pi^2*i) .* sin(pi*X) .* sin(pi*Y);
surf(X,Y,U); zlim([0 1]);
pause(0.05);
end
And here’s the Runge-Kutta solver I used:
function w = RK_solver(F,t,c)
n = length(t)-1; % number of subdivisions
m = length(c); % number of equations
dt = t(2)-t(1); % change in t
w = zeros(m,n+1); % to store answers
w(:,1) = c; % initial condition
% RK loop
for i = 1:n
k1 = dt.*F(t(i), w(:,i));
k2 = dt.*F(t(i)+(dt/2), w(:,i)+(k1/2));
k3 = dt.*F(t(i)+(dt/2), w(:,i)+(k2/2));
k4 = dt.*F(t(i)+dt, w(:,i)+k3);
% Weighted average of k values
k = (k1+(2*k2)+(2*k3)+k4)/6;
% Fills in next column of w
w(:,i+1) = w(:,i) + k;
endHello, I am trying to create a wave equation solver using the method of lines and Runge-Kutta to numerically approximate the solution. If my initial conditions are u(0,x,y)=sin(pix)sin(piy), u_t(0,x,y)=0, then I know the exact solution to be e^(-2pi^2)sin(pix)sin(piy). I plot both my approximation (figure 1) and the exact solution (figure 2) below. Since the exact solution has exponential decay I would expect to see that in the approximation, but it just oscillates between -1 and 1 like a regular sine function. Can anyone point me towards what is wrong with my program? I think it has to do with my choices for n, m, and tf but I’m not sure. How can I fix this without changing the solution method? Any advice is appreciated!
n = 200; m = 100; tf = .5;
x = linspace(0,1,n+1)’; xs = x(2:end-1); dx = 1/n;
t = linspace(0,tf,m+1)’; dt = tf/m;
[X,Y] = meshgrid(x,x); [Xs,Ys] = meshgrid(xs,xs);
% Building the Laplacian
d = kron(ones(n,1),[1,-2,1]);
D2 = (1/dx^2) * spdiags(d, -1:1, n-1, n-1);
I = speye(n-1);
L = kron(I,D2) + kron(D2,I);
% Setting up function
F = @(t,w) [w((n-1)^2+1:end); L*w(1:(n-1)^2)];
% Initial conditions
f = @(x,y) sin(pi*x) .* sin(pi*y);
w0 = [reshape(f(Xs,Ys),[(n-1)^2,1]); zeros((n-1)^2,1)];
% Runge-Kutta
w = RK_solver(F,t,w0);
% Plotting
figure(1);
for i = 1:m+1
colormap(spring);
u = reshape(w(1:(n-1)^2,i),n-1,n-1);
z = zeros(n+1);
z(2:end-1,2:end-1) = u;
surf(X,Y,z); zlim([-1 1]);
pause(0.05)
end
% Exact for comparison
figure(2);
for i = 0:dt:tf
colormap(autumn);
U = exp(-2*pi^2*i) .* sin(pi*X) .* sin(pi*Y);
surf(X,Y,U); zlim([0 1]);
pause(0.05);
end
And here’s the Runge-Kutta solver I used:
function w = RK_solver(F,t,c)
n = length(t)-1; % number of subdivisions
m = length(c); % number of equations
dt = t(2)-t(1); % change in t
w = zeros(m,n+1); % to store answers
w(:,1) = c; % initial condition
% RK loop
for i = 1:n
k1 = dt.*F(t(i), w(:,i));
k2 = dt.*F(t(i)+(dt/2), w(:,i)+(k1/2));
k3 = dt.*F(t(i)+(dt/2), w(:,i)+(k2/2));
k4 = dt.*F(t(i)+dt, w(:,i)+k3);
% Weighted average of k values
k = (k1+(2*k2)+(2*k3)+k4)/6;
% Fills in next column of w
w(:,i+1) = w(:,i) + k;
end Hello, I am trying to create a wave equation solver using the method of lines and Runge-Kutta to numerically approximate the solution. If my initial conditions are u(0,x,y)=sin(pix)sin(piy), u_t(0,x,y)=0, then I know the exact solution to be e^(-2pi^2)sin(pix)sin(piy). I plot both my approximation (figure 1) and the exact solution (figure 2) below. Since the exact solution has exponential decay I would expect to see that in the approximation, but it just oscillates between -1 and 1 like a regular sine function. Can anyone point me towards what is wrong with my program? I think it has to do with my choices for n, m, and tf but I’m not sure. How can I fix this without changing the solution method? Any advice is appreciated!
n = 200; m = 100; tf = .5;
x = linspace(0,1,n+1)’; xs = x(2:end-1); dx = 1/n;
t = linspace(0,tf,m+1)’; dt = tf/m;
[X,Y] = meshgrid(x,x); [Xs,Ys] = meshgrid(xs,xs);
% Building the Laplacian
d = kron(ones(n,1),[1,-2,1]);
D2 = (1/dx^2) * spdiags(d, -1:1, n-1, n-1);
I = speye(n-1);
L = kron(I,D2) + kron(D2,I);
% Setting up function
F = @(t,w) [w((n-1)^2+1:end); L*w(1:(n-1)^2)];
% Initial conditions
f = @(x,y) sin(pi*x) .* sin(pi*y);
w0 = [reshape(f(Xs,Ys),[(n-1)^2,1]); zeros((n-1)^2,1)];
% Runge-Kutta
w = RK_solver(F,t,w0);
% Plotting
figure(1);
for i = 1:m+1
colormap(spring);
u = reshape(w(1:(n-1)^2,i),n-1,n-1);
z = zeros(n+1);
z(2:end-1,2:end-1) = u;
surf(X,Y,z); zlim([-1 1]);
pause(0.05)
end
% Exact for comparison
figure(2);
for i = 0:dt:tf
colormap(autumn);
U = exp(-2*pi^2*i) .* sin(pi*X) .* sin(pi*Y);
surf(X,Y,U); zlim([0 1]);
pause(0.05);
end
And here’s the Runge-Kutta solver I used:
function w = RK_solver(F,t,c)
n = length(t)-1; % number of subdivisions
m = length(c); % number of equations
dt = t(2)-t(1); % change in t
w = zeros(m,n+1); % to store answers
w(:,1) = c; % initial condition
% RK loop
for i = 1:n
k1 = dt.*F(t(i), w(:,i));
k2 = dt.*F(t(i)+(dt/2), w(:,i)+(k1/2));
k3 = dt.*F(t(i)+(dt/2), w(:,i)+(k2/2));
k4 = dt.*F(t(i)+dt, w(:,i)+k3);
% Weighted average of k values
k = (k1+(2*k2)+(2*k3)+k4)/6;
% Fills in next column of w
w(:,i+1) = w(:,i) + k;
end pde, differential equations, numerical analysis, numerical approximation, runge-kutta, runge kutta, method of lines, partial differential equations, wave equation, surf MATLAB Answers — New Questions
How to solve swallowtail integral
What do we do with this caustic integral?The simple way of writing an integral doesn’t seem to compute it well.What do we do with this caustic integral?The simple way of writing an integral doesn’t seem to compute it well. What do we do with this caustic integral?The simple way of writing an integral doesn’t seem to compute it well. swallowtail integral MATLAB Answers — New Questions
How to save matrix as a “pretty print” image?
I’m creating animations based on abelian sandpile models, where the sandpile heights (integers>0) are used as index values to convert the matrices into color images (ind2rgb). I would like to create companion animations that show the original data in indexed, matrix form, hence the ask for saving a matrix in "pretty print" format as an image. I’ll probably use matrices that are at max 20×20; otherwise, I imagine it’ll be hard to keep the "font size" of the numbers large enough.
Depending on the model size, the animations are upwards of 10,000+ frames, so I don’t want to do any screenshots or manual saving, even for a smaller/more basic example. But it would be a similar result as screenshotting the matrix as viewed in either the Command Window or Variables workspace. Something like this but without needing the commands and label:
If there’s not a quick solution/hack, I may have to go the route of building out a separate function to handle this, which might be fun too.I’m creating animations based on abelian sandpile models, where the sandpile heights (integers>0) are used as index values to convert the matrices into color images (ind2rgb). I would like to create companion animations that show the original data in indexed, matrix form, hence the ask for saving a matrix in "pretty print" format as an image. I’ll probably use matrices that are at max 20×20; otherwise, I imagine it’ll be hard to keep the "font size" of the numbers large enough.
Depending on the model size, the animations are upwards of 10,000+ frames, so I don’t want to do any screenshots or manual saving, even for a smaller/more basic example. But it would be a similar result as screenshotting the matrix as viewed in either the Command Window or Variables workspace. Something like this but without needing the commands and label:
If there’s not a quick solution/hack, I may have to go the route of building out a separate function to handle this, which might be fun too. I’m creating animations based on abelian sandpile models, where the sandpile heights (integers>0) are used as index values to convert the matrices into color images (ind2rgb). I would like to create companion animations that show the original data in indexed, matrix form, hence the ask for saving a matrix in "pretty print" format as an image. I’ll probably use matrices that are at max 20×20; otherwise, I imagine it’ll be hard to keep the "font size" of the numbers large enough.
Depending on the model size, the animations are upwards of 10,000+ frames, so I don’t want to do any screenshots or manual saving, even for a smaller/more basic example. But it would be a similar result as screenshotting the matrix as viewed in either the Command Window or Variables workspace. Something like this but without needing the commands and label:
If there’s not a quick solution/hack, I may have to go the route of building out a separate function to handle this, which might be fun too. matrix, image MATLAB Answers — New Questions
Add first element to a cell array
Dear,
I would like to add a new element in the first position in an cell array
For example if ArrCell={[1],[2],[3],[4],[5]} is the existing cell and [new] is a matrix. I would like to get
ArrCell={[new],[1],[2],[3],[4],[5]}
Of course, I can get this result using a temporal cell array and looping over all the elements of the existing one, but the quesion is if there an efficient way to get this result
Thanks in advance,Dear,
I would like to add a new element in the first position in an cell array
For example if ArrCell={[1],[2],[3],[4],[5]} is the existing cell and [new] is a matrix. I would like to get
ArrCell={[new],[1],[2],[3],[4],[5]}
Of course, I can get this result using a temporal cell array and looping over all the elements of the existing one, but the quesion is if there an efficient way to get this result
Thanks in advance, Dear,
I would like to add a new element in the first position in an cell array
For example if ArrCell={[1],[2],[3],[4],[5]} is the existing cell and [new] is a matrix. I would like to get
ArrCell={[new],[1],[2],[3],[4],[5]}
Of course, I can get this result using a temporal cell array and looping over all the elements of the existing one, but the quesion is if there an efficient way to get this result
Thanks in advance, cell array MATLAB Answers — New Questions
What is the difference between cell and array matrix.
The example is how to take the data from 65th row of the fifth cell
Can I think about taking the data at row 65 and column fifth in a vector?The example is how to take the data from 65th row of the fifth cell
Can I think about taking the data at row 65 and column fifth in a vector? The example is how to take the data from 65th row of the fifth cell
Can I think about taking the data at row 65 and column fifth in a vector? matrix array MATLAB Answers — New Questions
Parallel execution using parfeval does not modify input handle object as expected
I’m trying to implement parallelism – I want to run my function in parallel, and it’s supposed to modify its input OOP object asynchronously.
Here is a simplified test implementation that runs, but the input object is NOT modified by the function calls.
if isempty(gcp(‘nocreate’))
% Start a new parallel pool
parpool();
end
futs= Futures();
nodeCount = NodeCount(1);
for i=1:5
f=parfeval(@Testparffun,0,nodeCount);
futs.append(f)
end
If the parfeval is replaced by the normal function call, it works as expected. With parfeval, the code completes without errors, but nodeCount is not modified .
Here is also the code for Testparffun and NodeCount:
function Testparffun(counter)
counter.increment;
pause(5);
end
And NodeCount:
classdef NodeCount < handle
%NODECOUNT Summary of this class goes here
% Detailed explanation goes here
properties
count
end
methods
function obj = NodeCount(inputArg1)
%NODECOUNT Construct an instance of this class
% Detailed explanation goes here
obj.count =inputArg1 ;
end
function increment(obj)
%METHOD1 Summary of this method goes here
% Detailed explanation goes here
obj.count = obj.count + 1;
end
end
end
The goal of this test would be that each async call increments the value of nodeCount.count by 1, but it does nothing. I understand that I would need to implement some locks to avoid race conditions, etc. but even if the loop makes just one call, it still doesn’t affect the object. Any ideas?I’m trying to implement parallelism – I want to run my function in parallel, and it’s supposed to modify its input OOP object asynchronously.
Here is a simplified test implementation that runs, but the input object is NOT modified by the function calls.
if isempty(gcp(‘nocreate’))
% Start a new parallel pool
parpool();
end
futs= Futures();
nodeCount = NodeCount(1);
for i=1:5
f=parfeval(@Testparffun,0,nodeCount);
futs.append(f)
end
If the parfeval is replaced by the normal function call, it works as expected. With parfeval, the code completes without errors, but nodeCount is not modified .
Here is also the code for Testparffun and NodeCount:
function Testparffun(counter)
counter.increment;
pause(5);
end
And NodeCount:
classdef NodeCount < handle
%NODECOUNT Summary of this class goes here
% Detailed explanation goes here
properties
count
end
methods
function obj = NodeCount(inputArg1)
%NODECOUNT Construct an instance of this class
% Detailed explanation goes here
obj.count =inputArg1 ;
end
function increment(obj)
%METHOD1 Summary of this method goes here
% Detailed explanation goes here
obj.count = obj.count + 1;
end
end
end
The goal of this test would be that each async call increments the value of nodeCount.count by 1, but it does nothing. I understand that I would need to implement some locks to avoid race conditions, etc. but even if the loop makes just one call, it still doesn’t affect the object. Any ideas? I’m trying to implement parallelism – I want to run my function in parallel, and it’s supposed to modify its input OOP object asynchronously.
Here is a simplified test implementation that runs, but the input object is NOT modified by the function calls.
if isempty(gcp(‘nocreate’))
% Start a new parallel pool
parpool();
end
futs= Futures();
nodeCount = NodeCount(1);
for i=1:5
f=parfeval(@Testparffun,0,nodeCount);
futs.append(f)
end
If the parfeval is replaced by the normal function call, it works as expected. With parfeval, the code completes without errors, but nodeCount is not modified .
Here is also the code for Testparffun and NodeCount:
function Testparffun(counter)
counter.increment;
pause(5);
end
And NodeCount:
classdef NodeCount < handle
%NODECOUNT Summary of this class goes here
% Detailed explanation goes here
properties
count
end
methods
function obj = NodeCount(inputArg1)
%NODECOUNT Construct an instance of this class
% Detailed explanation goes here
obj.count =inputArg1 ;
end
function increment(obj)
%METHOD1 Summary of this method goes here
% Detailed explanation goes here
obj.count = obj.count + 1;
end
end
end
The goal of this test would be that each async call increments the value of nodeCount.count by 1, but it does nothing. I understand that I would need to implement some locks to avoid race conditions, etc. but even if the loop makes just one call, it still doesn’t affect the object. Any ideas? parallel computing MATLAB Answers — New Questions
How to apply individual color to each bar on a bar chart plot
The code is working perfect, but all the bars are showing blue color by default, I want each bar to have a diffrent color. The code is divided into two files: The function part and the normal code
The Function file
function plotResults(Cleveland_accuracy, Cleveland_sensitivity, Cleveland_specificity, Cleveland_precision, Cleveland_fScore, Cleveland_mcc, Public_Health_Dataset_accuracy, Public_Health_Dataset_sensitivity, Public_Health_Dataset_specificity, Public_Health_Dataset_precision, Public_Health_Dataset_fScore, Public_Health_Dataset_mcc, Jindong_accuracy, Jindong_sensitivity, Jindong_specificity)
figure
cats = categorical({‘Cleveland Dataset’,’Public Health Dataset’});
cats = reordercats(cats, {‘Cleveland Dataset’,’Public Health Dataset’});
results = [Cleveland_accuracy Cleveland_sensitivity Cleveland_specificity Cleveland_precision Cleveland_fScore Cleveland_mcc;…
Public_Health_Dataset_accuracy Public_Health_Dataset_sensitivity Public_Health_Dataset_specificity Public_Health_Dataset_precision Public_Health_Dataset_fScore Public_Health_Dataset_mcc];
bar(cats, results);
ylabel(‘Metric Value (%)’);
legend(‘Accuracy’, ‘Sensitivity’, ‘Specificity’, ‘Precision’, …
‘F1-Score’, ‘Matthews correlation coefficient’, ‘Location’, ‘northoutside’);
% Accuracy comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_accuracy ;…
Jindong_accuracy;…
Public_Health_Dataset_accuracy];
bar(cats, results);
ylabel(‘Accuracy Values (%)’);
legend(‘Accuracy’, …
‘Location’, ‘northoutside’);
% Sensitivity comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_sensitivity ;…
Jindong_sensitivity;…
Public_Health_Dataset_sensitivity];
bar(cats, results);
ylabel(‘Sensitivity Values (%)’);
legend(‘Sensitivity’, ‘Location’, ‘northoutside’);
% SPecificity comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_specificity ;…
Jindong_specificity;…
Public_Health_Dataset_specificity];
bar(cats, results);
ylabel(‘SPecificity Values (%)’);
legend(‘SPecificity’, ‘Location’, ‘northoutside’);
end
%To call the fuction we have the following codenin a separate file
% Metric values for the main model
Cleveland_accuracy = 99;
Cleveland_sensitivity = 97;
Cleveland_specificity = 100;
Cleveland_precision = 100;
Cleveland_fScore = 98;
Cleveland_mcc = 79;
% Metrics values for Jindong Feng et al model
Jindong_accuracy = 91.25;
Jindong_sensitivity = 91.54;
Jindong_specificity = 90.32;
% Metric values for the combined dataset model
Public_Health_Dataset_accuracy = 87;
Public_Health_Dataset_sensitivity = 77;
Public_Health_Dataset_specificity = 98;
Public_Health_Dataset_precision = 98;
Public_Health_Dataset_fScore = 86;
Public_Health_Dataset_mcc = 75;
% Call the plotResults function with metric values
plotResults(Cleveland_accuracy, Cleveland_sensitivity, Cleveland_specificity, …
Cleveland_precision, Cleveland_fScore, Cleveland_mcc, Public_Health_Dataset_accuracy, Public_Health_Dataset_sensitivity, Public_Health_Dataset_specificity, Public_Health_Dataset_precision, Public_Health_Dataset_fScore, Public_Health_Dataset_mcc, Jindong_accuracy, Jindong_sensitivity, Jindong_specificity);The code is working perfect, but all the bars are showing blue color by default, I want each bar to have a diffrent color. The code is divided into two files: The function part and the normal code
The Function file
function plotResults(Cleveland_accuracy, Cleveland_sensitivity, Cleveland_specificity, Cleveland_precision, Cleveland_fScore, Cleveland_mcc, Public_Health_Dataset_accuracy, Public_Health_Dataset_sensitivity, Public_Health_Dataset_specificity, Public_Health_Dataset_precision, Public_Health_Dataset_fScore, Public_Health_Dataset_mcc, Jindong_accuracy, Jindong_sensitivity, Jindong_specificity)
figure
cats = categorical({‘Cleveland Dataset’,’Public Health Dataset’});
cats = reordercats(cats, {‘Cleveland Dataset’,’Public Health Dataset’});
results = [Cleveland_accuracy Cleveland_sensitivity Cleveland_specificity Cleveland_precision Cleveland_fScore Cleveland_mcc;…
Public_Health_Dataset_accuracy Public_Health_Dataset_sensitivity Public_Health_Dataset_specificity Public_Health_Dataset_precision Public_Health_Dataset_fScore Public_Health_Dataset_mcc];
bar(cats, results);
ylabel(‘Metric Value (%)’);
legend(‘Accuracy’, ‘Sensitivity’, ‘Specificity’, ‘Precision’, …
‘F1-Score’, ‘Matthews correlation coefficient’, ‘Location’, ‘northoutside’);
% Accuracy comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_accuracy ;…
Jindong_accuracy;…
Public_Health_Dataset_accuracy];
bar(cats, results);
ylabel(‘Accuracy Values (%)’);
legend(‘Accuracy’, …
‘Location’, ‘northoutside’);
% Sensitivity comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_sensitivity ;…
Jindong_sensitivity;…
Public_Health_Dataset_sensitivity];
bar(cats, results);
ylabel(‘Sensitivity Values (%)’);
legend(‘Sensitivity’, ‘Location’, ‘northoutside’);
% SPecificity comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_specificity ;…
Jindong_specificity;…
Public_Health_Dataset_specificity];
bar(cats, results);
ylabel(‘SPecificity Values (%)’);
legend(‘SPecificity’, ‘Location’, ‘northoutside’);
end
%To call the fuction we have the following codenin a separate file
% Metric values for the main model
Cleveland_accuracy = 99;
Cleveland_sensitivity = 97;
Cleveland_specificity = 100;
Cleveland_precision = 100;
Cleveland_fScore = 98;
Cleveland_mcc = 79;
% Metrics values for Jindong Feng et al model
Jindong_accuracy = 91.25;
Jindong_sensitivity = 91.54;
Jindong_specificity = 90.32;
% Metric values for the combined dataset model
Public_Health_Dataset_accuracy = 87;
Public_Health_Dataset_sensitivity = 77;
Public_Health_Dataset_specificity = 98;
Public_Health_Dataset_precision = 98;
Public_Health_Dataset_fScore = 86;
Public_Health_Dataset_mcc = 75;
% Call the plotResults function with metric values
plotResults(Cleveland_accuracy, Cleveland_sensitivity, Cleveland_specificity, …
Cleveland_precision, Cleveland_fScore, Cleveland_mcc, Public_Health_Dataset_accuracy, Public_Health_Dataset_sensitivity, Public_Health_Dataset_specificity, Public_Health_Dataset_precision, Public_Health_Dataset_fScore, Public_Health_Dataset_mcc, Jindong_accuracy, Jindong_sensitivity, Jindong_specificity); The code is working perfect, but all the bars are showing blue color by default, I want each bar to have a diffrent color. The code is divided into two files: The function part and the normal code
The Function file
function plotResults(Cleveland_accuracy, Cleveland_sensitivity, Cleveland_specificity, Cleveland_precision, Cleveland_fScore, Cleveland_mcc, Public_Health_Dataset_accuracy, Public_Health_Dataset_sensitivity, Public_Health_Dataset_specificity, Public_Health_Dataset_precision, Public_Health_Dataset_fScore, Public_Health_Dataset_mcc, Jindong_accuracy, Jindong_sensitivity, Jindong_specificity)
figure
cats = categorical({‘Cleveland Dataset’,’Public Health Dataset’});
cats = reordercats(cats, {‘Cleveland Dataset’,’Public Health Dataset’});
results = [Cleveland_accuracy Cleveland_sensitivity Cleveland_specificity Cleveland_precision Cleveland_fScore Cleveland_mcc;…
Public_Health_Dataset_accuracy Public_Health_Dataset_sensitivity Public_Health_Dataset_specificity Public_Health_Dataset_precision Public_Health_Dataset_fScore Public_Health_Dataset_mcc];
bar(cats, results);
ylabel(‘Metric Value (%)’);
legend(‘Accuracy’, ‘Sensitivity’, ‘Specificity’, ‘Precision’, …
‘F1-Score’, ‘Matthews correlation coefficient’, ‘Location’, ‘northoutside’);
% Accuracy comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_accuracy ;…
Jindong_accuracy;…
Public_Health_Dataset_accuracy];
bar(cats, results);
ylabel(‘Accuracy Values (%)’);
legend(‘Accuracy’, …
‘Location’, ‘northoutside’);
% Sensitivity comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_sensitivity ;…
Jindong_sensitivity;…
Public_Health_Dataset_sensitivity];
bar(cats, results);
ylabel(‘Sensitivity Values (%)’);
legend(‘Sensitivity’, ‘Location’, ‘northoutside’);
% SPecificity comparison for the three model
figure
cats = categorical({‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
cats = reordercats(cats, {‘Cleveland Model’, ‘Jindong et al Model’,’Public Health Model’});
results = [Cleveland_specificity ;…
Jindong_specificity;…
Public_Health_Dataset_specificity];
bar(cats, results);
ylabel(‘SPecificity Values (%)’);
legend(‘SPecificity’, ‘Location’, ‘northoutside’);
end
%To call the fuction we have the following codenin a separate file
% Metric values for the main model
Cleveland_accuracy = 99;
Cleveland_sensitivity = 97;
Cleveland_specificity = 100;
Cleveland_precision = 100;
Cleveland_fScore = 98;
Cleveland_mcc = 79;
% Metrics values for Jindong Feng et al model
Jindong_accuracy = 91.25;
Jindong_sensitivity = 91.54;
Jindong_specificity = 90.32;
% Metric values for the combined dataset model
Public_Health_Dataset_accuracy = 87;
Public_Health_Dataset_sensitivity = 77;
Public_Health_Dataset_specificity = 98;
Public_Health_Dataset_precision = 98;
Public_Health_Dataset_fScore = 86;
Public_Health_Dataset_mcc = 75;
% Call the plotResults function with metric values
plotResults(Cleveland_accuracy, Cleveland_sensitivity, Cleveland_specificity, …
Cleveland_precision, Cleveland_fScore, Cleveland_mcc, Public_Health_Dataset_accuracy, Public_Health_Dataset_sensitivity, Public_Health_Dataset_specificity, Public_Health_Dataset_precision, Public_Health_Dataset_fScore, Public_Health_Dataset_mcc, Jindong_accuracy, Jindong_sensitivity, Jindong_specificity); barplot, bar MATLAB Answers — New Questions
How to add hat in the plot legend?
I have a plot where I have to show the legend in the following way:
However, I have already made the plot and there is already a legend in the plot. I can not run the plot code again beacuse I have many plots to recreate. Is there any way that I can chang the legend within the plot itself by using propery inspector, plot browser, etc so that I don’t need to run the code again. The legend is already is tex form.I have a plot where I have to show the legend in the following way:
However, I have already made the plot and there is already a legend in the plot. I can not run the plot code again beacuse I have many plots to recreate. Is there any way that I can chang the legend within the plot itself by using propery inspector, plot browser, etc so that I don’t need to run the code again. The legend is already is tex form. I have a plot where I have to show the legend in the following way:
However, I have already made the plot and there is already a legend in the plot. I can not run the plot code again beacuse I have many plots to recreate. Is there any way that I can chang the legend within the plot itself by using propery inspector, plot browser, etc so that I don’t need to run the code again. The legend is already is tex form. plot, latex, text MATLAB Answers — New Questions
Opening .m Files on Linux
I am running Matlab 2021b with Ubuntu 20.04.3. I would like to be able to doubleclick .m files so that they automatically open in Matlab. The main problem is that right-clicking the file -> Properties -> Open With doesn’t show Matlab as an application.I am running Matlab 2021b with Ubuntu 20.04.3. I would like to be able to doubleclick .m files so that they automatically open in Matlab. The main problem is that right-clicking the file -> Properties -> Open With doesn’t show Matlab as an application. I am running Matlab 2021b with Ubuntu 20.04.3. I would like to be able to doubleclick .m files so that they automatically open in Matlab. The main problem is that right-clicking the file -> Properties -> Open With doesn’t show Matlab as an application. linux MATLAB Answers — New Questions
How to loop through a steering angle range given some array geometry and plot each 3D pattern?
I was watching one of the MATLAB Tech Talk videos about Beamforming, and in it, the speaker showed a clip of the result of a script he created that looped through the azimuth steering angles and smoothly plotted each 3D pattern for that steering angle. I would like to reproduce this but am having trouble in determining how to do this. I’ve linked the video in question, and I have linked my current code that simply defines my array geometry and plots the array’s 3D pattern. I’m relatively sure I can figure out how to loop through the 2D patterns after I figure out how to loop through the 3D pattern. Any help would be greatly appreciated.
Video: What are Phased Arrays? (Go to 15:48)
Code:
% MATLAB Code from Sensor Array Analyzer App
% Generated by MATLAB 23.2 and Phased Array System Toolbox 23.2
% Generated on 03-May-2024 12:59:05
% Create a uniform rectangular array
Array = phased.URA(‘Size’,[4 4],…
‘Lattice’,’Rectangular’,’ArrayNormal’,’x’);
Array.ElementSpacing = [0.08 0.08];
% Calculate Row taper
rwind = ones(1,4).’;
% Calculate Column taper
cwind = ones(1,4).’;
% Calculate taper
taper = rwind*cwind.’;
Array.Taper = taper.’;
% Create an omnidirectional microphone element
Elem = phased.OmnidirectionalMicrophoneElement;
Elem.FrequencyRange = [0 2000];
Array.Element = Elem;
% Assign Frequencies and Propagation Speed
Frequency = 2000;
PropagationSpeed = 343;
steering_azimuth = linspace(-90, 90, 1000);
steering_elevation = linspace(-90, 90, 1000);
% Assign Steering Angles
SteeringAngles = [0;0];
% Assign Phase shift quantization bits
PhaseShiftBits = 0;
% Calculate Steering Weights
Freq3D = 2000;
% Find the weights
w = zeros(getNumElements(Array), length(Frequency));
SteerVector = phased.SteeringVector(‘SensorArray’, Array,…
‘PropagationSpeed’, PropagationSpeed);
for idx = 1:length(Frequency)
w(:, idx) = step(SteerVector, Frequency(idx), SteeringAngles(:, idx));
end
% Plot 3d graph
format = ‘polar’;
plotType = ‘Directivity’;
figure;
pattern(Array, Freq3D , ‘PropagationSpeed’, PropagationSpeed,…
‘CoordinateSystem’, format,’weights’, w(:,1),…
‘ShowArray’,false,’ShowLocalCoordinates’,true,…
‘ShowColorbar’,true,’Orientation’,[0;0;0],…
‘Type’, plotType);I was watching one of the MATLAB Tech Talk videos about Beamforming, and in it, the speaker showed a clip of the result of a script he created that looped through the azimuth steering angles and smoothly plotted each 3D pattern for that steering angle. I would like to reproduce this but am having trouble in determining how to do this. I’ve linked the video in question, and I have linked my current code that simply defines my array geometry and plots the array’s 3D pattern. I’m relatively sure I can figure out how to loop through the 2D patterns after I figure out how to loop through the 3D pattern. Any help would be greatly appreciated.
Video: What are Phased Arrays? (Go to 15:48)
Code:
% MATLAB Code from Sensor Array Analyzer App
% Generated by MATLAB 23.2 and Phased Array System Toolbox 23.2
% Generated on 03-May-2024 12:59:05
% Create a uniform rectangular array
Array = phased.URA(‘Size’,[4 4],…
‘Lattice’,’Rectangular’,’ArrayNormal’,’x’);
Array.ElementSpacing = [0.08 0.08];
% Calculate Row taper
rwind = ones(1,4).’;
% Calculate Column taper
cwind = ones(1,4).’;
% Calculate taper
taper = rwind*cwind.’;
Array.Taper = taper.’;
% Create an omnidirectional microphone element
Elem = phased.OmnidirectionalMicrophoneElement;
Elem.FrequencyRange = [0 2000];
Array.Element = Elem;
% Assign Frequencies and Propagation Speed
Frequency = 2000;
PropagationSpeed = 343;
steering_azimuth = linspace(-90, 90, 1000);
steering_elevation = linspace(-90, 90, 1000);
% Assign Steering Angles
SteeringAngles = [0;0];
% Assign Phase shift quantization bits
PhaseShiftBits = 0;
% Calculate Steering Weights
Freq3D = 2000;
% Find the weights
w = zeros(getNumElements(Array), length(Frequency));
SteerVector = phased.SteeringVector(‘SensorArray’, Array,…
‘PropagationSpeed’, PropagationSpeed);
for idx = 1:length(Frequency)
w(:, idx) = step(SteerVector, Frequency(idx), SteeringAngles(:, idx));
end
% Plot 3d graph
format = ‘polar’;
plotType = ‘Directivity’;
figure;
pattern(Array, Freq3D , ‘PropagationSpeed’, PropagationSpeed,…
‘CoordinateSystem’, format,’weights’, w(:,1),…
‘ShowArray’,false,’ShowLocalCoordinates’,true,…
‘ShowColorbar’,true,’Orientation’,[0;0;0],…
‘Type’, plotType); I was watching one of the MATLAB Tech Talk videos about Beamforming, and in it, the speaker showed a clip of the result of a script he created that looped through the azimuth steering angles and smoothly plotted each 3D pattern for that steering angle. I would like to reproduce this but am having trouble in determining how to do this. I’ve linked the video in question, and I have linked my current code that simply defines my array geometry and plots the array’s 3D pattern. I’m relatively sure I can figure out how to loop through the 2D patterns after I figure out how to loop through the 3D pattern. Any help would be greatly appreciated.
Video: What are Phased Arrays? (Go to 15:48)
Code:
% MATLAB Code from Sensor Array Analyzer App
% Generated by MATLAB 23.2 and Phased Array System Toolbox 23.2
% Generated on 03-May-2024 12:59:05
% Create a uniform rectangular array
Array = phased.URA(‘Size’,[4 4],…
‘Lattice’,’Rectangular’,’ArrayNormal’,’x’);
Array.ElementSpacing = [0.08 0.08];
% Calculate Row taper
rwind = ones(1,4).’;
% Calculate Column taper
cwind = ones(1,4).’;
% Calculate taper
taper = rwind*cwind.’;
Array.Taper = taper.’;
% Create an omnidirectional microphone element
Elem = phased.OmnidirectionalMicrophoneElement;
Elem.FrequencyRange = [0 2000];
Array.Element = Elem;
% Assign Frequencies and Propagation Speed
Frequency = 2000;
PropagationSpeed = 343;
steering_azimuth = linspace(-90, 90, 1000);
steering_elevation = linspace(-90, 90, 1000);
% Assign Steering Angles
SteeringAngles = [0;0];
% Assign Phase shift quantization bits
PhaseShiftBits = 0;
% Calculate Steering Weights
Freq3D = 2000;
% Find the weights
w = zeros(getNumElements(Array), length(Frequency));
SteerVector = phased.SteeringVector(‘SensorArray’, Array,…
‘PropagationSpeed’, PropagationSpeed);
for idx = 1:length(Frequency)
w(:, idx) = step(SteerVector, Frequency(idx), SteeringAngles(:, idx));
end
% Plot 3d graph
format = ‘polar’;
plotType = ‘Directivity’;
figure;
pattern(Array, Freq3D , ‘PropagationSpeed’, PropagationSpeed,…
‘CoordinateSystem’, format,’weights’, w(:,1),…
‘ShowArray’,false,’ShowLocalCoordinates’,true,…
‘ShowColorbar’,true,’Orientation’,[0;0;0],…
‘Type’, plotType); toolbox, plotting, phased arrays, 3d plots, graphics MATLAB Answers — New Questions
I get a robust controller result using musyn that is empty; “Krob = [ ]”.
Below is a Live Editor script of a simple mass/spring/damper system that I’m trying to design a robust controller using the musyn command. This work follows the example in Zhou and Doyle, Essentials of Robust Control, and www.youtube.com/@artcellCTRL. I am unable to figure out why I get the "Krob = []" output (see the output at the end of the script). The ‘K Step’, ‘Peak MU’, ‘D Fit’ are Inf, and the ‘D’ result is NaN in the D-K interation. I don’t understand what the problem is.
Thanks so much.
clear all;close all;clc;
Simple spring/mass/damper system is described as follows:
This system can be represented by the following differential equation of motion:
and represented by the following continuous time block diagram and state-space representation:
with m = mass of the block, k = spring constant and c = damping coefficient.
We wish to represent the parameters m, k and c with uncertainty using Eta and Delta. Where Delta will be set to vary between 0-1, and Eta will set the limit of the total variation (e.g., maximum percent variation) using the ‘ultidyn’ command:
delta_m = ureal("delta_m",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
delta_k = ureal("deltal_k",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
delta_c = ureal("delta_c",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
%
Setting Eta at 10% maximum variation:
eta_m=0.1;% vary 10%
eta_k=0.1;% vary 10%
eta_c=0.1;% vary 10%
Re-drawing the block diagram to include the variation of the parameters:
Expanding the block diagram for c and k:
Next, we label all of the block connections along with defining the dummy block ap1 to ensure each block I/O have a unique identifier and labeling the 1/s blocks a1 and a2:
ap1=ss(1);
ap1.u=’s1′;
ap1.y=’yx1′;
a1=tf([1],[1 0]);% 1/s term
a1.u=’s2′;
a1.y=’s1′;
%
a2=tf([1],[1 0]);% 1/s term
a2.u=’s8′;
a2.y=’s2′;
Sum1=sumblk(‘s7=s9+u’);
Sum2=sumblk(‘s9=s4+s3’);
Next, we define the LFT of the uncertain parameter blocks:
(See Zhou and Doyle, Essentials of Robust Control pp166)
Next, we define each LFT block and code into Matlab:
MASS:
m0=1;
Mm=[-eta_m, 1;-eta_m/m0, 1/m0 ]; %
Mm_sys=ss(Mm);
Mm_sys.u={‘um’,’s7′};
Mm_sys.y={‘ym’,’s8′};
SPRING CONSTANT, k:
k0=1;
Mk=[k0*eta_k, 0;k0, 1];
Mk_sys=ss(Mk);
Mk_sys.u={‘uk’,’s1′};
Mk_sys.y={‘yk’,’s3′};
DAMPING COEFFICIENT, c0:
c0=1;
Mc=[c0*eta_c, 0;c0, 1];
Mc_sys=ss(Mc);
Mc_sys.u={‘uc’,’s2′};
Mc_sys.y={‘yc’,’s4′};
Next, we re-draw the LFT block diagram and set up the operation of ‘Pulling Out the Deltas’ for the Mu Synthesis architecture:
Pulling Out the Deltas:
Pulling out the deltas, forming the delta matrix block and defining the I/O for the mu synthesis architecture:
Adding a reference input, r and generating an error output of the position state, x1, along with pulling out the velocity state x2 of the system.
%
Sum3=sumblk(‘ye=r-yx1’);
%
ap2=ss(1);
ap2.u=’s2′;
ap2.y=’yx2′;
Now we form the delta block:
delta_mtx=[delta_m, 0, 0;0, delta_c, 0;0 , 0, delta_k];
delta_sys=ss(delta_mtx);
delta_sys.u={‘ym’,’yc’,’yk’};
delta_sys.y={‘um’,’uc’,’uk’};
Next, we connect all of the components to form the Mu Synthesis architecture, adding, for reference, the feedback K block that will be calculated with the musyn command later on:
P1=connect(a1,a2,Mm_sys,Mk_sys,Mc_sys,Sum1,Sum2,ap1,ap2,delta_sys,Sum3, {‘um’,’uc’,’uk’,’u’,’r’},{‘ym’,’yc’,’yk’,’ye’,’u’,’ye’,’yx2′});
For reference, the input/output of the Mu Synthesis block in the Matlab ‘connect’ command is as follows:
Next, to simplify, we ignore the delta terms and allow them to be lumped into the final Mu Synthesis block so we only have w = {‘r’}, and u = {‘u’} as inputs and z = {‘ye’, ‘u’}, and y = {‘ye’, ‘yx2’} as the outputs to form the final Mu Synthesis block P2:
Now we re-write the connect command for P2 (which is the same as the one for P1, but with w = {‘r’}, and u = {‘u’} as inputs and z = {‘ye’, ‘u’}, and y = {‘ye’, ‘yx2’} as the outputs):
P2=connect(a1,a2,Mm_sys,Mk_sys,Mc_sys,Sum1,Sum2,ap1,ap2,delta_sys,Sum3,{‘u’,’r’},{‘ye’,’u’,’ye’,’yx2′});
The resultant connect command I/O and block function is as follows:
Finally, we setup the musyn command by defining the number of outputs, ‘ncont’ and the number of measured states as inputs, ‘nmeas’ of the controller, K and executing the musyn command:
%
ncont = 1; % one control signal, ‘u’
nmeas = 2; % 2 measurement signals,’ye’ and ‘yx2’
%
[Krob,CLperf] = musyn(P2,nmeas,ncont)
After running the script, I get the output shown below. I don’t understand why. I tried changing the mass, damper and spring constant parameters, but I still get the same output.
Any ideas as to what is going on?
************
D-K ITERATION SUMMARY:
—————————————————————–
Robust performance Fit order
—————————————————————–
Iter K Step Peak MU D Fit D
1 Inf Inf Inf NaN
Best achieved robust performance: Inf
Krob =
[]
************Below is a Live Editor script of a simple mass/spring/damper system that I’m trying to design a robust controller using the musyn command. This work follows the example in Zhou and Doyle, Essentials of Robust Control, and www.youtube.com/@artcellCTRL. I am unable to figure out why I get the "Krob = []" output (see the output at the end of the script). The ‘K Step’, ‘Peak MU’, ‘D Fit’ are Inf, and the ‘D’ result is NaN in the D-K interation. I don’t understand what the problem is.
Thanks so much.
clear all;close all;clc;
Simple spring/mass/damper system is described as follows:
This system can be represented by the following differential equation of motion:
and represented by the following continuous time block diagram and state-space representation:
with m = mass of the block, k = spring constant and c = damping coefficient.
We wish to represent the parameters m, k and c with uncertainty using Eta and Delta. Where Delta will be set to vary between 0-1, and Eta will set the limit of the total variation (e.g., maximum percent variation) using the ‘ultidyn’ command:
delta_m = ureal("delta_m",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
delta_k = ureal("deltal_k",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
delta_c = ureal("delta_c",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
%
Setting Eta at 10% maximum variation:
eta_m=0.1;% vary 10%
eta_k=0.1;% vary 10%
eta_c=0.1;% vary 10%
Re-drawing the block diagram to include the variation of the parameters:
Expanding the block diagram for c and k:
Next, we label all of the block connections along with defining the dummy block ap1 to ensure each block I/O have a unique identifier and labeling the 1/s blocks a1 and a2:
ap1=ss(1);
ap1.u=’s1′;
ap1.y=’yx1′;
a1=tf([1],[1 0]);% 1/s term
a1.u=’s2′;
a1.y=’s1′;
%
a2=tf([1],[1 0]);% 1/s term
a2.u=’s8′;
a2.y=’s2′;
Sum1=sumblk(‘s7=s9+u’);
Sum2=sumblk(‘s9=s4+s3’);
Next, we define the LFT of the uncertain parameter blocks:
(See Zhou and Doyle, Essentials of Robust Control pp166)
Next, we define each LFT block and code into Matlab:
MASS:
m0=1;
Mm=[-eta_m, 1;-eta_m/m0, 1/m0 ]; %
Mm_sys=ss(Mm);
Mm_sys.u={‘um’,’s7′};
Mm_sys.y={‘ym’,’s8′};
SPRING CONSTANT, k:
k0=1;
Mk=[k0*eta_k, 0;k0, 1];
Mk_sys=ss(Mk);
Mk_sys.u={‘uk’,’s1′};
Mk_sys.y={‘yk’,’s3′};
DAMPING COEFFICIENT, c0:
c0=1;
Mc=[c0*eta_c, 0;c0, 1];
Mc_sys=ss(Mc);
Mc_sys.u={‘uc’,’s2′};
Mc_sys.y={‘yc’,’s4′};
Next, we re-draw the LFT block diagram and set up the operation of ‘Pulling Out the Deltas’ for the Mu Synthesis architecture:
Pulling Out the Deltas:
Pulling out the deltas, forming the delta matrix block and defining the I/O for the mu synthesis architecture:
Adding a reference input, r and generating an error output of the position state, x1, along with pulling out the velocity state x2 of the system.
%
Sum3=sumblk(‘ye=r-yx1’);
%
ap2=ss(1);
ap2.u=’s2′;
ap2.y=’yx2′;
Now we form the delta block:
delta_mtx=[delta_m, 0, 0;0, delta_c, 0;0 , 0, delta_k];
delta_sys=ss(delta_mtx);
delta_sys.u={‘ym’,’yc’,’yk’};
delta_sys.y={‘um’,’uc’,’uk’};
Next, we connect all of the components to form the Mu Synthesis architecture, adding, for reference, the feedback K block that will be calculated with the musyn command later on:
P1=connect(a1,a2,Mm_sys,Mk_sys,Mc_sys,Sum1,Sum2,ap1,ap2,delta_sys,Sum3, {‘um’,’uc’,’uk’,’u’,’r’},{‘ym’,’yc’,’yk’,’ye’,’u’,’ye’,’yx2′});
For reference, the input/output of the Mu Synthesis block in the Matlab ‘connect’ command is as follows:
Next, to simplify, we ignore the delta terms and allow them to be lumped into the final Mu Synthesis block so we only have w = {‘r’}, and u = {‘u’} as inputs and z = {‘ye’, ‘u’}, and y = {‘ye’, ‘yx2’} as the outputs to form the final Mu Synthesis block P2:
Now we re-write the connect command for P2 (which is the same as the one for P1, but with w = {‘r’}, and u = {‘u’} as inputs and z = {‘ye’, ‘u’}, and y = {‘ye’, ‘yx2’} as the outputs):
P2=connect(a1,a2,Mm_sys,Mk_sys,Mc_sys,Sum1,Sum2,ap1,ap2,delta_sys,Sum3,{‘u’,’r’},{‘ye’,’u’,’ye’,’yx2′});
The resultant connect command I/O and block function is as follows:
Finally, we setup the musyn command by defining the number of outputs, ‘ncont’ and the number of measured states as inputs, ‘nmeas’ of the controller, K and executing the musyn command:
%
ncont = 1; % one control signal, ‘u’
nmeas = 2; % 2 measurement signals,’ye’ and ‘yx2’
%
[Krob,CLperf] = musyn(P2,nmeas,ncont)
After running the script, I get the output shown below. I don’t understand why. I tried changing the mass, damper and spring constant parameters, but I still get the same output.
Any ideas as to what is going on?
************
D-K ITERATION SUMMARY:
—————————————————————–
Robust performance Fit order
—————————————————————–
Iter K Step Peak MU D Fit D
1 Inf Inf Inf NaN
Best achieved robust performance: Inf
Krob =
[]
************ Below is a Live Editor script of a simple mass/spring/damper system that I’m trying to design a robust controller using the musyn command. This work follows the example in Zhou and Doyle, Essentials of Robust Control, and www.youtube.com/@artcellCTRL. I am unable to figure out why I get the "Krob = []" output (see the output at the end of the script). The ‘K Step’, ‘Peak MU’, ‘D Fit’ are Inf, and the ‘D’ result is NaN in the D-K interation. I don’t understand what the problem is.
Thanks so much.
clear all;close all;clc;
Simple spring/mass/damper system is described as follows:
This system can be represented by the following differential equation of motion:
and represented by the following continuous time block diagram and state-space representation:
with m = mass of the block, k = spring constant and c = damping coefficient.
We wish to represent the parameters m, k and c with uncertainty using Eta and Delta. Where Delta will be set to vary between 0-1, and Eta will set the limit of the total variation (e.g., maximum percent variation) using the ‘ultidyn’ command:
delta_m = ureal("delta_m",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
delta_k = ureal("deltal_k",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
delta_c = ureal("delta_c",1,’PlusMinus’,1);% Uncertain LTI dynamics, +/-1
%
Setting Eta at 10% maximum variation:
eta_m=0.1;% vary 10%
eta_k=0.1;% vary 10%
eta_c=0.1;% vary 10%
Re-drawing the block diagram to include the variation of the parameters:
Expanding the block diagram for c and k:
Next, we label all of the block connections along with defining the dummy block ap1 to ensure each block I/O have a unique identifier and labeling the 1/s blocks a1 and a2:
ap1=ss(1);
ap1.u=’s1′;
ap1.y=’yx1′;
a1=tf([1],[1 0]);% 1/s term
a1.u=’s2′;
a1.y=’s1′;
%
a2=tf([1],[1 0]);% 1/s term
a2.u=’s8′;
a2.y=’s2′;
Sum1=sumblk(‘s7=s9+u’);
Sum2=sumblk(‘s9=s4+s3’);
Next, we define the LFT of the uncertain parameter blocks:
(See Zhou and Doyle, Essentials of Robust Control pp166)
Next, we define each LFT block and code into Matlab:
MASS:
m0=1;
Mm=[-eta_m, 1;-eta_m/m0, 1/m0 ]; %
Mm_sys=ss(Mm);
Mm_sys.u={‘um’,’s7′};
Mm_sys.y={‘ym’,’s8′};
SPRING CONSTANT, k:
k0=1;
Mk=[k0*eta_k, 0;k0, 1];
Mk_sys=ss(Mk);
Mk_sys.u={‘uk’,’s1′};
Mk_sys.y={‘yk’,’s3′};
DAMPING COEFFICIENT, c0:
c0=1;
Mc=[c0*eta_c, 0;c0, 1];
Mc_sys=ss(Mc);
Mc_sys.u={‘uc’,’s2′};
Mc_sys.y={‘yc’,’s4′};
Next, we re-draw the LFT block diagram and set up the operation of ‘Pulling Out the Deltas’ for the Mu Synthesis architecture:
Pulling Out the Deltas:
Pulling out the deltas, forming the delta matrix block and defining the I/O for the mu synthesis architecture:
Adding a reference input, r and generating an error output of the position state, x1, along with pulling out the velocity state x2 of the system.
%
Sum3=sumblk(‘ye=r-yx1’);
%
ap2=ss(1);
ap2.u=’s2′;
ap2.y=’yx2′;
Now we form the delta block:
delta_mtx=[delta_m, 0, 0;0, delta_c, 0;0 , 0, delta_k];
delta_sys=ss(delta_mtx);
delta_sys.u={‘ym’,’yc’,’yk’};
delta_sys.y={‘um’,’uc’,’uk’};
Next, we connect all of the components to form the Mu Synthesis architecture, adding, for reference, the feedback K block that will be calculated with the musyn command later on:
P1=connect(a1,a2,Mm_sys,Mk_sys,Mc_sys,Sum1,Sum2,ap1,ap2,delta_sys,Sum3, {‘um’,’uc’,’uk’,’u’,’r’},{‘ym’,’yc’,’yk’,’ye’,’u’,’ye’,’yx2′});
For reference, the input/output of the Mu Synthesis block in the Matlab ‘connect’ command is as follows:
Next, to simplify, we ignore the delta terms and allow them to be lumped into the final Mu Synthesis block so we only have w = {‘r’}, and u = {‘u’} as inputs and z = {‘ye’, ‘u’}, and y = {‘ye’, ‘yx2’} as the outputs to form the final Mu Synthesis block P2:
Now we re-write the connect command for P2 (which is the same as the one for P1, but with w = {‘r’}, and u = {‘u’} as inputs and z = {‘ye’, ‘u’}, and y = {‘ye’, ‘yx2’} as the outputs):
P2=connect(a1,a2,Mm_sys,Mk_sys,Mc_sys,Sum1,Sum2,ap1,ap2,delta_sys,Sum3,{‘u’,’r’},{‘ye’,’u’,’ye’,’yx2′});
The resultant connect command I/O and block function is as follows:
Finally, we setup the musyn command by defining the number of outputs, ‘ncont’ and the number of measured states as inputs, ‘nmeas’ of the controller, K and executing the musyn command:
%
ncont = 1; % one control signal, ‘u’
nmeas = 2; % 2 measurement signals,’ye’ and ‘yx2’
%
[Krob,CLperf] = musyn(P2,nmeas,ncont)
After running the script, I get the output shown below. I don’t understand why. I tried changing the mass, damper and spring constant parameters, but I still get the same output.
Any ideas as to what is going on?
************
D-K ITERATION SUMMARY:
—————————————————————–
Robust performance Fit order
—————————————————————–
Iter K Step Peak MU D Fit D
1 Inf Inf Inf NaN
Best achieved robust performance: Inf
Krob =
[]
************ robust control, musyn MATLAB Answers — New Questions
How to avoid patch color in legend?
Sorry , i can to send only you a little piece of code..
here "
plot(Ax_Eq,XDates(xx_:end),TE_strum(xx_:end,i)’,’Color’,"black",’LineWidth’,width_arr(i));
(SECOND PLOT)
i plot with another color the the last part of equity
Problem is the legend:
Some are colored black in the legend.. Instead I only want the legend like those of the initial plot (FIRST PLOT)
("
plot(Ax_Eq,XDates,TE_strum(:,i)’,’DisplayName’,STR_name{i},’Color’,col(i,:),’LineWidth’,width_arr(i));
")
for i=1:c
if STR_type(i)==1 %%se sono aggregate
SumCTR_color(b(i),:)= col(i,:); %%cosi nel draw del SumCTR_strum gli do il colore uguale
end
%%********* FIRST PLOT ***********************
plot(Ax_Eq,XDates,TE_strum(:,i)’,’DisplayName’,STR_name{i},’Color’,col(i,:),’LineWidth’,width_arr(i));
%%**********************************************
text(Ax_Eq,r-2,TE_strum(end,i),strcat({‘ ‘},num2str(i)),’Color’,col(i,:),’Interpreter’,’none’);
if app.OOScolorCheckBox.Value %%mi colora di nero da dove inizia solo l’OOS (se ci sono 4 sistemi prende l’OOS piu’ recente!!)!
oos=datetime(string({app.Sis.OOS}),’Format’,’dd/MM/yyyy’);
xx=cell2mat(app.Seraf_T(:,3));
[~,xx_]=find(max(oos(xx))==XDates); %%max perche prendo l’OOS piu’ recente!
%%********* SECOND PLOT ***********************
plot(Ax_Eq,XDates(xx_:end),TE_strum(xx_:end,i)’,’Color’,"black",’LineWidth’,width_arr(i));
%%***************************************
end
%%******************************
end
%%*************************
nm=Convert_ArrayDouble_StringDollar_Struct(TE_strum(end,:)’,0);
tm=compose("%s", Ntrad_strum’);
leg=strcat(string(1:c)’,{‘ – ‘},string(STR_name),"==>",nm," ",tm);
legend(Ax_Eq,leg,’Location’,’northwest’,’Interpreter’,’none’,’Box’,’off’);Sorry , i can to send only you a little piece of code..
here "
plot(Ax_Eq,XDates(xx_:end),TE_strum(xx_:end,i)’,’Color’,"black",’LineWidth’,width_arr(i));
(SECOND PLOT)
i plot with another color the the last part of equity
Problem is the legend:
Some are colored black in the legend.. Instead I only want the legend like those of the initial plot (FIRST PLOT)
("
plot(Ax_Eq,XDates,TE_strum(:,i)’,’DisplayName’,STR_name{i},’Color’,col(i,:),’LineWidth’,width_arr(i));
")
for i=1:c
if STR_type(i)==1 %%se sono aggregate
SumCTR_color(b(i),:)= col(i,:); %%cosi nel draw del SumCTR_strum gli do il colore uguale
end
%%********* FIRST PLOT ***********************
plot(Ax_Eq,XDates,TE_strum(:,i)’,’DisplayName’,STR_name{i},’Color’,col(i,:),’LineWidth’,width_arr(i));
%%**********************************************
text(Ax_Eq,r-2,TE_strum(end,i),strcat({‘ ‘},num2str(i)),’Color’,col(i,:),’Interpreter’,’none’);
if app.OOScolorCheckBox.Value %%mi colora di nero da dove inizia solo l’OOS (se ci sono 4 sistemi prende l’OOS piu’ recente!!)!
oos=datetime(string({app.Sis.OOS}),’Format’,’dd/MM/yyyy’);
xx=cell2mat(app.Seraf_T(:,3));
[~,xx_]=find(max(oos(xx))==XDates); %%max perche prendo l’OOS piu’ recente!
%%********* SECOND PLOT ***********************
plot(Ax_Eq,XDates(xx_:end),TE_strum(xx_:end,i)’,’Color’,"black",’LineWidth’,width_arr(i));
%%***************************************
end
%%******************************
end
%%*************************
nm=Convert_ArrayDouble_StringDollar_Struct(TE_strum(end,:)’,0);
tm=compose("%s", Ntrad_strum’);
leg=strcat(string(1:c)’,{‘ – ‘},string(STR_name),"==>",nm," ",tm);
legend(Ax_Eq,leg,’Location’,’northwest’,’Interpreter’,’none’,’Box’,’off’); Sorry , i can to send only you a little piece of code..
here "
plot(Ax_Eq,XDates(xx_:end),TE_strum(xx_:end,i)’,’Color’,"black",’LineWidth’,width_arr(i));
(SECOND PLOT)
i plot with another color the the last part of equity
Problem is the legend:
Some are colored black in the legend.. Instead I only want the legend like those of the initial plot (FIRST PLOT)
("
plot(Ax_Eq,XDates,TE_strum(:,i)’,’DisplayName’,STR_name{i},’Color’,col(i,:),’LineWidth’,width_arr(i));
")
for i=1:c
if STR_type(i)==1 %%se sono aggregate
SumCTR_color(b(i),:)= col(i,:); %%cosi nel draw del SumCTR_strum gli do il colore uguale
end
%%********* FIRST PLOT ***********************
plot(Ax_Eq,XDates,TE_strum(:,i)’,’DisplayName’,STR_name{i},’Color’,col(i,:),’LineWidth’,width_arr(i));
%%**********************************************
text(Ax_Eq,r-2,TE_strum(end,i),strcat({‘ ‘},num2str(i)),’Color’,col(i,:),’Interpreter’,’none’);
if app.OOScolorCheckBox.Value %%mi colora di nero da dove inizia solo l’OOS (se ci sono 4 sistemi prende l’OOS piu’ recente!!)!
oos=datetime(string({app.Sis.OOS}),’Format’,’dd/MM/yyyy’);
xx=cell2mat(app.Seraf_T(:,3));
[~,xx_]=find(max(oos(xx))==XDates); %%max perche prendo l’OOS piu’ recente!
%%********* SECOND PLOT ***********************
plot(Ax_Eq,XDates(xx_:end),TE_strum(xx_:end,i)’,’Color’,"black",’LineWidth’,width_arr(i));
%%***************************************
end
%%******************************
end
%%*************************
nm=Convert_ArrayDouble_StringDollar_Struct(TE_strum(end,:)’,0);
tm=compose("%s", Ntrad_strum’);
leg=strcat(string(1:c)’,{‘ – ‘},string(STR_name),"==>",nm," ",tm);
legend(Ax_Eq,leg,’Location’,’northwest’,’Interpreter’,’none’,’Box’,’off’); how to avoid patch color in legend? MATLAB Answers — New Questions
i want to make MATLAB function in Simulink to read one cell from excel sheet every period of time after run this code give me that error Brace indexing is not supported for v
function object = readFromXls(ReadFlag)
coder.extrinsic(‘readcell’);
coder.extrinsic(‘str2num’);
coder.extrinsic(‘cellfun’);
coder.extrinsic(‘cell2mat’);
data = 0;
object = 0;
if ReadFlag == 1
excelFilePath = ‘YOLO_Object_Type.xlsx’;
% Read data from the Excel file
data = cell2mat(excelFilePath);
%iwant = cellfun(@cell2mat,data)
object = data;
else
object =0;
endfunction object = readFromXls(ReadFlag)
coder.extrinsic(‘readcell’);
coder.extrinsic(‘str2num’);
coder.extrinsic(‘cellfun’);
coder.extrinsic(‘cell2mat’);
data = 0;
object = 0;
if ReadFlag == 1
excelFilePath = ‘YOLO_Object_Type.xlsx’;
% Read data from the Excel file
data = cell2mat(excelFilePath);
%iwant = cellfun(@cell2mat,data)
object = data;
else
object =0;
end function object = readFromXls(ReadFlag)
coder.extrinsic(‘readcell’);
coder.extrinsic(‘str2num’);
coder.extrinsic(‘cellfun’);
coder.extrinsic(‘cell2mat’);
data = 0;
object = 0;
if ReadFlag == 1
excelFilePath = ‘YOLO_Object_Type.xlsx’;
% Read data from the Excel file
data = cell2mat(excelFilePath);
%iwant = cellfun(@cell2mat,data)
object = data;
else
object =0;
end simulink, matlab function MATLAB Answers — New Questions
How to set the default documentation location to “Locally Installed” at the time of installation?
We install a good number of copies of Matlab in a classified air-gapped network without internet connection. Thus the help documentation will need to be installed locally. I don’t know since when the default documentation location has been changed to "Web", which becomes a burden for our users and admins to sort out this small settings. I figured it will be super if we can set the default documentation location to "Locally Installed" up front at the time of installation, using the installer answer file or alike.
Can someone help us?
Thank you.We install a good number of copies of Matlab in a classified air-gapped network without internet connection. Thus the help documentation will need to be installed locally. I don’t know since when the default documentation location has been changed to "Web", which becomes a burden for our users and admins to sort out this small settings. I figured it will be super if we can set the default documentation location to "Locally Installed" up front at the time of installation, using the installer answer file or alike.
Can someone help us?
Thank you. We install a good number of copies of Matlab in a classified air-gapped network without internet connection. Thus the help documentation will need to be installed locally. I don’t know since when the default documentation location has been changed to "Web", which becomes a burden for our users and admins to sort out this small settings. I figured it will be super if we can set the default documentation location to "Locally Installed" up front at the time of installation, using the installer answer file or alike.
Can someone help us?
Thank you. matlab, documentation, help, default, environment MATLAB Answers — New Questions
particle size and shape analysis
Hi,
I am an intern that is totally new to MATLAB, but I have been tasked to develop a system for particle analysis.
The particle samples, such as sand, salt, or coffee beans, are to be supplied via a controllable
conveyor belt with an adjustable speed. I should develop computer vision algorithms for particle size and shape analysis.
It would be great if anyone can provide me with some help.Hi,
I am an intern that is totally new to MATLAB, but I have been tasked to develop a system for particle analysis.
The particle samples, such as sand, salt, or coffee beans, are to be supplied via a controllable
conveyor belt with an adjustable speed. I should develop computer vision algorithms for particle size and shape analysis.
It would be great if anyone can provide me with some help. Hi,
I am an intern that is totally new to MATLAB, but I have been tasked to develop a system for particle analysis.
The particle samples, such as sand, salt, or coffee beans, are to be supplied via a controllable
conveyor belt with an adjustable speed. I should develop computer vision algorithms for particle size and shape analysis.
It would be great if anyone can provide me with some help. particle size and shape analysis, computer vision algorithms, digital image processing, classification, neural network, deep learning MATLAB Answers — New Questions