How can I separate the elements of a vector ?

3 visualizzazioni (ultimi 30 giorni)
Hello,
I have a row vector i of size say 1x300 and that its indices can be any number of the range [1 5] in a descending order. For example:
i = [5 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 0 0]
As you can notice number 4 is not always in i. And I'm trying to separate the similar numbers into 4 groups in this example.
for jj = max(i):-1:0
t = i==jj;
idx = find(t~=0);
.
.
.
end
In this particular example, jj should take only values 5,3,2,1,0. But it is not since the step is -1. And the resulting idx is empty.
When i is like the following, my code works fine.
i = [6 6 5 4 4 4 3 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 0 0 0 0 0]
I would appreciate your help.

Risposta accettata

Stephen23
Stephen23 il 27 Mag 2022
for jj = i(diff(i)~=0)
or
for jj = unique(i,'stable')
  10 Commenti
Stephen23
Stephen23 il 27 Mag 2022
"do you know by any chance why when jj reaches 0, i get updated and the for loop starts all over again"
I don't see that (nor do I see your code):
i = [6,6,5,4,4,4,3,3,3,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,0,0,0,0,0,-1,-1,-1];
for jj = unique(i(i>=0),'stable')
display(jj)
end
jj = 6
jj = 5
jj = 4
jj = 3
jj = 2
jj = 1
jj = 0
Rayan Glus
Rayan Glus il 27 Mag 2022
My bad.
Thank you so much. I really appreciate it

Accedi per commentare.

Più risposte (1)

Walter Roberson
Walter Roberson il 27 Mag 2022
File Exchange, run length encoding. If I recall correctly, contribution is from Jan.

Categorie

Scopri di più su Loops and Conditional Statements 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!

Translated by