Sort a n array for maximum number of recurring values and storing the indexes corresponding to erased components
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
i'm working with an array of thousands of elements and i've to limit the repeated values to 10.
Let say:
a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9];
has to become:
[0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,9].
And i want to store the indexes corresponding to the erased 10+-times recurrent values.
Any suggestion would be appreciated.
Thanks in advance,
Alessandro
2 Commenti
Matt J
il 20 Gen 2021
And i want to store the indexes corresponding to the erased 10+-times recurrent values.
If I have a repitiion of a number, say [2 2 2 2 2] and I reduce it to [2,2,2,2] clearly I have erased one of the 2's. But which one? The first? The last? One of them in the middle?
Risposta accettata
Matt J
il 20 Gen 2021
Modificato: Matt J
il 20 Gen 2021
a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9];
s=diff([inf,a])~=0;
b=ones(size(a));
b(s)=b(s)-[0,diff(find(s))];
discard=(cumsum(b)>10); %indices to discard
a_short=a(~discard) %truncated version of a
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!