在命令提示符下在matlab中使用输入参数启动模拟

时间:2014-02-03 10:16:00

标签: matlab simulink

我对matlab很新,所以这个问题可能完全是胡说八道。我确实谷歌这些东西,只是迷路了 我给出了一个状态流模型,它是两个导弹的模拟。一个是目标,另一个是寻求者。模拟的输入是目标位置和模拟时间标记。根据输入,模拟将计算输出(导引头的位置)。我必须为每个传入的目标位置运行此模拟。问题是::
1.如何从我的C ++应用程序中为模拟提供输入(目标位置)? 2.因为我必须为每个目标输入计算导引头位置,对于每个给定输入运行模拟一个步骤是正确的方法吗?

Engine *ep;
ep = engOpen("");
engSetVisible(ep, true);
engEvalString(ep, "clear");
engEvalString(ep, "sim('mySimulationModel')");
for(every input of target)
{
    // How to provide input to this start of simulation
    engEvalString(ep, "set_param('mySimulationModel','SimulationCommand','start')");
    // read the required variable from workspace
}

1 个答案:

答案 0 :(得分:1)

警告 - 我对MATLAB引擎并不熟悉,但我认为这样的事情应该有效。

你可能最好将模拟包装成一个函数。另请注意,许多Simulink模型都配置为从基础工作区读取参数,因此您可能需要assignin('base', ...)

function [t, x, y] = simWrapper(param)
    assignin('base', 'myParameter', param);
    [t, x, y] = sim('mySimulationModel', [0 10]);
end

请注意,我在那里使用旧的SIM语法。