removing duplicates in an array
48 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Esegboria Osarhemen
le 3 Mar 2019
Modifié(e) : Brent F
le 10 Juin 2021
If i have the following array
a =[1,1,1,2,2,1,1,6,6,6,8,8,2,2,3,3,2,2]
When i do unique(a,'stable'), i get
[1,2,6,8,3]
I want the following result
[1,2,1,6,8,2,3,2]
0 commentaires
Réponse acceptée
Stephan
le 3 Mar 2019
b = a(logical([1 (diff(a)~=0)]))
2 commentaires
Jan
le 4 Mar 2019
(diff(a)~=0) is a logical vector. Concatenating it with a double converts it to a double. Casting it by logical() converts it again. More efficient:
b = a([true, diff(a)~=0])
Now the values are not converted twice.
Plus de réponses (1)
Brent F
le 10 Juin 2021
Modifié(e) : Brent F
le 10 Juin 2021
- Package as a function
- Handle case where column-vector is given (return in same format as given)
function [uniqueSequence] = DedupSequence (seq)
% Eliminate sequentially repeated rows
% Create row vector for diff (must transpose if given a column vector)
if size(seq,1) > 1
seqCopy = seq(:,1)';
else
seqCopy = seq;
end
uniqueSequence = seq([true, diff(seqCopy)~=0]);
end
0 commentaires
Voir également
Catégories
En savoir plus sur Graphics Object Programming 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!