How can I separate the elements of a vector ?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Rayan Glus
am 27 Mai 2022
Kommentiert: Rayan Glus
am 27 Mai 2022
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.
0 Kommentare
Akzeptierte Antwort
Stephen23
am 27 Mai 2022
for jj = i(diff(i)~=0)
or
for jj = unique(i,'stable')
10 Kommentare
Stephen23
am 27 Mai 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
Weitere Antworten (1)
Walter Roberson
am 27 Mai 2022
File Exchange, run length encoding. If I recall correctly, contribution is from Jan.
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements 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!