在MATLAB中可以在表达式上使用冒号运算符吗?

bt1cpqcv  于 2023-01-21  发布在  Matlab
关注(0)|答案(3)|浏览(192)

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

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

代替

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

它周围有什么东西吗?

bvuwiixz

bvuwiixz1#

你可以用匿名帮助函数来绕过语法限制。

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

不过还是要两行。

6mzjoqzu

6mzjoqzu2#

两个选项:

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

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

9nvpjoqh3#

在这个特殊的例子中,你可以使用sum(abs(a(:)-b(:))),但是通常Matlab不支持这种嵌套索引。

相关问题