removing duplicates in an array
60 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Esegboria Osarhemen
am 3 Mär. 2019
Bearbeitet: Brent F
am 10 Jun. 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 Kommentare
Akzeptierte Antwort
Stephan
am 3 Mär. 2019
b = a(logical([1 (diff(a)~=0)]))
2 Kommentare
Jan
am 4 Mär. 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.
Weitere Antworten (1)
Brent F
am 10 Jun. 2021
Bearbeitet: Brent F
am 10 Jun. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Graphics Object Programming finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!