在Matlab中一起使用元素运算和元素索引

时间:2012-02-28 16:55:00

标签: matlab

我想写一个匿名函数,以矢量theta作为输入,并计算theta的前半部分第四平方的总和:

L=@(theta) sum(theta.^4(1:length(theta)/2))

但Matlab报告错误

??? Error: File: c2n9.m Line: 3 Column: 27
Unbalanced or unexpected parenthesis or bracket.

我发现错误与以下更简单的示例相同

>> a=ones(1,4)

a =

     1     1     1     1

>> a.^4(1:2)
??? a.^4(1:2)
        |
Error: Unbalanced or unexpected parenthesis or bracket.

>> (a.^4)(1:2)
??? (a.^4)(1:2)
          |
Error: Unbalanced or unexpected parenthesis or bracket.

我想知道如何使这个简单的例子和​​匿名函数一起工作?

谢谢!

3 个答案:

答案 0 :(得分:1)

你可以改为

a(1:2).^4

答案 1 :(得分:1)

你应该在每个元素提升到幂之前进行索引

而不是:

L=@(theta) sum(theta.^4(1:length(theta)/2))

L=@(theta) sum(theta(1:round(length(theta)/2)).^4)

请注意,我还添加了一个回合来处理θ的长度为奇数

的情况

答案 2 :(得分:0)

呃,你不是错过了第一个错误信息指向的地方的乘法符号吗?或其他什么?