Matlab,运行模拟,输入逐渐增加

问题描述

我有一个简单的传递函数模型,带有单个变量输入(增益,称为“ k”)。我试图运行10个模拟,其中'k'的值从1开始,并在每次迭代时增加值1。我尝试执行此操作的第一种方法是遵循使用以下代码的教程:

for k = 1:10;
    data(k) = sim ('model_name','ReturnWorkspaceOutputs','on');   
end

这最终为我提供了具有相同输出数据的1x10仿真输出矩阵(好像每次k的值为5)。如果我用k = 1运行一次sim,则输出仍然好像k的值为5。从simulink启动(而不是从matlab启动)时,model-sim可以按预期工作。 然后,根据Simulink输入类的文档,使用以下代码尝试使用以下代码创建10个输入类对象。

for l = 1:10;
    in = Simulink.SimulationInput('model_name');
    in = in.setBlockParameter('k','Value','l');
    data(l) = sim ('in','on');   
end

我在这里遇到的错误是“未定义的变量“ Simulink”或类“ Simulink.SimulationInput””。我的问题是,在每次连续迭代中更改块参数时,迭代地运行仿真的最佳(简单)方法是什么?谢谢您的时间。

解决方法

您的第一次尝试应该可以工作,但是如果您在函数中运行此代码,则模型将在基本工作区中(最有可能)为块参数评估“ k”表达式。如果“ k”在那里为5,则每次迭代将为5。

默认情况下,即使您在另一个函数的工作区中运行“ sim”功能,Simulink也会在掩码工作区>模型工作区>基础工作区(和/或数据字典)中评估参数值。

但是,您可以运行“ sim”命令,指定它应使用从中调用“ sim”的函数的工作空间,如下所示:

for k = 1:10;
    data(k) = sim('model_name','ReturnWorkspaceOutputs','on','SrcWorkspace','current'); 
end

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...