寻找0的长度来分离1的岛并分配它们

时间:2015-03-17 17:48:55

标签: matlab count zero

我有一个交替0和1的向量,并希望将每个“1”转换为它前面的零的长度。例如,我有x并希望得到y:

x = [0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1]

y = [0 0 2 0 0 0 0 4 0 0 0 3 0 0 0 2]

我真的很感激有关如何实现这一目标的任何建议。

1 个答案:

答案 0 :(得分:9)

find&的一种方法diff -

%// Initialize array, y with zeros and of length same as input, x
y = zeros(size(x))

%// Find places/indices where new values would be put
idx = find(x)   

%// Calculate new values which would be the differentiated values of indices 
%// and subtracted by 1 to account for the number of zeros in between two
%// non-zero values. We need to concatenate the indices array with one zero 
%// at the start to account for the starting non-zero value in x
y(idx) = diff([0 idx])-1