将simulink集成到matlab脚本中

时间:2013-12-30 19:30:38

标签: matlab simulink

我有以下问题。我想将一个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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

输入结构(即sim函数的第二个输入)包含有关如何模拟模型的信息(即模型配置对话框或配置集中的信息),而不是模型中块的参数。

看看

>> doc sim

http://www.mathworks.com/help/simulink/slref/sim.html 有关该结构应该是什么样子的一个例子。

块参数是从工作空间获取的 - 默认情况下是基础工作空间,但您可以通过更改模型的“SrcWorkspace”参数来指定。

此属性也在上述文档页面中讨论。