How to count the number of consecutive repetitions of an array?
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
James Tursa
2018-4-12
E.g.,
[r,s] = runlength(A,numel(A));
result = r(logical(s));
You can find runlength on the FEX:
7 个评论
Walter Roberson
2021-1-15
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
2021-1-15
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)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multidimensional Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!