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

Hak*_*yar 2 matlab split vector count zero

例如:

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

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

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

我怎样才能做到这一点?

Pho*_*non 7

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

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

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

countOnes = negEdge - posEdge
Run Code Online (Sandbox Code Playgroud)