MATLAB R2015a多变量函数优化

时间:2016-04-29 08:04:44

标签: matlab optimization

我正在尝试使用MATLAB R2015a最小化具有两个变量的目标函数。目标函数是:

function i3 = fob_2(kp,ti)

G_P = tf(0.2,[2 4 1]);
G_TT = tf(0.1,[0.5 1]);
G_TC = tf(kp*[1 1/ti],[1 0]);
G_CV = 50;
G_TA = 0.1;

G_direct = G_TC * G_CV * G_P;
G_loop = feedback (G_direct , G_TT);
G_SYS = G_TA * G_loop;
SP = 1;
[DT,time] = step(SP * G_SYS);
error = SP - DT;

i3 = trapz(time,error.^2);

我尝试了一些优化功能,但似乎都没有。我总是收到错误消息:" 没有足够的输入参数。"在函数的第五行,即

 G_TC = tf(kp*[1 1/ti],[1 0]);

我尝试了以下使用语法提供的函数(此时我并不关心起点。我更关心的是获得答案并正确编程优化函数):

y=fminimax(fob_2,[1,1])

y=fminsearch(fob_2,[1,1])

y=fminunc(fob_2,[1,1])

我确信该功能已正确编程,因为当我尝试使用两个参数调用它时,例如:

fob_2(2,5)

MATLAB返回计算值。

所以,问题出现在我的最后,但我不知道我在哪里误会。你能救我吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

fob_2v = @(kt) fob_2(kt(1), kt(2)
y=fminsearch(fob_2v,[1,1])

有效!