使用fminunc查找输入向量

时间:2015-05-09 13:59:03

标签: matlab optimization

我的目标如下:

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);

1 个答案:

答案 0 :(得分:0)

您需要一个带有一个输入变量的成本函数,并将其传递给fminunc。因此,您可以创建一个依赖于y的匿名函数,并将y_des传递给函数err。

cf = @(y) err(y_des, y);
[x,fval] = fminunc(cf, y_des);