runs of 1s and 2s in a long vector

1 次查看(过去 30 天)
i have a long vector which has a whole bunch of 1s and 2s.. I need to find how many such strings of 1s and 2s are there. Is there a slick way of getting this out of the array?
  2 个评论
Sushant Mahajan
Sushant Mahajan 2018-7-26
Do you need the total number of 1s and 2s? Or are you looking for the number of consecutive bunches (groups) of 1s/2s in that array?
jonas
jonas 2018-7-26
Please provide an example including your desired output.

请先登录,再进行评论。

采纳的回答

Guillaume
Guillaume 2018-7-26
编辑:Guillaume 2018-7-26
If you want to find the number of runs (regardless of their length) as opposed to the count of 1s or 2s:
v = [0 3 1 1 1 4 5 6 2 2 2 1 1 2 7 8 9 1 1 1 2 2 1 1 1 10 11 2 2 12 2]; %demo data
runcount = @(v, n) nnz(diff([false, v == n]) == 1); %works only for row vectors
runsof1 = runcount(v, 1)
runsof2 = runcount(v, 2)
  4 个评论
Stephen23
Stephen23 2018-7-26
@Pappu Murthy: try starting the vector with one of the values that you are matching, and you will see why false is required.
Pappu Murthy
Pappu Murthy 2018-7-26
Thanks. I got it why false is needed.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by