MATLAB:如何总结向量中的那些?

时间:2012-03-01 21:59:03

标签: matlab vector count split zero

例如:

a = [1 1 0 0 1 1 0 1 1 1 0 0];

现在我想只将那些被零除的:

ones = [2 2 3] - 这意味着两个,然后我们有两个零,我们不计算,然后再两个等等。

我该怎么做?

1 个答案:

答案 0 :(得分:7)

好吧,我建议找到切换从0到1的所有地方,然后查找从1切换到0的所有地方,并使用这些索引查找这些长度。问题出现在边缘,如果第一个条目是1,它不会从零开关到一个,如果最后一个条目是1,我们从来没有找到它,因为没有切换到0在末尾。为了轻松避免这个问题,我们可以在开头添加0,在结尾添加一个。通过这种方式,我们可以保证找到每一个爆发。实质上:

b = [0 a 0];
d = diff(b);

posEdge = find(d==1);
negEdge = find(d==-1);

countOnes = negEdge - posEdge