如果可以在表达式上使用冒号运算符,则非常方便。据我所知,这是不可能的。例如,当我想计算两个矩阵之间的差异时,我必须分两行来做。是否可以在MATLAB中的表达式上应用冒号运算符?
diff = (a - b);
err = sum(abs(diff(:)));
代替
反正是有它周围?
如果可以在表达式上使用冒号运算符,则非常方便。据我所知,这是不可能的。例如,当我想计算两个矩阵之间的差异时,我必须分两行来做。是否可以在MATLAB中的表达式上应用冒号运算符?
diff = (a - b);
err = sum(abs(diff(:)));
代替
反正是有它周围?
您可以避开使用匿名帮助函数的语法限制。 EG
oneD = @(x)x(:);
diff = sum(abs(oneD(a-b))));
尽管如此,仍然需要两条线。
两个选项:
err = sum(abs(a(:)-b(:)));
或
err = sum(abs(reshape(a-b,[],1)));
在这种特殊情况下,你可以做sum(abs(a(:)-b(:)))
,但一般Matlab的不支持那种嵌套指数。
我喜欢你的想法。我希望你能说出一个冒号。它可能与冒号操作符冲突! – 2012-02-18 09:22:51
你说得对。使用“冒号”这个名字会导致你无法完成任务。 – Pursuit 2012-02-18 15:14:49
因此,您认为用另一种双线解决方案替换双线解决方案是一个有效的解决方案,并且还可以用匿名解决方案替换简单的冒号运算符! “事情应该尽可能简单,但不要简单。” – Kavka 2012-02-19 04:27:53