2012-03-02 251 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