[英]How can I use any() on a multidimensional array?
我正在測試一個任意大、任意維度的邏輯數組,我想知道其中任何一個或多個是否為真。 any()
一次只適用於一個維度, sum()
也是如此。 我知道我可以測試維度的數量並重復any()
直到我得到一個答案,但我想要一種更快、坦率地說、更優雅的方法。
想法?
我正在運行 2009a(我認為,用舊的說法,R17)。
正如所指出的,正確的解決方案是將結果重塑為向量。 然后任何將給出所需的結果。 因此,
任何(A(:))
給出全局結果,如果任何 numel(A) 元素為真,則為真. 你也可以使用
任何(重塑(A,[],1))
它顯式地使用了 reshape 運算符。 如果您不想執行將矩陣轉換為向量的額外步驟以應用任何內容,那么另一種方法是編寫您自己的 function。 例如,這里有一個 function 可以為您完成:
=======================
function 結果 = myany(A)
% 確定 A 中的任何元素是否非零
結果 = 任何(A(:));
=======================
將其保存為搜索路徑上的 m 文件。 MATLAB(適用於任何編程語言)的美妙之處在於它是完全可擴展的。 如果您希望它具有某些功能,只需編寫一個實現它的小習語即可。 如果您經常這樣做,您將定制環境以滿足您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.