如果可以在表达式中使用冒号运算符,那就非常方便了,据我所知,这是不可能的,例如,当我想计算两个矩阵的差时,我必须在两行中完成。
diff = (a - b); err = sum(abs(diff(:)));
代替
diff = sum(abs((a-b)(:)));
它周围有什么东西吗?
bvuwiixz1#
你可以用匿名帮助函数来绕过语法限制。
oneD = @(x)x(:); diff = sum(abs(oneD(a-b))));
不过还是要两行。
6mzjoqzu2#
两个选项:
err = sum(abs(a(:)-b(:)));
或
err = sum(abs(reshape(a-b,[],1)));
9nvpjoqh3#
在这个特殊的例子中,你可以使用sum(abs(a(:)-b(:))),但是通常Matlab不支持这种嵌套索引。
sum(abs(a(:)-b(:)))
3条答案
按热度按时间bvuwiixz1#
你可以用匿名帮助函数来绕过语法限制。
不过还是要两行。
6mzjoqzu2#
两个选项:
或
9nvpjoqh3#
在这个特殊的例子中,你可以使用
sum(abs(a(:)-b(:)))
,但是通常Matlab不支持这种嵌套索引。