是否可以在MATLAB中对表达式应用冒号运算符?

时间:2012-02-18 01:32:44

标签: matlab colon

如果可以在表达式上使用冒号运算符,那将非常方便。据我所知,这是不可能的。例如,当我想计算两个矩阵之间的差异时,我必须分两行。

diff = (a - b);
err = sum(abs(diff(:)));

而不是

diff = sum(abs((a-b)(:)));

它周围有吗?

3 个答案:

答案 0 :(得分:3)

两个选项:

err = sum(abs(a(:)-b(:)));

err = sum(abs(reshape(a-b,[],1)));

答案 1 :(得分:3)

您可以使用匿名帮助程序函数解决语法限制。 EG

oneD = @(x)x(:);
diff = sum(abs(oneD(a-b))));

虽然仍然需要两行。

答案 2 :(得分:1)

在这种特殊情况下,您可以sum(abs(a(:)-b(:))),但一般来说,Matlab不支持这种嵌套索引。