2

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

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

代替

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

反正周围有吗?

4

3 回答 3

3

两种选择:

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

或者

err = sum(abs(reshape(a-b,[],1)));
于 2012-02-18T01:37:46.457 回答
3

您可以使用匿名辅助函数绕过语法限制。例如

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

不过仍然需要两条线。

于 2012-02-18T06:11:19.157 回答
1

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

于 2012-02-18T01:39:09.223 回答