2012-03-02 141 views
0

我有一個矩陣A. 我想找到所有獨特的元素是這樣的: b = unique(A);將列出A中所有獨特元素的陣列。查找矩陣中一組元素的位置 - Matlab

我想在A中找到這些元素的位置。準確地說,b 中的元素在A中重複它們自己,並且我想要爲b中的每個元素找到其在A.

,如何能夠做到這一點沒有一個循環?

回答

1

命令

[b,m,n] = unique(A); 

應該給你所有你需要回答你的問題的數據。

0

下面是一些例子代碼做什麼,我認爲你正在嘗試做的:

%Test data 
A = [... 
    1 2 3 4; ... 
    4 5 6 7; ... 
    8 1 3 4]; 

%Basic "unique" call 
[B, ix_A, ix_B] = unique(A); 

%Note that the indexes from unique can be used as follows 
isequal(A(ix_A), B) %Returns true 
isequal(B(ix_B), A(:)) %Returns true 

%To find a row (and column) in A where each element in B can be found we 
%just need to convert the linear indexs into row/column subscripts 
[row, column] = ind2sub(size(A), ix_A); 
%  Note that in general, multiple rows will contain each value from A. 
%  This will always produce one of the rows (and columns), pracitcially, 
%  it looks like to returns the last row containing the value. 
+0

您可以控制返回的指數是否是值的第一個或最後一個出現,把「第一」或「最後'以獨特的功能。如果你想找到唯一的行而不是唯一的元素,你也應該傳遞'行'。 – 2012-03-03 00:30:24

+0

我對這個問題的理解是每個元素的唯一值是需要的,而不是唯一的行。但這是一個好點。我不知道「唯一」支持「第一」和「最後」關鍵字。這是一個很好的提示。 – Pursuit 2012-03-03 02:22:43