我试图使用Matlab文档中给出的最小化函数的示例,并在Matlab R2016a中运行它,但它会产生错误。 这是一个例子:
这是我写的代码:
function b = test_algo(v)
x = v(1);
y = v(2);
z = v(3);
b = x.^2 + 2.5*sin(y) - z^2*x^2*y^2;
v = [-0.6 -1.2 0.135];
a = fminsearch(@test_algo,v);
disp('a', a);
但不是预期的结果我得到一个错误:
Not enough input arguments.
Error in test_algo (line 3)
x = v(1);
知道为什么吗?谢谢!
答案 0 :(得分:2)
根据您执行代码的方式,您必须将fminsearch
的调用放在一个单独的函数中:
function test()
v = [-0.6 -1.2 0.135];
a = fminsearch(@test_algo,v);
disp(a);
function b = test_algo(v)
x = v(1);
y = v(2);
z = v(3);
b = x.^2 + 2.5*sin(y) - z^2*x^2*y^2;
如果我将所有内容都放在m文件中并执行它,上面的示例对我有用。
答案 1 :(得分:0)
您需要将目标函数b = @(v) v(1).^2 + 2.5*sin(v(2)) - v(3)^2*v(1)^2*v(2)^2;
v0 = [-0.6 -1.2 0.135];
a = fminsearch(b,v0);
disp(a);
与调用它的代码分开定义。由于您不需要太多代码来定义目标函数,因此可以使用匿名函数来定义它:
Failed: Angular could not be found on the page http://test.blah.dev:3000/auth/login : retries looking for angular exceeded