我的目标如下:
p1=tf(1,[ 1 10 ]); p2=tf(1,[ 1 20 ]);
object=p1*p2;
时间存储在向量t=1:n
中,n
已知。
已知所需的系统输出,存储在向量y_des
中。
使用[y,t]=lsim(object,u,t)
,我得到动态系统对输入向量u
的时间响应,我需要对其进行优化,以便最小化我的错误函数。
错误功能如下:
function e = err( y_des, y )
e=0;
for i=1:size(y_zad,1)
e=e+( y_des(i) - y(i) )^2;
end
end
如何使用Matlab函数fminunc()
来优化我的输入向量?我知道它应该是这样的:
[x,fval]=fminunc(@err,y_des);
答案 0 :(得分:0)
您需要一个带有一个输入变量的成本函数,并将其传递给fminunc。因此,您可以创建一个依赖于y的匿名函数,并将y_des传递给函数err。
cf = @(y) err(y_des, y);
[x,fval] = fminunc(cf, y_des);