如何在matlab中使用带有求和的fminunc?

时间:2017-05-30 11:45:03

标签: matlab

我正在尝试使用fminunc解决以下函数:

Σ((x(i)-1).^2) for i = 1 to 20

我的代码如下:

fun4 =  @(x) sum((x(i)-1).^2, i, 1, 20)
[x,fval,exitflag,output]= fminunc(fun4,[1,1])

并且,它会出现以下错误:

  

???使用==>时出错sym.sym>未实现于2514

     

功能' subsindex'没有为MuPAD符号对象实现。

请问你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您应该查看sum documentation,了解有关如何使用它来对矢量求和的详细信息。

在您的情况下,如果您有至少20个元素的向量x,则可以在x(i)中获取“i的子向量”范围1到20“by x(1:20)

只需使用标准减法符号就可以从向量中减去标量,但要分别对所有元素进行平方处理,应使用“逐元素”运算符(在运算符前加一个点,如{{1} })。碰巧的是,无论如何你已经这样做了。

您传递给.^的第2,第3和第4个参数导致错误,因为sum不期望您传递给它的参数。有关 期望的输入的详细信息,请参阅链接的文档。

所有这些意味着您的功能可以简化:

sum