2013-10-19 49 views
0

您好我正在写一个matlab代码。我试图将列表中的值与数字10进行比较,如果值小于10,则将总数加1。不过,我似乎无法得到正确的代码。我的代码到目前为止MATLAB如果价值低于

tot = 0 
for i=1:n 
if(x(i)<10) 
    tot = +1 
else 
    y=0; 
end 
end 

tot 

我得到的值总是= 1,永远不会增加?有人可以帮助编辑这个问题,或者如果不能解决问题吗?

+2

'tot = tot + 1'是正确的形式。 't = + 1'只是将't'设置为'1'而不会增加它。 – Sadjad

+0

@Sadjad我看到所以不加tot + 1 t如果值小于10,每次只取值1? – user2423678

+0

是的,就是这样。 – Sadjad

回答

1

在像MATLAB和R这样的语言中,你真的不应该使用for这样的循环,甚至作为练习。每个变量可以是一个向量,并且操作可以一次发生在整个向量上,而不是逐个元素。

考虑:

x = [ 1 2 3 4 11 12 13 14 15 16 ] 

要生成所有x小于10的名单,你会说:

x(x<10) 

如此算来:

total = length(x(x<10)) 

没有循环需要或通缉!

3

我同意上面提到的答案,应该避免for循环。可以有一个更快的解决方案。因为,他只是对计数感兴趣,而不是数字的价值,所以没有必要重新编制索引。

考虑:

a = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] 

计算数小于10(你可以在这里将任意数量)

answer = sum(a<10); 

祝你好运!