我有以下问题。我想将一个simulink模型集成到一个matlab脚本中,用循环中的simulink部分循环完成不同的事情。
当我在工作区中定义我用于simulink模型的参数时,下面的程序实际上做了我所希望的。但是这个解决方案并不能让我满意。我想将参数作为sim
函数的第二个值传递。不幸的是,我无法理解这一点。我实际上复制了部件以从matlab站点创建一个结构,其中给出了以下代码示例。
myStruct = Simulink.Parameter;
myStruct.Value = struct('number',1,'units',24);
myStruct.CoderInfo.StorageClass = 'ExportedGlobal';
不幸的是我收到以下错误Input argument "m_startSpeed" is undefined.
,因为在我的脚本中,参数m_startSpeed
是我在运行脚本时输入的值。
function [optBreakPoint] = computeBreakPoint(m_startSpeed, m_endSpeed, m_length)
myStruct = Simulink.Parameter;
myStruct.Value = struct('m' , 1500, 'R' , 0.25, 'mi' , 1, 'f' , 0.1, 'F' , 50000,'BreakForce' , -10, 'startSpeed' , m_startSpeed, 'breakPoint' , m_length);
myStruct.CoderInfo.StorageClass = 'ExportedGlobal';
endSpeed = m_endSpeed;
while(1)
[T, X, Y] = sim('car', myStruct);
optBreakPoint = breakPoint;
break;
end
plot(T, X);
end
我该如何解决这个问题?
答案 0 :(得分:0)
输入结构(即sim函数的第二个输入)包含有关如何模拟模型的信息(即模型配置对话框或配置集中的信息),而不是模型中块的参数。
看看
>> doc sim
或http://www.mathworks.com/help/simulink/slref/sim.html 有关该结构应该是什么样子的一个例子。
块参数是从工作空间获取的 - 默认情况下是基础工作空间,但您可以通过更改模型的“SrcWorkspace”参数来指定。
此属性也在上述文档页面中讨论。