在simulink中仿真100次,然后找出X仿真100次的最大值,在matlab中怎么实现循环,不用手动每次都要改seed?

2024年12月04日 18:22
有2个网友回答
网友(1):

(1)在simulink里面把你想要输出的变量放到simout里面(simulink里面sinks部分里面有),simout调整成一个向量形式(save format选array)
(2)写个m文件:
// 假设你的mdl文件名是abc.mdl
simresults={};
for i=1:100
sim('abc');
simresults=[simresults simout];
end
(3)执行m文件,完了之后simresults的每一列就是每一次模拟的结果(不同时间时不同的x),一共会有100列。在这个cell阵里面找你想要的最大值即可。求最大值的代码都可以放到上面的m文件代码后面一并执行。例如
xmax=-inf;
for i=1:100
mat=simresults{1,i};
xmaxtest=max(mat);
if xmaxtest>xmax
xmax=xmaxtest;
end
end

附:可以先试试这个
simresults=[];
for i=1:100
sim('abc');
simresults=[simresults simout];
end
xmax=max(max(simresults));
如果这个运行不出错的话simresults会是一个100列的矩阵,在这个里面找最大值xmax更方便。

(注意!不要直接copy paste这里的代码,会出错的!自己手打进去比较好)

网友(2):

matlab 添加
rng ('shuffle')
%每次都自动改seed