例如:
a = [1 1 0 0 1 1 0 1 1 1 0 0];
现在我想只将那些被零除的:
ones = [2 2 3] - 这意味着两个,然后我们有两个零,我们不计算,然后再两个等等。
我该怎么做?
答案 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