使用fminsearch和参数化函数进行Matlab最小化

时间:2013-08-04 19:07:40

标签: matlab math

我正在Matlab编写一个程序,我有一个以这种方式定义的函数。

sum (i=1...100) (a*x(i) + b*y(i) + c)

xy是已知的,而a,b和c则不是:我需要找到它们的值,以便最小化函数的总值。该问题没有其他限制。

我想过使用fminsearch来解决这个最小化问题,但是从Mathworks我得到的函数是fminsearch的合适输入,就像这样定义一个例子:

square = @(x) x.^2

所以在我的情况下,我可以使用向量p=[a, b, c]作为最小化的值,但后来我不知道如何定义函数的剩余部分。正如您所看到的,索引i的可能值的数量很大,因此我不能简单地将所有内容相加,但我需要以某种方式表示求和。如果我在其他地方编写函数,那么我被迫对a,b和c使用符号演算(用syms声明它们)并且我不确定fminsearch会接受它。

我该怎么办?当然,如果fminsearch对我的情况不可行,我接受链接使用别的东西。

1 个答案:

答案 0 :(得分:1)

最常见的解决方案是在目标函数的定义中使用xy

>> objfun = @(p) sum( p(1).*x + p(2).*y + p(3) );
>> optp = fminsearch( objfun, po, ... );