matlab目标函数必须返回标量值

时间:2017-05-22 13:21:22

标签: matlab

我试图理解现在fminunc(fmincon)有效,但是我一直在收到错误。

当我使用带有两个变量的文档示例时

fun = @(x)3*x(1)^2 + 2*x(1)*x(2) + x(2)^2 - 4*x(1) + 5*x(2);
x0 = [1,1];
[x,fval] = fminunc(fun,x0);
一切正常。

Hovewer,当我试图让飞机获得3分时, 代码不起作用

n0 = [ 0  1 -2; 
       1  2  1;
      -2 -4 -4]
fun = @(x) [x(1) x(2) x(3)] * n0 - [1 1 1]

fminunc的任务只是一个例子。我知道我可以很容易地解析它。

1 个答案:

答案 0 :(得分:1)

成本函数返回标量。你写的东西返回一个[1x3]矩阵。如果你想最小化欧氏距离,你可以尝试这样的事情

fun = @(x) sum(([x(1) x(2) x(3)] * n0 - [1 1 1]).^2);