Tag Archives: matlab
looping thru multiple line data in UIAxes plot and writing all X,Y data to an array
Hello, i have a set of line plots on a UIAxes on a UIFigure using Appdesigner.
Note each plot has differing X coordinates
I want a way to be able to save all these plots so that I can revisit later and add further plots to it.
The approach I was going to take was to access the line objects and loop through assigning each X,Y datat set to a data array that I could save out and then recal at a later date.
ax=app.UIAxes;
L=ax.XLim;
L2=L(2); % Get max number on x-axis
h1 = findall(ax, ‘type’, ‘line’) % Get just line objects for now
n=numel(h1); % Number of line plots (will do text objectes later)
H=nan(L2,2*n) % Create an array of Nans to hold all data (row,cols)
% Each line requires its X data to be saved also
Now loop thru’ all line items and splat the X,Y data to the array
for(i=1:n)
t = h1(i)
H(:,(2*i)-1)=(t.XData)’;
H(:,2*i)=(t.YData)’;
end
H
But Im getting the following error
Unable to perform assignment because the size of the left side is 120-by-1 and the size of the right side is 100-by-1.
Error in GenericDataAnalysis/ReadHeadersButtonPushed (line 533)
H(:,(2*i)-1)=(t.XData)’;
I suspect its to do with non-equal length of data sets. Perhaps I need some sort of padding for the missing data?
This is my current output:
L2 =
120
h1 =
7×1 Line array:
Line (20s Delay)
Line (15s Delay)
Line (9s Delay)
Line (5s Delay)
Line (2s Delay)
Line (FC Top)
Line (FC Btm)
The second part of my question, is whats the best approach to retain the colours and text objects?
Remember, i don’t just want the graphic saved, I want to be able to add data to it later from within my GUI.
Thanks
JasonHello, i have a set of line plots on a UIAxes on a UIFigure using Appdesigner.
Note each plot has differing X coordinates
I want a way to be able to save all these plots so that I can revisit later and add further plots to it.
The approach I was going to take was to access the line objects and loop through assigning each X,Y datat set to a data array that I could save out and then recal at a later date.
ax=app.UIAxes;
L=ax.XLim;
L2=L(2); % Get max number on x-axis
h1 = findall(ax, ‘type’, ‘line’) % Get just line objects for now
n=numel(h1); % Number of line plots (will do text objectes later)
H=nan(L2,2*n) % Create an array of Nans to hold all data (row,cols)
% Each line requires its X data to be saved also
Now loop thru’ all line items and splat the X,Y data to the array
for(i=1:n)
t = h1(i)
H(:,(2*i)-1)=(t.XData)’;
H(:,2*i)=(t.YData)’;
end
H
But Im getting the following error
Unable to perform assignment because the size of the left side is 120-by-1 and the size of the right side is 100-by-1.
Error in GenericDataAnalysis/ReadHeadersButtonPushed (line 533)
H(:,(2*i)-1)=(t.XData)’;
I suspect its to do with non-equal length of data sets. Perhaps I need some sort of padding for the missing data?
This is my current output:
L2 =
120
h1 =
7×1 Line array:
Line (20s Delay)
Line (15s Delay)
Line (9s Delay)
Line (5s Delay)
Line (2s Delay)
Line (FC Top)
Line (FC Btm)
The second part of my question, is whats the best approach to retain the colours and text objects?
Remember, i don’t just want the graphic saved, I want to be able to add data to it later from within my GUI.
Thanks
Jason Hello, i have a set of line plots on a UIAxes on a UIFigure using Appdesigner.
Note each plot has differing X coordinates
I want a way to be able to save all these plots so that I can revisit later and add further plots to it.
The approach I was going to take was to access the line objects and loop through assigning each X,Y datat set to a data array that I could save out and then recal at a later date.
ax=app.UIAxes;
L=ax.XLim;
L2=L(2); % Get max number on x-axis
h1 = findall(ax, ‘type’, ‘line’) % Get just line objects for now
n=numel(h1); % Number of line plots (will do text objectes later)
H=nan(L2,2*n) % Create an array of Nans to hold all data (row,cols)
% Each line requires its X data to be saved also
Now loop thru’ all line items and splat the X,Y data to the array
for(i=1:n)
t = h1(i)
H(:,(2*i)-1)=(t.XData)’;
H(:,2*i)=(t.YData)’;
end
H
But Im getting the following error
Unable to perform assignment because the size of the left side is 120-by-1 and the size of the right side is 100-by-1.
Error in GenericDataAnalysis/ReadHeadersButtonPushed (line 533)
H(:,(2*i)-1)=(t.XData)’;
I suspect its to do with non-equal length of data sets. Perhaps I need some sort of padding for the missing data?
This is my current output:
L2 =
120
h1 =
7×1 Line array:
Line (20s Delay)
Line (15s Delay)
Line (9s Delay)
Line (5s Delay)
Line (2s Delay)
Line (FC Top)
Line (FC Btm)
The second part of my question, is whats the best approach to retain the colours and text objects?
Remember, i don’t just want the graphic saved, I want to be able to add data to it later from within my GUI.
Thanks
Jason uiaxes, plot MATLAB Answers — New Questions
finding value in 2d array function of x and y
Hi all, I realise this may be the first time I ask a question even though I’ve been using the forum for 12 years. Kudos to you for asking every question and answering everything that ever crossed my mind. Here’s my question:
Input data:
I have two vectors, Torque effmap.chainTQ and Speed effmap.chainRPM. They are two columns 1×100 elements
There is also a 2D array, much like below. For every (Torque,Speed) pair, there is a corresponding Efficiency value effmap.chainRPM
Processing:
I have a new pair of vectors, say vehicle.wheeltorque and vehicle.wheelspeed which are 1×1000. They represent a duty cycle, which the vehicle is going thru.
For every set of (vehicle.wheeltorque ,vehicle.wheelspeed) I need the code to find the closest value of Efficiency. I can’t figure this one out. I suppose it should be a double for loop of sorts and I found array indexing might be needed, but so far I couldn’t get it to work.
Example efficiency map:
What I tried, and works, is to take the base efficiency map, use interp2 and meshrid to refine it, and for a given single set of (testspeed,testtq) I can extract the Efficiency value – see the "point" value:
effmap.chainRPM = xlsread (’03b_DummychainLossmap’,’Chain’, ‘B3:B23’)
effmap.chainTQ = xlsread (’03b_DummychainLossmap’,’Chain’, ‘C2:W2’)
effmap.chainLoss = xlsread (’03b_DummychainLossmap’,’Chain’, ‘C3:W23’)
surf(effmap.chainRPM,effmap.chainTQ,effmap.chainLoss)
[MeshX,MeshY] = meshgrid(0:10:2000,0:10:2000) %mesh to create more points in a map/array
MeshQ = interp2(effmap.chainRPM,effmap.chainTQ,effmap.chainLoss,MeshX,MeshY,’spline’);
surf(MeshX,MeshY,MeshQ)
testspeed = 200
testtq = 1000
point = interp2(MeshX,MeshY,MeshQ,testtq,testspeed) %so now I know it works
However, it doesn’t work for a full vector of torque and speed :
linear_indices = sub2ind(MeshQ, MeshY(1,:), MeshX(1,:))
logical_indices = (MeshQ(:, 1) == MeshX & MeshQ(:, 2) == MeshY)
extracted_values = MeshQ(logical_indices, 🙂
for vehicle.wheeltorque(1:) to vehicle.wheeltorque(1:size(vehicle.wheeltorque))
………………..
I tried it in many ways, but fundamentally I don’t understand what the logic of the code should be. Help? Last thing, it needs to store the efficiency values in a vector for further analysis.
Cheers, ask if not clearHi all, I realise this may be the first time I ask a question even though I’ve been using the forum for 12 years. Kudos to you for asking every question and answering everything that ever crossed my mind. Here’s my question:
Input data:
I have two vectors, Torque effmap.chainTQ and Speed effmap.chainRPM. They are two columns 1×100 elements
There is also a 2D array, much like below. For every (Torque,Speed) pair, there is a corresponding Efficiency value effmap.chainRPM
Processing:
I have a new pair of vectors, say vehicle.wheeltorque and vehicle.wheelspeed which are 1×1000. They represent a duty cycle, which the vehicle is going thru.
For every set of (vehicle.wheeltorque ,vehicle.wheelspeed) I need the code to find the closest value of Efficiency. I can’t figure this one out. I suppose it should be a double for loop of sorts and I found array indexing might be needed, but so far I couldn’t get it to work.
Example efficiency map:
What I tried, and works, is to take the base efficiency map, use interp2 and meshrid to refine it, and for a given single set of (testspeed,testtq) I can extract the Efficiency value – see the "point" value:
effmap.chainRPM = xlsread (’03b_DummychainLossmap’,’Chain’, ‘B3:B23’)
effmap.chainTQ = xlsread (’03b_DummychainLossmap’,’Chain’, ‘C2:W2’)
effmap.chainLoss = xlsread (’03b_DummychainLossmap’,’Chain’, ‘C3:W23’)
surf(effmap.chainRPM,effmap.chainTQ,effmap.chainLoss)
[MeshX,MeshY] = meshgrid(0:10:2000,0:10:2000) %mesh to create more points in a map/array
MeshQ = interp2(effmap.chainRPM,effmap.chainTQ,effmap.chainLoss,MeshX,MeshY,’spline’);
surf(MeshX,MeshY,MeshQ)
testspeed = 200
testtq = 1000
point = interp2(MeshX,MeshY,MeshQ,testtq,testspeed) %so now I know it works
However, it doesn’t work for a full vector of torque and speed :
linear_indices = sub2ind(MeshQ, MeshY(1,:), MeshX(1,:))
logical_indices = (MeshQ(:, 1) == MeshX & MeshQ(:, 2) == MeshY)
extracted_values = MeshQ(logical_indices, 🙂
for vehicle.wheeltorque(1:) to vehicle.wheeltorque(1:size(vehicle.wheeltorque))
………………..
I tried it in many ways, but fundamentally I don’t understand what the logic of the code should be. Help? Last thing, it needs to store the efficiency values in a vector for further analysis.
Cheers, ask if not clear Hi all, I realise this may be the first time I ask a question even though I’ve been using the forum for 12 years. Kudos to you for asking every question and answering everything that ever crossed my mind. Here’s my question:
Input data:
I have two vectors, Torque effmap.chainTQ and Speed effmap.chainRPM. They are two columns 1×100 elements
There is also a 2D array, much like below. For every (Torque,Speed) pair, there is a corresponding Efficiency value effmap.chainRPM
Processing:
I have a new pair of vectors, say vehicle.wheeltorque and vehicle.wheelspeed which are 1×1000. They represent a duty cycle, which the vehicle is going thru.
For every set of (vehicle.wheeltorque ,vehicle.wheelspeed) I need the code to find the closest value of Efficiency. I can’t figure this one out. I suppose it should be a double for loop of sorts and I found array indexing might be needed, but so far I couldn’t get it to work.
Example efficiency map:
What I tried, and works, is to take the base efficiency map, use interp2 and meshrid to refine it, and for a given single set of (testspeed,testtq) I can extract the Efficiency value – see the "point" value:
effmap.chainRPM = xlsread (’03b_DummychainLossmap’,’Chain’, ‘B3:B23’)
effmap.chainTQ = xlsread (’03b_DummychainLossmap’,’Chain’, ‘C2:W2’)
effmap.chainLoss = xlsread (’03b_DummychainLossmap’,’Chain’, ‘C3:W23’)
surf(effmap.chainRPM,effmap.chainTQ,effmap.chainLoss)
[MeshX,MeshY] = meshgrid(0:10:2000,0:10:2000) %mesh to create more points in a map/array
MeshQ = interp2(effmap.chainRPM,effmap.chainTQ,effmap.chainLoss,MeshX,MeshY,’spline’);
surf(MeshX,MeshY,MeshQ)
testspeed = 200
testtq = 1000
point = interp2(MeshX,MeshY,MeshQ,testtq,testspeed) %so now I know it works
However, it doesn’t work for a full vector of torque and speed :
linear_indices = sub2ind(MeshQ, MeshY(1,:), MeshX(1,:))
logical_indices = (MeshQ(:, 1) == MeshX & MeshQ(:, 2) == MeshY)
extracted_values = MeshQ(logical_indices, 🙂
for vehicle.wheeltorque(1:) to vehicle.wheeltorque(1:size(vehicle.wheeltorque))
………………..
I tried it in many ways, but fundamentally I don’t understand what the logic of the code should be. Help? Last thing, it needs to store the efficiency values in a vector for further analysis.
Cheers, ask if not clear map, array, efficiency, dutycycle, script MATLAB Answers — New Questions
Why do I receive License Manager Error -13?
When I start MATLAB I receive the following error:
ERROR: License Manager Error -13.
No SERVER lines in license fileWhen I start MATLAB I receive the following error:
ERROR: License Manager Error -13.
No SERVER lines in license file When I start MATLAB I receive the following error:
ERROR: License Manager Error -13.
No SERVER lines in license file MATLAB Answers — New Questions
How do I sort these 2D-Points to get a proper surf plot of this function
Hello! I am currently trying to plot the function
on the unit disk . I wrote a function to get some evaluationpoints inside and on the boundary of the disk but when I plot the function on it I get very weird results. I already discussed a similar problem in a previous question and a nice person explained to me that the problem was the way my points where sorted in the matrix and therefore the reshaping didn’t work as desired. Since I get the same problem in the surf plot again, I am quite sure that this is the same case here.
In the function that I wrote to generate points I first started to lay a grid on a square. After that I sort out every point that is outside of the circle or that is on the boundary of the circle. Lastly I put points on the boundary of the circle. The function takes parameters and . First two parameters are the bounds for the square . The parameter is going to be the squareroot of the number of Points we will end up with. The function gives back Matrices xint, xbdy and x. xint holds the interior points and xbdy the points on the boundary of the circle. x should have both points together but there is still the problem on how I sort these… The rows of these matrices are points in that means e.g. x is gonna be a Matrix.
[~,~,~] = GetCircleGrid(-1,1,30); %Example
function [xint,xbdy,x] = GetCircleGrid(a,b,N)
% Radius of Circle
r = (b-a)/2;
% Centerpoint of Circle
x0 = a+r;
y0 = a+r;
% First get a Grid on the whole square
[xsqr1,xsqr2] = meshgrid(linspace(a,b,N),linspace(a,b,N));
xsqr = [xsqr1(:),xsqr2(:)];
% Now get rid of Points outside of Circle
k=1; % counter
for j=1:N^2
if sqrt((xsqr(j,1)-x0)^2+(xsqr(j,2)-y0)^2) < r % If distance from centerpoint is < r
xint(k,:) = xsqr(j,:);
k=k+1;
end
end
NB = N^2-(k-1); % Number of points for boundary so we end up with N^2 points in total
% Get the Boundarypoints
theta = linspace(0,2*pi,NB);
xbdy = zeros(NB,2);
xbdy(:,1) = x0 + r*cos(theta)’;
xbdy(:,2) = y0 + r*sin(theta)’;
x = sortrows([xint; xbdy]); % How to sort these…? 🙁
scatter(xint(:,1),xint(:,2),’ob’);
axis equal;
hold on;
scatter(xbdy(:,1),xbdy(:,2),’or’);
hold off;
end
The picture show, this is exactly how I want it too look for later usage… Now I wanted to plot the above function (for later usage too…) on the unit disc:
% The function
u = @(x) (5/4)*(1-x(:,1).^2-x(:,2).^2).*sin(pi*x(:,1))+1;
% Get some evaluation points …
N = 30;
[xint,xbdy,x]=GetCircleGrid(-1,1,N); % … in the unit disk
% Reshape evaluation points
X = reshape(x(:,1),N,N); % not working well…
Y = reshape(x(:,2),N,N); % not working well…
U = reshape(u(x),N,N); % evaluate the function
% Plot the function as well as the evaluationpoints
figure(1)
surf(X,Y,U,’FaceAlpha’,0.5,’EdgeColor’,’interp’);
colormap cool; camlight; lighting gouraud; material dull;
title(‘f(x,y)’)
hold on;
scatter3(X,Y,zeros(N,N),’og’);
hold off;
As you can see the plot has some weird lines that are not wanted. How should I sort the points in x to get a proper surf plot? In addition to that I wanted to plot the inner points in a different collor than the boundary points but since the number of points inside and the number of points on the boundary of the disc are not square numbers I don’t know how to use reshape for xint and xboundary…
Thank you very much for your help! Kind regard, Max.Hello! I am currently trying to plot the function
on the unit disk . I wrote a function to get some evaluationpoints inside and on the boundary of the disk but when I plot the function on it I get very weird results. I already discussed a similar problem in a previous question and a nice person explained to me that the problem was the way my points where sorted in the matrix and therefore the reshaping didn’t work as desired. Since I get the same problem in the surf plot again, I am quite sure that this is the same case here.
In the function that I wrote to generate points I first started to lay a grid on a square. After that I sort out every point that is outside of the circle or that is on the boundary of the circle. Lastly I put points on the boundary of the circle. The function takes parameters and . First two parameters are the bounds for the square . The parameter is going to be the squareroot of the number of Points we will end up with. The function gives back Matrices xint, xbdy and x. xint holds the interior points and xbdy the points on the boundary of the circle. x should have both points together but there is still the problem on how I sort these… The rows of these matrices are points in that means e.g. x is gonna be a Matrix.
[~,~,~] = GetCircleGrid(-1,1,30); %Example
function [xint,xbdy,x] = GetCircleGrid(a,b,N)
% Radius of Circle
r = (b-a)/2;
% Centerpoint of Circle
x0 = a+r;
y0 = a+r;
% First get a Grid on the whole square
[xsqr1,xsqr2] = meshgrid(linspace(a,b,N),linspace(a,b,N));
xsqr = [xsqr1(:),xsqr2(:)];
% Now get rid of Points outside of Circle
k=1; % counter
for j=1:N^2
if sqrt((xsqr(j,1)-x0)^2+(xsqr(j,2)-y0)^2) < r % If distance from centerpoint is < r
xint(k,:) = xsqr(j,:);
k=k+1;
end
end
NB = N^2-(k-1); % Number of points for boundary so we end up with N^2 points in total
% Get the Boundarypoints
theta = linspace(0,2*pi,NB);
xbdy = zeros(NB,2);
xbdy(:,1) = x0 + r*cos(theta)’;
xbdy(:,2) = y0 + r*sin(theta)’;
x = sortrows([xint; xbdy]); % How to sort these…? 🙁
scatter(xint(:,1),xint(:,2),’ob’);
axis equal;
hold on;
scatter(xbdy(:,1),xbdy(:,2),’or’);
hold off;
end
The picture show, this is exactly how I want it too look for later usage… Now I wanted to plot the above function (for later usage too…) on the unit disc:
% The function
u = @(x) (5/4)*(1-x(:,1).^2-x(:,2).^2).*sin(pi*x(:,1))+1;
% Get some evaluation points …
N = 30;
[xint,xbdy,x]=GetCircleGrid(-1,1,N); % … in the unit disk
% Reshape evaluation points
X = reshape(x(:,1),N,N); % not working well…
Y = reshape(x(:,2),N,N); % not working well…
U = reshape(u(x),N,N); % evaluate the function
% Plot the function as well as the evaluationpoints
figure(1)
surf(X,Y,U,’FaceAlpha’,0.5,’EdgeColor’,’interp’);
colormap cool; camlight; lighting gouraud; material dull;
title(‘f(x,y)’)
hold on;
scatter3(X,Y,zeros(N,N),’og’);
hold off;
As you can see the plot has some weird lines that are not wanted. How should I sort the points in x to get a proper surf plot? In addition to that I wanted to plot the inner points in a different collor than the boundary points but since the number of points inside and the number of points on the boundary of the disc are not square numbers I don’t know how to use reshape for xint and xboundary…
Thank you very much for your help! Kind regard, Max. Hello! I am currently trying to plot the function
on the unit disk . I wrote a function to get some evaluationpoints inside and on the boundary of the disk but when I plot the function on it I get very weird results. I already discussed a similar problem in a previous question and a nice person explained to me that the problem was the way my points where sorted in the matrix and therefore the reshaping didn’t work as desired. Since I get the same problem in the surf plot again, I am quite sure that this is the same case here.
In the function that I wrote to generate points I first started to lay a grid on a square. After that I sort out every point that is outside of the circle or that is on the boundary of the circle. Lastly I put points on the boundary of the circle. The function takes parameters and . First two parameters are the bounds for the square . The parameter is going to be the squareroot of the number of Points we will end up with. The function gives back Matrices xint, xbdy and x. xint holds the interior points and xbdy the points on the boundary of the circle. x should have both points together but there is still the problem on how I sort these… The rows of these matrices are points in that means e.g. x is gonna be a Matrix.
[~,~,~] = GetCircleGrid(-1,1,30); %Example
function [xint,xbdy,x] = GetCircleGrid(a,b,N)
% Radius of Circle
r = (b-a)/2;
% Centerpoint of Circle
x0 = a+r;
y0 = a+r;
% First get a Grid on the whole square
[xsqr1,xsqr2] = meshgrid(linspace(a,b,N),linspace(a,b,N));
xsqr = [xsqr1(:),xsqr2(:)];
% Now get rid of Points outside of Circle
k=1; % counter
for j=1:N^2
if sqrt((xsqr(j,1)-x0)^2+(xsqr(j,2)-y0)^2) < r % If distance from centerpoint is < r
xint(k,:) = xsqr(j,:);
k=k+1;
end
end
NB = N^2-(k-1); % Number of points for boundary so we end up with N^2 points in total
% Get the Boundarypoints
theta = linspace(0,2*pi,NB);
xbdy = zeros(NB,2);
xbdy(:,1) = x0 + r*cos(theta)’;
xbdy(:,2) = y0 + r*sin(theta)’;
x = sortrows([xint; xbdy]); % How to sort these…? 🙁
scatter(xint(:,1),xint(:,2),’ob’);
axis equal;
hold on;
scatter(xbdy(:,1),xbdy(:,2),’or’);
hold off;
end
The picture show, this is exactly how I want it too look for later usage… Now I wanted to plot the above function (for later usage too…) on the unit disc:
% The function
u = @(x) (5/4)*(1-x(:,1).^2-x(:,2).^2).*sin(pi*x(:,1))+1;
% Get some evaluation points …
N = 30;
[xint,xbdy,x]=GetCircleGrid(-1,1,N); % … in the unit disk
% Reshape evaluation points
X = reshape(x(:,1),N,N); % not working well…
Y = reshape(x(:,2),N,N); % not working well…
U = reshape(u(x),N,N); % evaluate the function
% Plot the function as well as the evaluationpoints
figure(1)
surf(X,Y,U,’FaceAlpha’,0.5,’EdgeColor’,’interp’);
colormap cool; camlight; lighting gouraud; material dull;
title(‘f(x,y)’)
hold on;
scatter3(X,Y,zeros(N,N),’og’);
hold off;
As you can see the plot has some weird lines that are not wanted. How should I sort the points in x to get a proper surf plot? In addition to that I wanted to plot the inner points in a different collor than the boundary points but since the number of points inside and the number of points on the boundary of the disc are not square numbers I don’t know how to use reshape for xint and xboundary…
Thank you very much for your help! Kind regard, Max. surf, plotting, surface, matrix, reshape MATLAB Answers — New Questions
Function (in 2024a) to separate implicit directory parts from a folder string?
In MATLAB versions from 2014 to 2023b there was an internal utility function called matlab.internal.language.introspective.separateImplicitDirs
Its job was to identify portions of a folder structure that were implicit (like +packageName on the end of myFolder/+packageName).
That function no longer exists in 2024a. This is possibly due to the change in nomenclature from packages to namespaces. Does anyone know a replacement function? I could of course just copy the function from 2023b (it is just a set of regexp tasks) but pointing to the inbuilt version would be nice.
Thanks,
SvenIn MATLAB versions from 2014 to 2023b there was an internal utility function called matlab.internal.language.introspective.separateImplicitDirs
Its job was to identify portions of a folder structure that were implicit (like +packageName on the end of myFolder/+packageName).
That function no longer exists in 2024a. This is possibly due to the change in nomenclature from packages to namespaces. Does anyone know a replacement function? I could of course just copy the function from 2023b (it is just a set of regexp tasks) but pointing to the inbuilt version would be nice.
Thanks,
Sven In MATLAB versions from 2014 to 2023b there was an internal utility function called matlab.internal.language.introspective.separateImplicitDirs
Its job was to identify portions of a folder structure that were implicit (like +packageName on the end of myFolder/+packageName).
That function no longer exists in 2024a. This is possibly due to the change in nomenclature from packages to namespaces. Does anyone know a replacement function? I could of course just copy the function from 2023b (it is just a set of regexp tasks) but pointing to the inbuilt version would be nice.
Thanks,
Sven implicit, folders, directories, packages, namespaces MATLAB Answers — New Questions
how to make simulation faster when using subsystems
Hello everyone,
I am working on a simulation project and need some help. When I use a single subsystem, the simulation runs quickly. However, when I duplicate the subsystem, the simulation slows down drastically, with 1 second of simulation time taking over 30 minutes in real time.
I have already implemented all the solver suggestions, but the issue persists.
Any suggestions on how to speed up the simulation would be greatly appreciated!Hello everyone,
I am working on a simulation project and need some help. When I use a single subsystem, the simulation runs quickly. However, when I duplicate the subsystem, the simulation slows down drastically, with 1 second of simulation time taking over 30 minutes in real time.
I have already implemented all the solver suggestions, but the issue persists.
Any suggestions on how to speed up the simulation would be greatly appreciated! Hello everyone,
I am working on a simulation project and need some help. When I use a single subsystem, the simulation runs quickly. However, when I duplicate the subsystem, the simulation slows down drastically, with 1 second of simulation time taking over 30 minutes in real time.
I have already implemented all the solver suggestions, but the issue persists.
Any suggestions on how to speed up the simulation would be greatly appreciated! matlab, simulink, subsystems, simulation, speed MATLAB Answers — New Questions
Save all the plots
Each time I run my code it produces 100 figures. So, I have to waste my time and save each one of them. Is there a command that can do that work for me by saving all the figures at once?Each time I run my code it produces 100 figures. So, I have to waste my time and save each one of them. Is there a command that can do that work for me by saving all the figures at once? Each time I run my code it produces 100 figures. So, I have to waste my time and save each one of them. Is there a command that can do that work for me by saving all the figures at once? save, save plot, plot MATLAB Answers — New Questions
Are functions called in parfor independent from each other
Hello everyone!
I have a question about using parfor loop related to my statistics test. I am trying to split my test from one that has 1000 iterations to four parallel tests that have 250 iterations to save time. Am I right saying that there is no influence between workers involved in this and the test result will correspond regular 1000 iteration test? The program has no errors
Script text:
S = 250;
D = zeros(4,1);
F = zeros(4,1);
d = 4;
parfor e = 1:d
[D(e,1),F(e,1)] = MonteCarlo(S);
end
disp(‘D = ‘);
disp((D(1,1)+D(2,1)+D(3,1)+D(4,1))/(d*S));
disp(‘F=’);
disp((F(1,1)+F(2,1)+F(3,1)+F(4,1))/(d*S));Hello everyone!
I have a question about using parfor loop related to my statistics test. I am trying to split my test from one that has 1000 iterations to four parallel tests that have 250 iterations to save time. Am I right saying that there is no influence between workers involved in this and the test result will correspond regular 1000 iteration test? The program has no errors
Script text:
S = 250;
D = zeros(4,1);
F = zeros(4,1);
d = 4;
parfor e = 1:d
[D(e,1),F(e,1)] = MonteCarlo(S);
end
disp(‘D = ‘);
disp((D(1,1)+D(2,1)+D(3,1)+D(4,1))/(d*S));
disp(‘F=’);
disp((F(1,1)+F(2,1)+F(3,1)+F(4,1))/(d*S)); Hello everyone!
I have a question about using parfor loop related to my statistics test. I am trying to split my test from one that has 1000 iterations to four parallel tests that have 250 iterations to save time. Am I right saying that there is no influence between workers involved in this and the test result will correspond regular 1000 iteration test? The program has no errors
Script text:
S = 250;
D = zeros(4,1);
F = zeros(4,1);
d = 4;
parfor e = 1:d
[D(e,1),F(e,1)] = MonteCarlo(S);
end
disp(‘D = ‘);
disp((D(1,1)+D(2,1)+D(3,1)+D(4,1))/(d*S));
disp(‘F=’);
disp((F(1,1)+F(2,1)+F(3,1)+F(4,1))/(d*S)); local variables, parfor, function, monte carlo MATLAB Answers — New Questions
X-Axis Boxplot Shift
Is there a way in matlab to use boxplot or boxchart to shift the boxplot to the side of additional data lines such as a scatter or line plot? I am looking to put my scatter point on x-axis 1 and 2 with the boxplot to the side at x-axis 0.5 and 2.5. Image attached of my data and then of an image I found of someone doing this in R.Is there a way in matlab to use boxplot or boxchart to shift the boxplot to the side of additional data lines such as a scatter or line plot? I am looking to put my scatter point on x-axis 1 and 2 with the boxplot to the side at x-axis 0.5 and 2.5. Image attached of my data and then of an image I found of someone doing this in R. Is there a way in matlab to use boxplot or boxchart to shift the boxplot to the side of additional data lines such as a scatter or line plot? I am looking to put my scatter point on x-axis 1 and 2 with the boxplot to the side at x-axis 0.5 and 2.5. Image attached of my data and then of an image I found of someone doing this in R. boxplot, boxchart, scatter plot, lineplot, multiplot MATLAB Answers — New Questions
plz help me, worm gear was not generated
The worm gear turns in the direction of the base axis rotationThe worm gear turns in the direction of the base axis rotation The worm gear turns in the direction of the base axis rotation #gear #worm gear #matlab MATLAB Answers — New Questions
MATLab does not solve for my variable and only solves the root of the equation
Hello, I’m new to MATlab, here is the code and the equation:
syms a H Q x y z b c d e f g h
eqn = x + y*a + z*H + b*a^2 + c*H^2 + d*a^3 + e*H^3 + f*a*H + g*a^2*H + h*a*H^2 == Q;
solutions = solve(eqn, a)
variables x y z b c d e f g and h are all constants but they are long numbers so I decided to write them like this. I would like MATlab to solve for a but it just gives me the root of the equation which is useless to me. I even tried replacing the other variables like Q and H with constant to no avail. Even with the only variable being a MATlab still solves for roots instead for a…Hello, I’m new to MATlab, here is the code and the equation:
syms a H Q x y z b c d e f g h
eqn = x + y*a + z*H + b*a^2 + c*H^2 + d*a^3 + e*H^3 + f*a*H + g*a^2*H + h*a*H^2 == Q;
solutions = solve(eqn, a)
variables x y z b c d e f g and h are all constants but they are long numbers so I decided to write them like this. I would like MATlab to solve for a but it just gives me the root of the equation which is useless to me. I even tried replacing the other variables like Q and H with constant to no avail. Even with the only variable being a MATlab still solves for roots instead for a… Hello, I’m new to MATlab, here is the code and the equation:
syms a H Q x y z b c d e f g h
eqn = x + y*a + z*H + b*a^2 + c*H^2 + d*a^3 + e*H^3 + f*a*H + g*a^2*H + h*a*H^2 == Q;
solutions = solve(eqn, a)
variables x y z b c d e f g and h are all constants but they are long numbers so I decided to write them like this. I would like MATlab to solve for a but it just gives me the root of the equation which is useless to me. I even tried replacing the other variables like Q and H with constant to no avail. Even with the only variable being a MATlab still solves for roots instead for a… solving for root instead for variable MATLAB Answers — New Questions
How can I convert my matlab code into python?
close all;
clear all;
clc;
Datafiles = fileDatastore("temp_summary.12*.txt","ReadFcn",@readMonth,"UniformRead",true);
dataAll = readall(Datafiles);
dataAll.Year = year(dataAll.Day);
dataAll.Month = month(dataAll.Day);
dataAll.DD = day(dataAll.Day);
LY = (dataAll.Month(:)==2 & dataAll.DD(:)==29);
dataAll(LY,:) = [];
% Unstack variables
minT_tbl = unstack(dataAll,"MinT","Year","GroupingVariables", ["Month","DD"],"VariableNamingRule","preserve")
maxT_tbl = unstack(dataAll,"MaxT","Year","GroupingVariables", ["Month","DD"],"VariableNamingRule","preserve")
yrs =str2double(minT_tbl.Properties.VariableNames(3:end))’;
% find min
[Tmin,idxMn] = min(minT_tbl{:,3:end},[],2,’omitnan’);
Tmin_yr = yrs(idxMn);
% find max
[Tmax,idxMx] = max(maxT_tbl{:,3:end},[],2,’omitnan’);
Tmax_yr = yrs(idxMx);
% find low high
[lowTMax,idxMx] = min(maxT_tbl{:,3:end},[],2,’omitnan’);
LowTMax_yr = yrs(idxMx);
% find high low
[highlowTMn,idxMn] = max(minT_tbl{:,3:end},[],2,’omitnan’);
HighLowT_yr = yrs(idxMn);
% find avg high
AvgTMx = round(mean(table2array(maxT_tbl(:,3:end)),2,’omitnan’));
% find avg low
AvgTMn = round(mean(table2array(minT_tbl(:,3:end)),2,’omitnan’));
% Results
tempTbl = [maxT_tbl(:,["Month","DD"]), table(Tmax,Tmax_yr,AvgTMx,lowTMax,LowTMax_yr,Tmin,Tmin_yr,AvgTMn,highlowTMn,HighLowT_yr)]
tempTbl2 = splitvars(tempTbl)
FID = fopen(‘Meda 12 Temperature Climatology.txt’,’w’);
report_date = datetime(‘now’,’format’,’yyyy-MM-dd HH:MM’);
fprintf(FID,’Meda 12 Temperature Climatology at %s n’, report_date);
fprintf(FID,"Month DD Temp Max (°F) Tmax_yr AvgTMax (°F) lowTMax (°F) LowTMax_yr TempMin (°F) TMin_yr AvgTMin (°F) HighlowTMin (°F) HighlowT_yr n");
fprintf(FID,’%3d %6d %7d %14d %11d %11d %15d %11d %13d %10d %13d %17d n’, tempTbl2{:,1:end}’);
fclose(FID);
winopen(‘Meda 12 Temperature Climatology.txt’)
function Tbl = readMonth(filename)
opts = detectImportOptions(filename);
opts.ConsecutiveDelimitersRule = ‘join’;
opts.MissingRule = ‘omitvar’;
opts = setvartype(opts,’double’);
opts.VariableNames = ["Day","MaxT","MinT","AvgT"];
Tbl = readtable(filename,opts);
Tbl = standardizeMissing(Tbl,{999,’N/A’},"DataVariables",{‘MaxT’,’MinT’,’AvgT’});
Tbl = standardizeMissing(Tbl,{-99,’N/A’},"DataVariables",{‘MaxT’,’MinT’,’AvgT’});
[~,basename] = fileparts(filename);
% use the base file name, not the full file name:
d = str2double(extract(basename,digitsPattern));
if ~leapyear(d(3)) && d(2) == 2 % February of a non-leap-year
Tbl(Tbl.Day == 29,:) = []; % remove the 29th day data, if any
end
Tbl.Day = datetime(d(3),d(2),Tbl.Day);
end
function tf = leapyear(y)
if mod(y,4) % year is not divisible by 4
tf = false; % it is a common year
elseif mod(y,100) % year is not divisible by 100
tf = true; % it is a leap year
elseif mod(y,400) % year is not divisible by 400
tf = false; % it is a common year
else
tf = true; % it is a leap year
end
endclose all;
clear all;
clc;
Datafiles = fileDatastore("temp_summary.12*.txt","ReadFcn",@readMonth,"UniformRead",true);
dataAll = readall(Datafiles);
dataAll.Year = year(dataAll.Day);
dataAll.Month = month(dataAll.Day);
dataAll.DD = day(dataAll.Day);
LY = (dataAll.Month(:)==2 & dataAll.DD(:)==29);
dataAll(LY,:) = [];
% Unstack variables
minT_tbl = unstack(dataAll,"MinT","Year","GroupingVariables", ["Month","DD"],"VariableNamingRule","preserve")
maxT_tbl = unstack(dataAll,"MaxT","Year","GroupingVariables", ["Month","DD"],"VariableNamingRule","preserve")
yrs =str2double(minT_tbl.Properties.VariableNames(3:end))’;
% find min
[Tmin,idxMn] = min(minT_tbl{:,3:end},[],2,’omitnan’);
Tmin_yr = yrs(idxMn);
% find max
[Tmax,idxMx] = max(maxT_tbl{:,3:end},[],2,’omitnan’);
Tmax_yr = yrs(idxMx);
% find low high
[lowTMax,idxMx] = min(maxT_tbl{:,3:end},[],2,’omitnan’);
LowTMax_yr = yrs(idxMx);
% find high low
[highlowTMn,idxMn] = max(minT_tbl{:,3:end},[],2,’omitnan’);
HighLowT_yr = yrs(idxMn);
% find avg high
AvgTMx = round(mean(table2array(maxT_tbl(:,3:end)),2,’omitnan’));
% find avg low
AvgTMn = round(mean(table2array(minT_tbl(:,3:end)),2,’omitnan’));
% Results
tempTbl = [maxT_tbl(:,["Month","DD"]), table(Tmax,Tmax_yr,AvgTMx,lowTMax,LowTMax_yr,Tmin,Tmin_yr,AvgTMn,highlowTMn,HighLowT_yr)]
tempTbl2 = splitvars(tempTbl)
FID = fopen(‘Meda 12 Temperature Climatology.txt’,’w’);
report_date = datetime(‘now’,’format’,’yyyy-MM-dd HH:MM’);
fprintf(FID,’Meda 12 Temperature Climatology at %s n’, report_date);
fprintf(FID,"Month DD Temp Max (°F) Tmax_yr AvgTMax (°F) lowTMax (°F) LowTMax_yr TempMin (°F) TMin_yr AvgTMin (°F) HighlowTMin (°F) HighlowT_yr n");
fprintf(FID,’%3d %6d %7d %14d %11d %11d %15d %11d %13d %10d %13d %17d n’, tempTbl2{:,1:end}’);
fclose(FID);
winopen(‘Meda 12 Temperature Climatology.txt’)
function Tbl = readMonth(filename)
opts = detectImportOptions(filename);
opts.ConsecutiveDelimitersRule = ‘join’;
opts.MissingRule = ‘omitvar’;
opts = setvartype(opts,’double’);
opts.VariableNames = ["Day","MaxT","MinT","AvgT"];
Tbl = readtable(filename,opts);
Tbl = standardizeMissing(Tbl,{999,’N/A’},"DataVariables",{‘MaxT’,’MinT’,’AvgT’});
Tbl = standardizeMissing(Tbl,{-99,’N/A’},"DataVariables",{‘MaxT’,’MinT’,’AvgT’});
[~,basename] = fileparts(filename);
% use the base file name, not the full file name:
d = str2double(extract(basename,digitsPattern));
if ~leapyear(d(3)) && d(2) == 2 % February of a non-leap-year
Tbl(Tbl.Day == 29,:) = []; % remove the 29th day data, if any
end
Tbl.Day = datetime(d(3),d(2),Tbl.Day);
end
function tf = leapyear(y)
if mod(y,4) % year is not divisible by 4
tf = false; % it is a common year
elseif mod(y,100) % year is not divisible by 100
tf = true; % it is a leap year
elseif mod(y,400) % year is not divisible by 400
tf = false; % it is a common year
else
tf = true; % it is a leap year
end
end close all;
clear all;
clc;
Datafiles = fileDatastore("temp_summary.12*.txt","ReadFcn",@readMonth,"UniformRead",true);
dataAll = readall(Datafiles);
dataAll.Year = year(dataAll.Day);
dataAll.Month = month(dataAll.Day);
dataAll.DD = day(dataAll.Day);
LY = (dataAll.Month(:)==2 & dataAll.DD(:)==29);
dataAll(LY,:) = [];
% Unstack variables
minT_tbl = unstack(dataAll,"MinT","Year","GroupingVariables", ["Month","DD"],"VariableNamingRule","preserve")
maxT_tbl = unstack(dataAll,"MaxT","Year","GroupingVariables", ["Month","DD"],"VariableNamingRule","preserve")
yrs =str2double(minT_tbl.Properties.VariableNames(3:end))’;
% find min
[Tmin,idxMn] = min(minT_tbl{:,3:end},[],2,’omitnan’);
Tmin_yr = yrs(idxMn);
% find max
[Tmax,idxMx] = max(maxT_tbl{:,3:end},[],2,’omitnan’);
Tmax_yr = yrs(idxMx);
% find low high
[lowTMax,idxMx] = min(maxT_tbl{:,3:end},[],2,’omitnan’);
LowTMax_yr = yrs(idxMx);
% find high low
[highlowTMn,idxMn] = max(minT_tbl{:,3:end},[],2,’omitnan’);
HighLowT_yr = yrs(idxMn);
% find avg high
AvgTMx = round(mean(table2array(maxT_tbl(:,3:end)),2,’omitnan’));
% find avg low
AvgTMn = round(mean(table2array(minT_tbl(:,3:end)),2,’omitnan’));
% Results
tempTbl = [maxT_tbl(:,["Month","DD"]), table(Tmax,Tmax_yr,AvgTMx,lowTMax,LowTMax_yr,Tmin,Tmin_yr,AvgTMn,highlowTMn,HighLowT_yr)]
tempTbl2 = splitvars(tempTbl)
FID = fopen(‘Meda 12 Temperature Climatology.txt’,’w’);
report_date = datetime(‘now’,’format’,’yyyy-MM-dd HH:MM’);
fprintf(FID,’Meda 12 Temperature Climatology at %s n’, report_date);
fprintf(FID,"Month DD Temp Max (°F) Tmax_yr AvgTMax (°F) lowTMax (°F) LowTMax_yr TempMin (°F) TMin_yr AvgTMin (°F) HighlowTMin (°F) HighlowT_yr n");
fprintf(FID,’%3d %6d %7d %14d %11d %11d %15d %11d %13d %10d %13d %17d n’, tempTbl2{:,1:end}’);
fclose(FID);
winopen(‘Meda 12 Temperature Climatology.txt’)
function Tbl = readMonth(filename)
opts = detectImportOptions(filename);
opts.ConsecutiveDelimitersRule = ‘join’;
opts.MissingRule = ‘omitvar’;
opts = setvartype(opts,’double’);
opts.VariableNames = ["Day","MaxT","MinT","AvgT"];
Tbl = readtable(filename,opts);
Tbl = standardizeMissing(Tbl,{999,’N/A’},"DataVariables",{‘MaxT’,’MinT’,’AvgT’});
Tbl = standardizeMissing(Tbl,{-99,’N/A’},"DataVariables",{‘MaxT’,’MinT’,’AvgT’});
[~,basename] = fileparts(filename);
% use the base file name, not the full file name:
d = str2double(extract(basename,digitsPattern));
if ~leapyear(d(3)) && d(2) == 2 % February of a non-leap-year
Tbl(Tbl.Day == 29,:) = []; % remove the 29th day data, if any
end
Tbl.Day = datetime(d(3),d(2),Tbl.Day);
end
function tf = leapyear(y)
if mod(y,4) % year is not divisible by 4
tf = false; % it is a common year
elseif mod(y,100) % year is not divisible by 100
tf = true; % it is a leap year
elseif mod(y,400) % year is not divisible by 400
tf = false; % it is a common year
else
tf = true; % it is a leap year
end
end python, matlab code MATLAB Answers — New Questions
Even though I finished the course 100% the certification ,progress report and in my courses it shows as 0% , why is it so? the course is “simulink Onramp”
Warning: File "/tmp/simulinkselfpaced/SimulinkOnramp.slx" is missing, which will prevent you from saving this model properly. If the file moved, then close the model and open
Like this text is coming in command window of MatLabWarning: File "/tmp/simulinkselfpaced/SimulinkOnramp.slx" is missing, which will prevent you from saving this model properly. If the file moved, then close the model and open
Like this text is coming in command window of MatLab Warning: File "/tmp/simulinkselfpaced/SimulinkOnramp.slx" is missing, which will prevent you from saving this model properly. If the file moved, then close the model and open
Like this text is coming in command window of MatLab mathworks, course_no_progress_updation MATLAB Answers — New Questions
lsqcurvefit “Function value and YDATA sizes are not equal” for a complicated fitting function
Hi all, I have some experimental data to be fitted to a function that is quite complicated (refer to the attached picture). And I kept getting the message that the function size and YDATA size are not equal. How do I solve this?
clear; clc
load Steady_State_Data.mat % this contains the wavelength of light and absorbance of substrate and sample
% Fundamental constants
h = 4.0135667696*10^-15; % units: eV/ Hz
c = 3*10^8; % SI units
% Clean up of data to select range of values
Absorbance = log10(T_substrate./T_sample);
E = (h*c./(Lambda*10^-9));
e = E >= 0 & E <= 2.0; % returns boolean value of the indices that satisfies the logical condition defined above
A = find(e); % gives indices that are non-zero
N = length(A); % no. of elements that are non-zero
n = length(E) + 1;
% Data for fitting
E_p = E(n-N:167);
Abs = Absorbance(n-N:167);
function F = EM_SS(p, e_p)
for i = 1:numel(e_p)
E_p = e_p(i);
F(i) = p(1)*(2*pi*sqrt(p(4))/E_p)*(1/p(6))*…
(integral(@(E)sech(((E_p – E)./p(6)))*(1 + 10*p(5)*(E – p(3)) + …
126*p(5)^2*(E – p(3))^2)/(1 – exp(-2*pi*sqrt(p(4)/(E – p(3))))), p(3), Inf, ‘ArrayValued’, 1)) + …
p(2)*(2*pi*p(4)^3/2)*1/p(6)*(…
(1/1^3)*sech((E_p – p(3) + p(4)/1^2)./p(6)) + …
(1/2^3)*sech((E_p – p(3) + p(4)/2^2)./p(6)) + …
(1/3^3)*sech((E_p – p(3) + p(4)/3^2)./p(6)) + …
(1/4^3)*sech((E_p – p(3) + p(4)/4^2)./p(6)) + …
(1/5^3)*sech((E_p – p(3) + p(4)/5^2)./p(6)) + …
(1/6^3)*sech((E_p – p(3) + p(4)/6^2)./p(6)) + …
(1/7^3)*sech((E_p – p(3) + p(4)/7^2)./p(6)));
end
end
% Initial parameter guess and bounds
lb = []; ub = [];
p0 = [0.13 0.1 1.6 0.05 3 1]; % refer to the next line for their order
% p0 = [A1 A2 Eg Eb R g]
% choose between different algorithm of lsqcurvefit (3C1, comment those lines that are not choosen, if not, matlab will take the last line of "optim_lsq" by default)
optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘levenberg-marquardt’);
% optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘trust-region-reflective’);
% optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘interior-point’);
% fminunc
% optim_fminunc = optimsoptions(‘fminunc’, ‘Algorithm’, ‘Quasi-Newton’);
% solver
[p, resnorm, residual, exitflag, output, jacobian] = lsqcurvefit(@EM_SS, p0, E_p, Abs);
% p = lsqcurvefit(@EM_SS, p0, E_p, Abs);
% Plot command
plot(E_p, Abs, ‘o’)
hold on
% plot(E_p, p(1)*(2*pi*sqrt(p(4))/E_p)*(1/p(6))*…
% (integral(@(E)sech(((E_p – E)./p(6)))*(1 + 10*p(5)*(E – p(3)) + …
% 126*p(5)^2*(E – p(3))^2)/(1 – exp(-2*pi*sqrt(p(4)/(E – p(3))))), p(3), Inf, ‘ArrayValued’, 1)) + …
% p(2)*(2*pi*p(4)^3/2)*1/p(6)*(…
% (1/1^3)*sech((E_p – p(3) + p(4)/1^2)./p(6)) + …
% (1/2^3)*sech((E_p – p(3) + p(4)/2^2)./p(6)) + …
% (1/3^3)*sech((E_p – p(3) + p(4)/3^2)./p(6)) + …
% (1/4^3)*sech((E_p – p(3) + p(4)/4^2)./p(6)) + …
% (1/5^3)*sech((E_p – p(3) + p(4)/5^2)./p(6)) + …
% (1/6^3)*sech((E_p – p(3) + p(4)/6^2)./p(6)) + …
% (1/7^3)*sech((E_p – p(3) + p(4)/7^2)./p(6))))
plot(E_p, EM_SS(E_p, p))
xlabel(‘Probe energy (eV)’)
ylabel(‘Absorbance.O.D’)
legend(‘Experimental Data’, ‘Fitted Curve’)
hold off
% Parameter values (refer to command window)
p1 = p(1,1);
p2 = p(1,2);
p3 = p(1,3);
p4 = p(1,4);
p5 = p(1,5);
p6 = p(1,6);
X1 = [‘ A1 = ‘, num2str(p1)];
X2 = [‘ A2 = ‘, num2str(p2)];
X3 = [‘ Eg = ‘, num2str(p3)];
X4 = [‘ Eb = ‘, num2str(p4)];
X5 = [‘ R = ‘, num2str(p5)];
X6 = [‘ g = ‘, num2str(p6)];
disp(X1);
disp(X2);
disp(X3);
disp(X4);
disp(X5);
disp(X6);Hi all, I have some experimental data to be fitted to a function that is quite complicated (refer to the attached picture). And I kept getting the message that the function size and YDATA size are not equal. How do I solve this?
clear; clc
load Steady_State_Data.mat % this contains the wavelength of light and absorbance of substrate and sample
% Fundamental constants
h = 4.0135667696*10^-15; % units: eV/ Hz
c = 3*10^8; % SI units
% Clean up of data to select range of values
Absorbance = log10(T_substrate./T_sample);
E = (h*c./(Lambda*10^-9));
e = E >= 0 & E <= 2.0; % returns boolean value of the indices that satisfies the logical condition defined above
A = find(e); % gives indices that are non-zero
N = length(A); % no. of elements that are non-zero
n = length(E) + 1;
% Data for fitting
E_p = E(n-N:167);
Abs = Absorbance(n-N:167);
function F = EM_SS(p, e_p)
for i = 1:numel(e_p)
E_p = e_p(i);
F(i) = p(1)*(2*pi*sqrt(p(4))/E_p)*(1/p(6))*…
(integral(@(E)sech(((E_p – E)./p(6)))*(1 + 10*p(5)*(E – p(3)) + …
126*p(5)^2*(E – p(3))^2)/(1 – exp(-2*pi*sqrt(p(4)/(E – p(3))))), p(3), Inf, ‘ArrayValued’, 1)) + …
p(2)*(2*pi*p(4)^3/2)*1/p(6)*(…
(1/1^3)*sech((E_p – p(3) + p(4)/1^2)./p(6)) + …
(1/2^3)*sech((E_p – p(3) + p(4)/2^2)./p(6)) + …
(1/3^3)*sech((E_p – p(3) + p(4)/3^2)./p(6)) + …
(1/4^3)*sech((E_p – p(3) + p(4)/4^2)./p(6)) + …
(1/5^3)*sech((E_p – p(3) + p(4)/5^2)./p(6)) + …
(1/6^3)*sech((E_p – p(3) + p(4)/6^2)./p(6)) + …
(1/7^3)*sech((E_p – p(3) + p(4)/7^2)./p(6)));
end
end
% Initial parameter guess and bounds
lb = []; ub = [];
p0 = [0.13 0.1 1.6 0.05 3 1]; % refer to the next line for their order
% p0 = [A1 A2 Eg Eb R g]
% choose between different algorithm of lsqcurvefit (3C1, comment those lines that are not choosen, if not, matlab will take the last line of "optim_lsq" by default)
optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘levenberg-marquardt’);
% optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘trust-region-reflective’);
% optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘interior-point’);
% fminunc
% optim_fminunc = optimsoptions(‘fminunc’, ‘Algorithm’, ‘Quasi-Newton’);
% solver
[p, resnorm, residual, exitflag, output, jacobian] = lsqcurvefit(@EM_SS, p0, E_p, Abs);
% p = lsqcurvefit(@EM_SS, p0, E_p, Abs);
% Plot command
plot(E_p, Abs, ‘o’)
hold on
% plot(E_p, p(1)*(2*pi*sqrt(p(4))/E_p)*(1/p(6))*…
% (integral(@(E)sech(((E_p – E)./p(6)))*(1 + 10*p(5)*(E – p(3)) + …
% 126*p(5)^2*(E – p(3))^2)/(1 – exp(-2*pi*sqrt(p(4)/(E – p(3))))), p(3), Inf, ‘ArrayValued’, 1)) + …
% p(2)*(2*pi*p(4)^3/2)*1/p(6)*(…
% (1/1^3)*sech((E_p – p(3) + p(4)/1^2)./p(6)) + …
% (1/2^3)*sech((E_p – p(3) + p(4)/2^2)./p(6)) + …
% (1/3^3)*sech((E_p – p(3) + p(4)/3^2)./p(6)) + …
% (1/4^3)*sech((E_p – p(3) + p(4)/4^2)./p(6)) + …
% (1/5^3)*sech((E_p – p(3) + p(4)/5^2)./p(6)) + …
% (1/6^3)*sech((E_p – p(3) + p(4)/6^2)./p(6)) + …
% (1/7^3)*sech((E_p – p(3) + p(4)/7^2)./p(6))))
plot(E_p, EM_SS(E_p, p))
xlabel(‘Probe energy (eV)’)
ylabel(‘Absorbance.O.D’)
legend(‘Experimental Data’, ‘Fitted Curve’)
hold off
% Parameter values (refer to command window)
p1 = p(1,1);
p2 = p(1,2);
p3 = p(1,3);
p4 = p(1,4);
p5 = p(1,5);
p6 = p(1,6);
X1 = [‘ A1 = ‘, num2str(p1)];
X2 = [‘ A2 = ‘, num2str(p2)];
X3 = [‘ Eg = ‘, num2str(p3)];
X4 = [‘ Eb = ‘, num2str(p4)];
X5 = [‘ R = ‘, num2str(p5)];
X6 = [‘ g = ‘, num2str(p6)];
disp(X1);
disp(X2);
disp(X3);
disp(X4);
disp(X5);
disp(X6); Hi all, I have some experimental data to be fitted to a function that is quite complicated (refer to the attached picture). And I kept getting the message that the function size and YDATA size are not equal. How do I solve this?
clear; clc
load Steady_State_Data.mat % this contains the wavelength of light and absorbance of substrate and sample
% Fundamental constants
h = 4.0135667696*10^-15; % units: eV/ Hz
c = 3*10^8; % SI units
% Clean up of data to select range of values
Absorbance = log10(T_substrate./T_sample);
E = (h*c./(Lambda*10^-9));
e = E >= 0 & E <= 2.0; % returns boolean value of the indices that satisfies the logical condition defined above
A = find(e); % gives indices that are non-zero
N = length(A); % no. of elements that are non-zero
n = length(E) + 1;
% Data for fitting
E_p = E(n-N:167);
Abs = Absorbance(n-N:167);
function F = EM_SS(p, e_p)
for i = 1:numel(e_p)
E_p = e_p(i);
F(i) = p(1)*(2*pi*sqrt(p(4))/E_p)*(1/p(6))*…
(integral(@(E)sech(((E_p – E)./p(6)))*(1 + 10*p(5)*(E – p(3)) + …
126*p(5)^2*(E – p(3))^2)/(1 – exp(-2*pi*sqrt(p(4)/(E – p(3))))), p(3), Inf, ‘ArrayValued’, 1)) + …
p(2)*(2*pi*p(4)^3/2)*1/p(6)*(…
(1/1^3)*sech((E_p – p(3) + p(4)/1^2)./p(6)) + …
(1/2^3)*sech((E_p – p(3) + p(4)/2^2)./p(6)) + …
(1/3^3)*sech((E_p – p(3) + p(4)/3^2)./p(6)) + …
(1/4^3)*sech((E_p – p(3) + p(4)/4^2)./p(6)) + …
(1/5^3)*sech((E_p – p(3) + p(4)/5^2)./p(6)) + …
(1/6^3)*sech((E_p – p(3) + p(4)/6^2)./p(6)) + …
(1/7^3)*sech((E_p – p(3) + p(4)/7^2)./p(6)));
end
end
% Initial parameter guess and bounds
lb = []; ub = [];
p0 = [0.13 0.1 1.6 0.05 3 1]; % refer to the next line for their order
% p0 = [A1 A2 Eg Eb R g]
% choose between different algorithm of lsqcurvefit (3C1, comment those lines that are not choosen, if not, matlab will take the last line of "optim_lsq" by default)
optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘levenberg-marquardt’);
% optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘trust-region-reflective’);
% optim_lsq = optimoptions(‘lsqcurvefit’, ‘Algorithm’, ‘interior-point’);
% fminunc
% optim_fminunc = optimsoptions(‘fminunc’, ‘Algorithm’, ‘Quasi-Newton’);
% solver
[p, resnorm, residual, exitflag, output, jacobian] = lsqcurvefit(@EM_SS, p0, E_p, Abs);
% p = lsqcurvefit(@EM_SS, p0, E_p, Abs);
% Plot command
plot(E_p, Abs, ‘o’)
hold on
% plot(E_p, p(1)*(2*pi*sqrt(p(4))/E_p)*(1/p(6))*…
% (integral(@(E)sech(((E_p – E)./p(6)))*(1 + 10*p(5)*(E – p(3)) + …
% 126*p(5)^2*(E – p(3))^2)/(1 – exp(-2*pi*sqrt(p(4)/(E – p(3))))), p(3), Inf, ‘ArrayValued’, 1)) + …
% p(2)*(2*pi*p(4)^3/2)*1/p(6)*(…
% (1/1^3)*sech((E_p – p(3) + p(4)/1^2)./p(6)) + …
% (1/2^3)*sech((E_p – p(3) + p(4)/2^2)./p(6)) + …
% (1/3^3)*sech((E_p – p(3) + p(4)/3^2)./p(6)) + …
% (1/4^3)*sech((E_p – p(3) + p(4)/4^2)./p(6)) + …
% (1/5^3)*sech((E_p – p(3) + p(4)/5^2)./p(6)) + …
% (1/6^3)*sech((E_p – p(3) + p(4)/6^2)./p(6)) + …
% (1/7^3)*sech((E_p – p(3) + p(4)/7^2)./p(6))))
plot(E_p, EM_SS(E_p, p))
xlabel(‘Probe energy (eV)’)
ylabel(‘Absorbance.O.D’)
legend(‘Experimental Data’, ‘Fitted Curve’)
hold off
% Parameter values (refer to command window)
p1 = p(1,1);
p2 = p(1,2);
p3 = p(1,3);
p4 = p(1,4);
p5 = p(1,5);
p6 = p(1,6);
X1 = [‘ A1 = ‘, num2str(p1)];
X2 = [‘ A2 = ‘, num2str(p2)];
X3 = [‘ Eg = ‘, num2str(p3)];
X4 = [‘ Eb = ‘, num2str(p4)];
X5 = [‘ R = ‘, num2str(p5)];
X6 = [‘ g = ‘, num2str(p6)];
disp(X1);
disp(X2);
disp(X3);
disp(X4);
disp(X5);
disp(X6); curve fitting MATLAB Answers — New Questions
Multiple sequences for Neural State-Space Model training and different sampling times
Hi all,
I have some doubts about Neural State-Space Models.
1) I would like to train such a model using different observations (or tests). In other words, I have time sequences measured in different experiments and I would like to use them to train the model. From the examples currently online, I could not figure out how to do this, since it seems to me that the training data are always represented by a single time sequence.
2) Suppose the time sequences I want to train the model with have a sampling time given as d_t. I want to use the Neural State-Space Model that I identify with this data in Simulink. I can do this using just the dedicated Neural State-Space Model block. Suppose, however, that I want to run simulations using this model in Simulink with sample times to my preference. I am aware of rate transition blocks, but can they do the trick for me for this type of problem? In other words, does the Simulink block of the Neural State-Space Model allow me to work with other sampling times, or am I constrained to use the model with sampling times equal to that of the time series with which I have trained the model (thus what has been referred to as d_t)?
Thank you in advance for the support!
Best regards,
MarcoHi all,
I have some doubts about Neural State-Space Models.
1) I would like to train such a model using different observations (or tests). In other words, I have time sequences measured in different experiments and I would like to use them to train the model. From the examples currently online, I could not figure out how to do this, since it seems to me that the training data are always represented by a single time sequence.
2) Suppose the time sequences I want to train the model with have a sampling time given as d_t. I want to use the Neural State-Space Model that I identify with this data in Simulink. I can do this using just the dedicated Neural State-Space Model block. Suppose, however, that I want to run simulations using this model in Simulink with sample times to my preference. I am aware of rate transition blocks, but can they do the trick for me for this type of problem? In other words, does the Simulink block of the Neural State-Space Model allow me to work with other sampling times, or am I constrained to use the model with sampling times equal to that of the time series with which I have trained the model (thus what has been referred to as d_t)?
Thank you in advance for the support!
Best regards,
Marco Hi all,
I have some doubts about Neural State-Space Models.
1) I would like to train such a model using different observations (or tests). In other words, I have time sequences measured in different experiments and I would like to use them to train the model. From the examples currently online, I could not figure out how to do this, since it seems to me that the training data are always represented by a single time sequence.
2) Suppose the time sequences I want to train the model with have a sampling time given as d_t. I want to use the Neural State-Space Model that I identify with this data in Simulink. I can do this using just the dedicated Neural State-Space Model block. Suppose, however, that I want to run simulations using this model in Simulink with sample times to my preference. I am aware of rate transition blocks, but can they do the trick for me for this type of problem? In other words, does the Simulink block of the Neural State-Space Model allow me to work with other sampling times, or am I constrained to use the model with sampling times equal to that of the time series with which I have trained the model (thus what has been referred to as d_t)?
Thank you in advance for the support!
Best regards,
Marco neural state-space models, system identification, machine learning, deep learning, reduced order modelling, simulation MATLAB Answers — New Questions
median of grouped frequency data
Given the data below
calculate the median of the data in MATLAB
I have the code below
class_intervals = [420 430; 430 440; 440 450; 450 460; 460 470; 470 480; 480 490; 490 500];
frequencies = [336, 2112, 2336, 1074, 1553, 1336, 736, 85];
% Calculate the cumulative frequencies
cum_frequencies = cumsum(frequencies)
% Calculate the total number of observations
N = sum(frequencies);
% Find the median class (where cumulative frequency exceeds N/2)
median_class_index = find(cum_frequencies >= N/2, 1)
% Extract the lower boundary, frequency, and cumulative frequency of the class before the median class
L = class_intervals(median_class_index, 1) % lower boundary of the median class
f = frequencies(median_class_index) % frequency of the median class
if median_class_index == 1
cf = 0; % cumulative frequency before the median class
else
cf = cum_frequencies(median_class_index – 1) % cumulative frequency before the median class
end
% Calculate the width of the median class interval
h = class_intervals(median_class_index, 2) – class_intervals(median_class_index, 1)
% Calculate the median using the formula
median = L + ((N/2 – cf) / f) * h
However I was wondering if instead of calculating it manually is there any inbuilt function in MATLAB to calculate median of grouped data.Given the data below
calculate the median of the data in MATLAB
I have the code below
class_intervals = [420 430; 430 440; 440 450; 450 460; 460 470; 470 480; 480 490; 490 500];
frequencies = [336, 2112, 2336, 1074, 1553, 1336, 736, 85];
% Calculate the cumulative frequencies
cum_frequencies = cumsum(frequencies)
% Calculate the total number of observations
N = sum(frequencies);
% Find the median class (where cumulative frequency exceeds N/2)
median_class_index = find(cum_frequencies >= N/2, 1)
% Extract the lower boundary, frequency, and cumulative frequency of the class before the median class
L = class_intervals(median_class_index, 1) % lower boundary of the median class
f = frequencies(median_class_index) % frequency of the median class
if median_class_index == 1
cf = 0; % cumulative frequency before the median class
else
cf = cum_frequencies(median_class_index – 1) % cumulative frequency before the median class
end
% Calculate the width of the median class interval
h = class_intervals(median_class_index, 2) – class_intervals(median_class_index, 1)
% Calculate the median using the formula
median = L + ((N/2 – cf) / f) * h
However I was wondering if instead of calculating it manually is there any inbuilt function in MATLAB to calculate median of grouped data. Given the data below
calculate the median of the data in MATLAB
I have the code below
class_intervals = [420 430; 430 440; 440 450; 450 460; 460 470; 470 480; 480 490; 490 500];
frequencies = [336, 2112, 2336, 1074, 1553, 1336, 736, 85];
% Calculate the cumulative frequencies
cum_frequencies = cumsum(frequencies)
% Calculate the total number of observations
N = sum(frequencies);
% Find the median class (where cumulative frequency exceeds N/2)
median_class_index = find(cum_frequencies >= N/2, 1)
% Extract the lower boundary, frequency, and cumulative frequency of the class before the median class
L = class_intervals(median_class_index, 1) % lower boundary of the median class
f = frequencies(median_class_index) % frequency of the median class
if median_class_index == 1
cf = 0; % cumulative frequency before the median class
else
cf = cum_frequencies(median_class_index – 1) % cumulative frequency before the median class
end
% Calculate the width of the median class interval
h = class_intervals(median_class_index, 2) – class_intervals(median_class_index, 1)
% Calculate the median using the formula
median = L + ((N/2 – cf) / f) * h
However I was wondering if instead of calculating it manually is there any inbuilt function in MATLAB to calculate median of grouped data. descriptive statistics MATLAB Answers — New Questions
Shapley values for newff model
Hi there, I trained a BP nerual network using newff function, and want to obtain its Shapley values and swarmchart graph. But I have got the following error:
Code:
P = [2 3 1;3 4 5;1 3 4;4 6 7;2 7 3]’;
T = [1 2 3 4 5];
net=newff(P,T,5,{‘tansig’ ‘purelin’},’trainlm’);
[net,tr]=train(net,P,T);
queryPoint = P(:,1);
explainer1 = shapley(net,P,’QueryPoint’,queryPoint);
Error:
Error using shapley (line 233)
Blackbox model must be a classification model, regression model, or function handle
Error in untitled (line 10)
explainer1 = shapley(net,P,’QueryPoint’,queryPoint);Hi there, I trained a BP nerual network using newff function, and want to obtain its Shapley values and swarmchart graph. But I have got the following error:
Code:
P = [2 3 1;3 4 5;1 3 4;4 6 7;2 7 3]’;
T = [1 2 3 4 5];
net=newff(P,T,5,{‘tansig’ ‘purelin’},’trainlm’);
[net,tr]=train(net,P,T);
queryPoint = P(:,1);
explainer1 = shapley(net,P,’QueryPoint’,queryPoint);
Error:
Error using shapley (line 233)
Blackbox model must be a classification model, regression model, or function handle
Error in untitled (line 10)
explainer1 = shapley(net,P,’QueryPoint’,queryPoint); Hi there, I trained a BP nerual network using newff function, and want to obtain its Shapley values and swarmchart graph. But I have got the following error:
Code:
P = [2 3 1;3 4 5;1 3 4;4 6 7;2 7 3]’;
T = [1 2 3 4 5];
net=newff(P,T,5,{‘tansig’ ‘purelin’},’trainlm’);
[net,tr]=train(net,P,T);
queryPoint = P(:,1);
explainer1 = shapley(net,P,’QueryPoint’,queryPoint);
Error:
Error using shapley (line 233)
Blackbox model must be a classification model, regression model, or function handle
Error in untitled (line 10)
explainer1 = shapley(net,P,’QueryPoint’,queryPoint); shapley MATLAB Answers — New Questions
PSAT Compatibility issues for MATLAB
Hello Guys,
I have been trying to run PSAT for MATLAB, however even the example files are not working for me. Has the code become obsolete? Is the PSAT no longer working?
I tried the latest available version for PSAT(2.1.11) with MATLAB R2024a and R2018a but both did not work.
This is the error message which gets generated when I try to load an example .m file from the tests folder and hit power flow button.
Error using fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in fm_wcall (line 49)
count = fprintf(fid,’function fm_call(flag)nn’);
Error in fm_spf (line 41)
fm_wcall;
Error in fm_set (line 721)
fm_spf
Error while evaluating UIControl Callback
For the .mdl example file, it is generating the following error
Simulink Model Conversion
Simulink File <d_hvdc.mdl>.
Loading Simulink Model
Error using delete
Cannot access method ‘delete’ in class ‘matlab.ui.Root’.
Error in fm_bar (line 41)
if ishandle(Hdl.bar), delete(Hdl.bar); end
Error in sim2psat (line 133)
fm_bar open
Error in fm_dirset (line 474)
check = sim2psat(filename,pwd);
Error in fm_dirset (line 563)
check = fm_dirset(‘convert’);
Error using uiwait (line 81)
Error while evaluating UIControl Callback.
I made sure to unzip the folder correctly and even add to path, but still the problem persists.
Any help would be greatly benefical.
Best RegardsHello Guys,
I have been trying to run PSAT for MATLAB, however even the example files are not working for me. Has the code become obsolete? Is the PSAT no longer working?
I tried the latest available version for PSAT(2.1.11) with MATLAB R2024a and R2018a but both did not work.
This is the error message which gets generated when I try to load an example .m file from the tests folder and hit power flow button.
Error using fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in fm_wcall (line 49)
count = fprintf(fid,’function fm_call(flag)nn’);
Error in fm_spf (line 41)
fm_wcall;
Error in fm_set (line 721)
fm_spf
Error while evaluating UIControl Callback
For the .mdl example file, it is generating the following error
Simulink Model Conversion
Simulink File <d_hvdc.mdl>.
Loading Simulink Model
Error using delete
Cannot access method ‘delete’ in class ‘matlab.ui.Root’.
Error in fm_bar (line 41)
if ishandle(Hdl.bar), delete(Hdl.bar); end
Error in sim2psat (line 133)
fm_bar open
Error in fm_dirset (line 474)
check = sim2psat(filename,pwd);
Error in fm_dirset (line 563)
check = fm_dirset(‘convert’);
Error using uiwait (line 81)
Error while evaluating UIControl Callback.
I made sure to unzip the folder correctly and even add to path, but still the problem persists.
Any help would be greatly benefical.
Best Regards Hello Guys,
I have been trying to run PSAT for MATLAB, however even the example files are not working for me. Has the code become obsolete? Is the PSAT no longer working?
I tried the latest available version for PSAT(2.1.11) with MATLAB R2024a and R2018a but both did not work.
This is the error message which gets generated when I try to load an example .m file from the tests folder and hit power flow button.
Error using fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in fm_wcall (line 49)
count = fprintf(fid,’function fm_call(flag)nn’);
Error in fm_spf (line 41)
fm_wcall;
Error in fm_set (line 721)
fm_spf
Error while evaluating UIControl Callback
For the .mdl example file, it is generating the following error
Simulink Model Conversion
Simulink File <d_hvdc.mdl>.
Loading Simulink Model
Error using delete
Cannot access method ‘delete’ in class ‘matlab.ui.Root’.
Error in fm_bar (line 41)
if ishandle(Hdl.bar), delete(Hdl.bar); end
Error in sim2psat (line 133)
fm_bar open
Error in fm_dirset (line 474)
check = sim2psat(filename,pwd);
Error in fm_dirset (line 563)
check = fm_dirset(‘convert’);
Error using uiwait (line 81)
Error while evaluating UIControl Callback.
I made sure to unzip the folder correctly and even add to path, but still the problem persists.
Any help would be greatly benefical.
Best Regards psat, compatibility MATLAB Answers — New Questions
Inverse dynamics block to forward dynamics block
Hello, I am currently facing an issue related to the joint positions of a 6-axis robotic arm. My objective is to visualize these joint accelerations without using a controller(That will be done later). Here’s my approach: I generate a trajectory using a minimum jerk polynomial trajectory, obtaining joint positions (q), velocities (qd), and accelerations (qdd). I then use these values along with an external force (fexterior) as inputs for the Inverse Dynamics block, resulting in joint torques.
Now, with these obtained joint torques, along with the initial joint positions (q), velocities (qd), and the external force (fext) used earlier, I attempt to regenerate the joint positions using the Forward Dynamics block. However, I observe that the joint accelerations remain constant even when I vary the external force (Fext). This is perplexing, especially considering that when I use the Inverse Dynamics block with different Fext values, I obtain distinct joint torques for each payload. Yet, the results from the Forward Dynamics block remain the same.
Could you provide insights into why the joint accelerations from the Forward Dynamics block are not varying with changes in the external force, despite the distinct joint torques obtained from the Inverse Dynamics block for different payloads? Your assistance is highly appreciated. Thank you!Hello, I am currently facing an issue related to the joint positions of a 6-axis robotic arm. My objective is to visualize these joint accelerations without using a controller(That will be done later). Here’s my approach: I generate a trajectory using a minimum jerk polynomial trajectory, obtaining joint positions (q), velocities (qd), and accelerations (qdd). I then use these values along with an external force (fexterior) as inputs for the Inverse Dynamics block, resulting in joint torques.
Now, with these obtained joint torques, along with the initial joint positions (q), velocities (qd), and the external force (fext) used earlier, I attempt to regenerate the joint positions using the Forward Dynamics block. However, I observe that the joint accelerations remain constant even when I vary the external force (Fext). This is perplexing, especially considering that when I use the Inverse Dynamics block with different Fext values, I obtain distinct joint torques for each payload. Yet, the results from the Forward Dynamics block remain the same.
Could you provide insights into why the joint accelerations from the Forward Dynamics block are not varying with changes in the external force, despite the distinct joint torques obtained from the Inverse Dynamics block for different payloads? Your assistance is highly appreciated. Thank you! Hello, I am currently facing an issue related to the joint positions of a 6-axis robotic arm. My objective is to visualize these joint accelerations without using a controller(That will be done later). Here’s my approach: I generate a trajectory using a minimum jerk polynomial trajectory, obtaining joint positions (q), velocities (qd), and accelerations (qdd). I then use these values along with an external force (fexterior) as inputs for the Inverse Dynamics block, resulting in joint torques.
Now, with these obtained joint torques, along with the initial joint positions (q), velocities (qd), and the external force (fext) used earlier, I attempt to regenerate the joint positions using the Forward Dynamics block. However, I observe that the joint accelerations remain constant even when I vary the external force (Fext). This is perplexing, especially considering that when I use the Inverse Dynamics block with different Fext values, I obtain distinct joint torques for each payload. Yet, the results from the Forward Dynamics block remain the same.
Could you provide insights into why the joint accelerations from the Forward Dynamics block are not varying with changes in the external force, despite the distinct joint torques obtained from the Inverse Dynamics block for different payloads? Your assistance is highly appreciated. Thank you! simulink MATLAB Answers — New Questions
What does x(1,:) do in MATLAB ?
What does x(1,:) do in MATLAB ?
eg:
at = sqrt(Po)*exp(-0.5*(1+i*C)*(tau./t0).^(2*m))
a0 = fft(at(1,:));
what does at(1,:) do here ?What does x(1,:) do in MATLAB ?
eg:
at = sqrt(Po)*exp(-0.5*(1+i*C)*(tau./t0).^(2*m))
a0 = fft(at(1,:));
what does at(1,:) do here ? What does x(1,:) do in MATLAB ?
eg:
at = sqrt(Po)*exp(-0.5*(1+i*C)*(tau./t0).^(2*m))
a0 = fft(at(1,:));
what does at(1,:) do here ? syntax MATLAB Answers — New Questions