我正在尝试使用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 ;.
我将不胜感激。
答案 0 :(得分:1)
似乎size
的输出y
的{{1}}为50000 x 1(与parameterfun
的大小相同)。 sig
旨在优化标量目标函数:这是一个输出大小为1 x的函数。