TLDR:
简而言之,重写
的最佳方法是什么time = 0:0.1:10;
[T,X,Y] = sim('model',time)
现代" Simulink语法没有明确的时间输入?
看起来我已经过时了w.r.t.我的Simulink用法。 "当前"以编程方式运行Simulink模型的语法是:
simOut = sim(model,'Name','Value',…)
simOut = sim(model,ParameterStruct)
simOut = sim(model,ConfigSet)
文档提供了各种复杂的方法来设置在这里使用的参数。
" old" (2009b之前)Simulink的语法略有不同:
time = 0:0.1:10;
[T,X,Y] = sim('model',time)
这里,time
就像函数ode45
的参数一样;它可以指定返回值的时间向量,即使在使用变量步长求解器时也是如此。
如何在sim
"现代语法"?中复制此行为?我尝试过以下方法:
simOut = sim(mdl,'OutputOption','SpecifiedOutputTimes','OutputTimes','time');
但是这给了我以下错误:
在框图的配置参数对话框中指定的无效输出时间' ...'
使用更简单的
simOut = sim(mdl,'OutputTimes','time');
正确运行"指定tout
,但没有保存的信号具有匹配的长度。我觉得自己错过了一些显而易见的事情,而且我已经在这方面杀了太多时间。
答案 0 :(得分:1)
name/value pairs功能接受的sim
可以是model parameters中您可以通过Configuration Parameters Dialog Box指定的任何OutputTimes
。似乎值必须与通常输入配置GUI的格式相同。 StopTime
参数输入到可编辑的文本框中,这意味着它必须是一个字符数组,用于定义Simulink应生成输出的时间矩阵。我希望以下内容能够正常工作,并且等同于旧语法:
simOut = sim(mdl, 'OutputOption', 'SpecifiedOutputTimes', 'OutputTimes', '0:0.1:10');
如果将OutputTimes
参数替换为存储时间的工作空间中的变量名称, 也可以正常工作:
times = 0:0.1:10;
simOut = sim(mdl, 'OutputOption', 'SpecifiedOutputTimes', 'OutputTimes', 'times');
编辑:另一个问题是确保OutputTimes
中的最长时间不超过模拟built-in bouncing ball model。以下是使用{{3}}且默认StopTime
为25秒的示例:
>> simOut = sim('sldemo_bounce', 'OutputOption', 'SpecifiedOutputTimes', ...
'OutputTimes', '0:0.1:25'); % No error
>> simOut = sim('sldemo_bounce', 'OutputOption', 'SpecifiedOutputTimes', ...
'OutputTimes', '0:0.1:30'); % OutputTimes too long
Invalid OutputTimes specified in the Configuration Parameters dialog for
block diagram 'sldemo_bounce'
>> simOut = sim('sldemo_bounce', 'OutputOption', 'SpecifiedOutputTimes', ...
'OutputTimes', '0:0.1:30', ...
'StopTime', '30'); % Extend StopTime, no error