为了优化我的Simulink模型,我需要创建一个目标函数来计算测量值与模型响应之间的差异。我试过这个替代方案:
function f = fun(x)
sim(Model);
set_param(Model/Gain, Gain , x(1));
...
y =yout;
f = mesearments - y;
效果不好,我找到了另一个命令[y] = lsim(Model, u, t)
,但我想知道u
和t
代表什么。
我按照[MATLAB文档] [1],但这对我的模型不起作用,可能是因为我的模型过于复杂。
答案 0 :(得分:0)
lsim
用于模拟线性系统,因此与您的案例无关。如果您查看doc,那么您会看到模型是线性系统,而不是Simulink模型。
要解决有关lsim
的问题,u
和t
分别是输入和时间向量,用于线性模拟。
您还没有具体告诉我们为什么您的原始作品效果不佳,但我怀疑它是因为您错误地使用set_param
。新的增益值需要是一个字符串。也就是说,你需要像
set_param(Model/Gain, Gain , num2str(x(1)));