有一个问题要求给定一个包含1和0的向量,返回一个向量,给出每个0之间的0的数量。举例来说:输入= [0 1 0 0 1 0 1 1 0 0 1 1 0 0]输出= [1 3 1 0 0 3 1 0 2]
我的代码:
function y = count_zero(x)
y = []
count = 0
for i = 1:length(x)
if x(i) == 0
count = count +1
elseif x(i) == 1
count = 0
end
y = horzcat(y,count)
end
end
我知道我的代码是错误的,但我找不到一种方法来修改这段代码来解决这个问题
1条答案
按热度按时间fivyi3re1#
当你点击下一个
1
时,你应该只追加到y
,而不是x
中的每个元素。您可以通过在elseif
中移动连接来实现这一点,但还需要在末尾进行移动以处理最后一个元素您应该使用缩进来使代码更具可读性,并在每行末尾使用分号来抑制命令行输出。
如果你想要一个简短的方法来做到这一点,你可以
find
索引,其中x==1
(在x
的开始和结束处附加一个1来处理边缘情况),然后取这些索引之间的差。零的数量比索引的diff
少一个。