在simulink中仿真100次,然后找出X仿真100次的最大值,在matlab中怎么实现循环,不用手动每次都要改seed? 150
2个回答
展开全部
(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)写个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这里的代码,会出错的!自己手打进去比较好)
追问
可能我没说清楚哈,仿真一次出现一次仿真波形,里面有一个最大值,仿真100次这个模型,手动需要改100次,random中的 seed值,有100个不一样的波形,最后得到100个最大值,这样一个循环哈。seed不修改,仿真的波形会是一样的吧,初学simulink,请指教哈!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |