我正在尝试使用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返回计算值。
所以,问题出现在我的最后,但我不知道我在哪里误会。你能救我吗?
提前谢谢。
答案 0 :(得分:0)
fob_2v = @(kt) fob_2(kt(1), kt(2)
y=fminsearch(fob_2v,[1,1])
有效!