簡體   English   中英

Matlab查找不適用於高維數組?

[英]Matlab find does not work with high dimensional array?

說A = rand(2,2,2); [a,b,c] =查找(A == A(1,2,2))

我得到a = 1 b = 4 c = 1

什么?

嘗試這個:

[a,b,c] = ind2sub(size(A), find(A==A(1,2,2)))

資料來源: findind2sub

使用等於==代替賦值運算符=

A = rand(2,2,2); [a,b,c] = find(A == A(1,2,2))

請參閱FIND文檔。 輸出參數並不適用於所有方向,僅適用於行和列。 MATLAB似乎沿着第二個方向連接了第三個方向並返回了第四列。 最后一個參數等於1,因為您只有一個匹配項。

FIND函數的輸出是兩組索引( ab )以及這些索引處的值( c )。 對於大於2維的矩陣,第二個索引將是線性索引

在您的示例中,當您執行A == A(1,2,2)時,您將創建一個邏輯數組。 該邏輯數組在索引(1,2,2)處的值為1 (即true (1,2,2) ,並傳遞給FIND函數。 這個非零值的位置在矩陣的第一行中(輸出a = 1 ),在其余維度內的第四條線性索引中(輸出b = 4 )。 c輸出非零值1

查找僅在您嘗試將其應用於二維數組時有效。

Matlab Central上有一些可用的函數可以處理n維數組。

暫無
暫無

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

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