让长度为v
的向量n
为v = randi([0 1],1,n)
,随机包含0或1。
获取向量的有效方法是指示每个0段或1段中有多少0或1?
示例:
v = [1 0 0 0 1 1 0 0 1] ---->
counts = [0 1 3 2 2 1] (*0* zero, *1* one, *3* zeros, ....)
v = [0 0 1 0 0 0] ---->
counts = [2 1 3]
P.S。始终首先计数0,如果向量以1开始,则结果向量的第一个条目,即数(1),应为0。
答案 0 :(得分:5)
这是一种相当简单的方法:
diff(find(diff([inf v inf])))
如果您还想知道哪个值对应于每个细分,那么扩展应该不难。
答案 1 :(得分:1)
你可以这样做(它总是首先计算零,即使它们不存在):
aux = cumsum(abs(diff([0 v])));
counts = histc(aux, 0:max(aux));
clear aux;