我对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
}
答案 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语法。