优化期间的fmincon错误

时间:2014-03-02 15:15:17

标签: matlab

我正在尝试使用fmincon最小化错误信号:

function test()                                                            
 x0   = [1,1];
 sig = evalin('base','sig');  %importing vector sig from workspace                                             
 xin0 = [x0];                                                              
 [xin,fval] = fmincon(@parameterfun,xin0,[],[],[],[],[1,1],[100,100]);     
 end
 function y = parameterfun(xin)
 sig = evalin('base','sig');
 xin1 = xin(1);
 xin2 = xin(2);
 a = trapz(sig);
 b = sig;
 y = xin1*b + xin2*a;
 end

现在我收到了这个错误:

Error using fmincon (line 708)
User supplied objective function must return a scalar value.
Error in test (line 5)
 xin = fmincon(@parameterfun,xin0,[],[],[],[],[1,1],[100,100]);     %
 execute optimization

sig是我当前的错误信号,它是一个向量:sig< 500001x1 double&gt ;.

我将不胜感激。

1 个答案:

答案 0 :(得分:1)

似乎size的输出y的{​​{1}}为50000 x 1(与parameterfun的大小相同)。 sig旨在优化标量目标函数:这是一个输出大小为1 x的函数。