Save and plot the Simout from simulink for every iteration of For loop applied in MATLAB

조회 수: 13 (최근 30일)
I Wish to change the parameter of Block T1 of Simulink and then i need to plot the graph and compare these 5 plots.
Hence i have for loop in MATLAB and controlled the paramters from MATLAB script using set_param.
Please refer the profgram below.
The problem i m not getting the ouput for 5 different plots and i end up getting only the last value of the iteration. i.e
i get the output values for only parameter with block T1 = '1'.
how can i save the output from simout at each iteration and plot the graphs.
Please help. Thanks in Advance.
I m writing my program below for reference
open_system('Belgium');
for i = 1:5
if i==1
set_param('Belgium/T1','Value','0');
elseif i==2
set_param('Belgium/T1','Value','0.1');
elseif i==3
set_param('Belgium/T1','Value','0.2');
elseif i==4
set_param('Belgium/T1','Value','0.5');
else
set_param('Belgium/T1','Value','1');
sim('Belgium');
open_system('Belgium/Scope3');
x = zeros(102,80);
y = zeros(102,80);
voltage = zeros(102,1);
time = zeros(102,1);
voltage = ans.simout.data;
time = ans.simout.time;
x(:,i)= voltage;
y(:,i)= time;
plot(y(:,i),x(:,i));
end

답변 (1개)

Pavan Guntha
Pavan Guntha 2021년 8월 30일
Hello Mayur,
For storing output of simout at each iteration, you could create a 2D array and use 'i' as index to write data into it as illustrated below:
voltage(i,:) = ans.simout.data;
time(i,:) = ans.simout.time;
You could also use 'hold' command to plot multiple graphs onto a single figure for comparison.
Hope this helps!

카테고리

Help CenterFile Exchange에서 Simulink에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by