如果可以在表達式上使用冒號運算符,則非常方便。據我所知,這是不可能的。例如,當我想計算兩個矩陣之間的差異時,我必須分兩行來做。是否可以在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