0
我有一个矩阵A. 我想找到所有独特的元素是这样的: b = unique(A);将列出A中所有独特元素的阵列。查找矩阵中一组元素的位置 - Matlab
我想在A中找到这些元素的位置。准确地说,b 中的元素在A中重复它们自己,并且我想要为b中的每个元素找到其行在A.
,如何能够做到这一点没有一个循环?
我有一个矩阵A. 我想找到所有独特的元素是这样的: b = unique(A);将列出A中所有独特元素的阵列。查找矩阵中一组元素的位置 - Matlab
我想在A中找到这些元素的位置。准确地说,b 中的元素在A中重复它们自己,并且我想要为b中的每个元素找到其行在A.
,如何能够做到这一点没有一个循环?
命令
[b,m,n] = unique(A);
应该给你所有你需要回答你的问题的数据。
下面是一些例子代码做什么,我认为你正在尝试做的:
%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.
您可以控制返回的指数是否是值的第一个或最后一个出现,把“第一”或“最后'以独特的功能。如果你想找到唯一的行而不是唯一的元素,你也应该传递'行'。 – 2012-03-03 00:30:24
我对这个问题的理解是每个元素的唯一值是需要的,而不是唯一的行。但这是一个好点。我不知道“唯一”支持“第一”和“最后”关键字。这是一个很好的提示。 – Pursuit 2012-03-03 02:22:43