如果可以在表达式上使用冒号运算符,那将非常方便。据我所知,这是不可能的。例如,当我想计算两个矩阵之间的差异时,我必须分两行。
diff = (a - b);
err = sum(abs(diff(:)));
而不是
diff = sum(abs((a-b)(:)));
它周围有吗?
答案 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不支持这种嵌套索引。