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