choosing unique elements in the order that they appear in a column of a cell vector
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dear all,
I have the following cell matrix
Out={
'MN' 'AER_KL1' 'Bdrerv_1'
'MN' 'AER_KL1' 'Bdrerv_1'
'MN' 'AER_KL1' 'Bdrerv_1'
'MN' 'AER_KL1' 'Bdrerv_1'
'MN' 'AER_KL1' 'ksitre +2er'
'MN' 'AER_KL1' 'ksitre +2er'
'MN' 'AER_KL1' 'ksitre +2er'
'MN' 'AER_KL1' 'ksitre +2er'
'MN' 'AER_KL1' 'ksitre +2er'
'MN' 'AER_KL1' 'ksitre +2er'
'MN' 'AER_KL1' 'ksitre +2er'
'MN' 'AER_KL1' 'eorftr>2'
'MN' 'AER_KL1' 'eorftr>2'
'MN' '100_pr' 'se 34'
'MN' '100_pr' 'se 34'
'MN' '100_pr' 'se 34'
'MN' '100_pr' 'se 34'
'MN' '100_pr' 'se 34'
'MN' '100_pr' 'se 34'
'MN' '100_pr' 'se 34'
'MN' '100_pr' 'fjgitow f12'
'MN' '100_pr' 'fjgitow f12'
'MN' '100_pr' 'fjgitow f12'
'MN' '100_pr' 'fjgitow f12'
'MN' '100_pr' 'fjgitow f12'
'MN' '100_pr' '344 edd' }
I want to simplify this matrix so as to have the following specific structure
'MN' 'AER_KL1' 'Bdrerv_1'
'MN' 'AER_KL1' 'ksitre +2er'
'MN' 'AER_KL1' 'eorftr>2'
'MN' '100_pr' 'se 34'
'MN' '100_pr' 'fjgitow f12'
'MN' '100_pr' '344 edd' }
As you can see I want to select the unique elements from the last column in the order that appear in “out” and construct the above simplified matrix.
IS there any quick/efficient code for doing this?
The above matrix is an example
My original data set is of dimension 25000 by 4. So a general code for doing this is greatly appreciated
0 commentaires
Réponse acceptée
Jan
le 30 Jan 2013
If you have a modern version of Matlab, the unique command can be controlled by teh 'first' flag to reply the first index.
4 commentaires
Sean de Wolski
le 30 Jan 2013
Well 'first' returns the first index, not necessarily 'stable' order; consider:
>> [uv,idx] = unique([3;2;3;1],'first')
Plus de réponses (1)
Thorsten
le 30 Jan 2013
Modifié(e) : Thorsten
le 30 Jan 2013
You can to it "by feet"
unique_rows = 1;
for i = 2:size(Out, 1)
equals_row = 0;
for j = 1:numel(unique_rows)
equal_row = strcmp(Out{i, 3}, Out{unique_rows(j), 3});
if equal_row, break, end
end
if ~equal_row, unique_rows(end+1) = i, end
end
Out_simple = Out(unique_rows, :)
0 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!