我想以编程方式调整一些Simulink参数,即指定外部输入和初始状态。 Mathworks在Data Import/Export上的帮助文档显示了如何以可视方式和编程方式执行此操作。显然,对于外部输入,我需要指定LoadExternalInputs
到'on'
;我想通过ExternalInput
覆盖默认外部输入到[myTimeVar, myInputVar]
,如该链接中所述。
尝试运行命令
sim('mySim', 'LoadExternalInputs', 'on', 'ExternalInput', [myTimeVar, myInputVar]);
产生以下错误消息:
参数'ExternalInput'
的block_diagram'mySim'中的设置无效
如果我不打算在sim()
电话中指定我的外部输入,我该去哪里做?我对如何指定输入和状态感到很困惑。
答案 0 :(得分:5)
ExternalInput参数必须是字符串,请尝试:
sim('mySim', 'LoadExternalInputs', 'on', 'ExternalInput', '[myTimeVar, myInputVar]');
答案 1 :(得分:2)
正如@MikeT所指出的,sim
命令以参数名称 - 值方式工作,因此参数名称和值都必须是字符串。命令应该是:
sim('mySim','LoadExternalInput', 'on', 'ExternalInput', [myTimeVar, myInputVar]);
我认为参数'LoadExternalInput'
不是必需的,但无论如何,它都是'LoadExternalInput'
而不是'LoadExternalInputs'
。我用get_param('modelName','ObjectParameters')
一些重要的评论:
备注#1:
使用sim
时,Simulink会自动将工作区切换到模型,因此如果在MATLAB函数或unitTest中执行sim
,可能会出错。
备注#2
在'ExternalInput','Inputs'
对中,'Inputs'
应包含所有列向量输入的逐列串联,从时间向量开始:'[myTimeVar, myInputVar1, myInputVar2, ..., myInputVarN]'
,所有列向量。< / p>
答案 2 :(得分:0)
help sim
向我展示了与您正在使用的命令格式不同的命令格式:
[t,x,y] = sim(model,timespan,options,ut);
我想也许这就是你想要的?
sim('mySim', myTimeSpan, [], [myTimeVar, myInputVar]);
(其中myTimeSpan
是模拟的时间跨度)