如果可以在表达式上使用冒号运算符,那将非常方便。好吧,据我所知,这是不可能的。例如,当我想计算两个矩阵之间的差异时,我必须分两行进行。
diff = (a - b);
err = sum(abs(diff(:)));
代替
diff = sum(abs((a-b)(:)));
反正周围有吗?
两种选择:
err = sum(abs(a(:)-b(:)));
或者
err = sum(abs(reshape(a-b,[],1)));
您可以使用匿名辅助函数绕过语法限制。例如
oneD = @(x)x(:);
diff = sum(abs(oneD(a-b))));
不过仍然需要两条线。
在这种特殊情况下,您可以这样做sum(abs(a(:)-b(:)))
,但一般而言,Matlab 不支持这种嵌套索引。