一段时间后,我设法找到一个解决方案,解决了我的问题!
通过添加一个输入参数输入的matlab函数和喂养一个常数value-block:
函数[outputPort、日志]= failureRate(时间、λnSensors、种子)
持续的failedCount失败
如果isempty(失败)
失败= false (1、nSensors);
failedCount = 0;
rng(种子)%发起与种子从常数块以外的功能。
结束
%故障率函数,随机变量
failRate = @ (t, lam) 1 - exp (- t * lam);
兰德(r = 1, nSensors);
nBroken = 0;
如果任何(r < failRate(时间,λ))
tmp =失败;
失败= max(失败,r < failRate(时间、λ));
日志= (0,0);
如果failedCount <总和(失败)
failedCount =总和(失败);
nBroken =(失败- tmp)之和;
结束
结束
如果(失败)
%所有传感器坏了
outputPort = 2;
日志= (nBroken、时间);
其他的
%仍然工作
outputPort = 1;
日志= (nBroken > 0,时间);
结束
结束
然后为每个模拟SimulationInput-object随机种子值如下:
seedBlockPath =“SensorFailure /子系统/仿真软件功万博1manbetx能/种子”;
为i = 1: n
%设置为每个模拟随机种子
思敏(i) = Sim万博1manbetxulink.SimulationInput (“SensorFailure”);
r =兰迪(99999);
思敏(i) =思敏(我).setBlockParameter (seedBlockPath,“价值”num2str (r));
结束
= parsim(思敏,…
“ShowSimulationManager”,“关闭”,…
“ShowProgress”,“上”,…
“TransferBaseWorkspaceVariables”,“上”,…
“UseFastRestart”,“上”,…
“StopOnError”,“上”);