如何在变量x(1..n)中设置传递函数的参数,以便在Simulink中优化我的模型?

时间:2016-11-29 20:02:10

标签: matlab optimization simulink

为了优化我的Simulink模型,我需要创建一个目标函数来计算测量值与模型响应之间的差异。我试过这个替代方案:

function f = fun(x)
sim(Model);
set_param(Model/Gain, Gain , x(1));
...
y =yout;
f = mesearments - y; 

效果不好,我找到了另一个命令[y] = lsim(Model, u, t),但我想知道ut代表什么。 我按照[MATLAB文档] [1],但这对我的模型不起作用,可能是因为我的模型过于复杂。

[1] https://mathworks.com/help/ident/ref/lsim.html

1 个答案:

答案 0 :(得分:0)

lsim用于模拟线性系统,因此与您的案例无关。如果您查看doc,那么您会看到模型是线性系统,而不是Simulink模型。

要解决有关lsim的问题,ut分别是输入和时间向量,用于线性模拟。

您还没有具体告诉我们为什么您的原始作品效果不佳,但我怀疑它是因为您错误地使用set_param。新的增益值需要是一个字符串。也就是说,你需要像

这样的东西

set_param(Model/Gain, Gain , num2str(x(1)));