簡體   English   中英

如何在多維數組上使用 any()?

[英]How can I use any() on a multidimensional array?

我正在測試一個任意大、任意維度的邏輯數組,我想知道其中任何一個或多個是否為真。 any()一次只適用於一個維度, sum()也是如此。 我知道我可以測試維度的數量並重復any()直到我得到一個答案,但我想要一種更快、坦率地說、更優雅的方法。

想法?

我正在運行 2009a(我認為,用舊的說法,R17)。

如果您的數據在矩陣A中,請嘗試以下操作:

anyAreTrue = any(A(:));

編輯:為了向不熟悉語法的人解釋更多, A(:)使用冒號運算符獲取數組A的全部內容,無論維度如何,並將它們重塑為單個列向量(大小數字(A)-by-1)。 只需一次調用ANY即可對結果列向量進行操作。

正如所指出的,正確的解決方案是將結果重塑為向量。 然后任何將給出所需的結果。 因此,

任何(A(:))

給出全局結果,如果任何 numel(A) 元素為真,則為真. 你也可以使用

任何(重塑(A,[],1))

它顯式地使用了 reshape 運算符。 如果您不想執行將矩陣轉換為向量的額外步驟以應用任何內容,那么另一種方法是編寫您自己的 function。 例如,這里有一個 function 可以為您完成:

=======================

function 結果 = myany(A)

% 確定 A 中的任何元素是否非零

結果 = 任何(A(:));

=======================

將其保存為搜索路徑上的 m 文件。 MATLAB(適用於任何編程語言)的美妙之處在於它是完全可擴展的。 如果您希望它具有某些功能,只需編寫一個實現它的小習語即可。 如果您經常這樣做,您將定制環境以滿足您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM