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

matlab与simulink交互实现循环,然后把仿真100次的最大值放到一个空矩阵中。... matlab与simulink交互实现循环,然后把仿真100次的最大值放到一个空矩阵中。 展开
 我来答
lnj1988
2013-09-22 · TA获得超过140个赞
知道答主
回答量:66
采纳率:0%
帮助的人:70.6万
展开全部
(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这里的代码,会出错的!自己手打进去比较好)
追问
可能我没说清楚哈,仿真一次出现一次仿真波形,里面有一个最大值,仿真100次这个模型,手动需要改100次,random中的 seed值,有100个不一样的波形,最后得到100个最大值,这样一个循环哈。seed不修改,仿真的波形会是一样的吧,初学simulink,请指教哈!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wong6764
2013-09-24 · TA获得超过9131个赞
知道大有可为答主
回答量:3350
采纳率:50%
帮助的人:1078万
展开全部
matlab 添加
rng ('shuffle')
%每次都自动改seed
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式