How to count the number of consecutive repetitions of an array?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
giovanni negro
am 12 Apr. 2018
Kommentiert: Walter Roberson
am 15 Jan. 2021
Hi everybody,
I have a double array or a logical one made like this above: A=[0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1]; And I would like to count the number of consecutive repetitions of values 1, getting as output an array like this: B=[3 1 2 1 3], where 3=3 times 1; 1=1 time 1; ecc.. Please, can someone help me with this issue?
Thanks a lot!
0 Kommentare
Akzeptierte Antwort
James Tursa
am 12 Apr. 2018
E.g.,
[r,s] = runlength(A,numel(A));
result = r(logical(s));
You can find runlength on the FEX:
7 Kommentare
Walter Roberson
am 15 Jan. 2021
Your A vector contains values between 1 and 235, not the 0 and 1 of the original Question. What is it that you want to compute on your A?
Walter Roberson
am 15 Jan. 2021
Your A vector has no runs at all. Every value that occurs, occurs in isolation, with there never being two of the same value in a row. You cannot do any useful run-length encoding on it -- not unless you are able to go into pairs of values instead of single values.
load a.mat
results = {};
for targ = unique(A).'
a = A.' == targ;
starts = strfind([0 a], [0 1]);
if isempty(starts); continue; end
stops = strfind([a 0], [1 0]);
results{end+1, 1} = [targ, stops - starts + 1];
end
celldisp(results)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Multidimensional Arrays 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!