MATLAB-如何计算向量中的0和1

时间:2014-04-10 14:38:24

标签: matlab

让长度为v的向量nv = 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。

2 个答案:

答案 0 :(得分:5)

这是一种相当简单的方法:

diff(find(diff([inf v inf])))

如果您还想知道哪个值对应于每个细分,那么扩展应该不难。

答案 1 :(得分:1)

你可以这样做(它总是首先计算零,即使它们不存在):

aux = cumsum(abs(diff([0 v])));
counts = histc(aux, 0:max(aux));
clear aux;