Math 使用fminsearch错误

Math 使用fminsearch错误,math,matlab,Math,Matlab,我有以下职能: function f=kriteriyLR3(a,w,ft) ye=[0.5 1 2 3.5 4 3.8 2.9 2.5 1 0.3]; t=[0.2 0.3 0.35 1.6 1.78 1.8 2 2.3 2.5 3]; s=0; for i=1:10 s=s+(ye(i)-a*sin(w*t(i)+ft))^2; end f=s; 我希望将其最小化,并执行以下操作: a=1; w=1; ft=1; x = fminsearch('kriteriyLR3',[], a,w

我有以下职能:

function f=kriteriyLR3(a,w,ft)
ye=[0.5 1 2 3.5 4 3.8 2.9 2.5 1 0.3];
t=[0.2 0.3 0.35 1.6 1.78 1.8 2 2.3 2.5 3];
s=0;
for i=1:10
  s=s+(ye(i)-a*sin(w*t(i)+ft))^2;
end
f=s;
我希望将其最小化,并执行以下操作:

a=1;
w=1;
ft=1;
x = fminsearch('kriteriyLR3',[], a,w,ft);
我收到以下错误:

>> mainLR3
Subscripted assignment dimension mismatch.

Error in fminsearch (line 191)
fv(:,1) = funfcn(x,varargin{:});

Error in mainLR3 (line 12)
x = fminsearch('kriteriyLR3',[], a,w,ft); 

据我所知,尺寸不匹配,但我不知道如何修复它。有什么帮助吗?

您将此函数最小化为什么参数的函数?fminsearch应该改变哪些变量?起始值是多少?阅读fminsearch的帮助。第二个输入参数是什么?你为什么用空括号传递

第三个论点是什么?阅读帮助。您不能简单地以任意甚至随机的顺序传递参数,并期望fminsearch预测您的意图。

fminsearch将对一个变量进行优化,但该变量可以是一个向量。以下是帮助中的一个相关示例:

     f = @(x,c) x(1).^2+c.*x(2).^2;  % The parameterized function.
     c = 1.5;                        % The parameter.
     X = fminsearch(@(x) f(x,c),[0.3;1])

fminsearch将找到x上的最小值,同时保持c恒定在1.5,并从[0.3;1]开始。正如@woodchips所提到的,你必须决定a、w或ft是你要最小化的。在fminsearch中使用匿名函数确实很有价值——请确保您了解简单的示例以及匿名函数的工作原理。从有用的东西开始,用你自己的例子慢慢地修改它们,这样你就可以理解增量变化。祝你好运

您是否阅读了有关的帮助

您的调用语法完全错误。我想你想要的是:

x = fminsearch(@(x) kriteriyLR3(x(1),x(2),x(3)), [a,w,ft],[]);

如果你看一下你正在使用的语法,你会发现你试图从[]开始,这意味着funfcnx,varargin{:}将返回[],它与预期的大小不匹配。

我尝试将函数最小化为3个参数的函数:a,w,ft。第二个输入参数代表选项。