2010-06-25 108 views
0

我不知道matlab是否对变量的名称设置了限制。MATLAB奇怪的输出

fixnb21=0; 

for fix=1:200 
    if fixdur(fix)>MIN_FIX_DUR && fixdur(fix)<MAX_FIX_DUR 
     fixnb21    =fixnb21+1 
     fixdur21(fixnb21) =fixdur(fix) % I wonder if we are not allowed to add 21 at the end of variables or array name 
     ... 
    end 
end 

fixnb21输出是113,这意味着fixdur21行的总数应113。但是当我检查fixdur21的行数时,它是1023,这是完全错误的。只有当我在fixdur21的末尾放置数字21时才会发生这种情况。当我不使用数字21时,输出看起来正确。这很混乱。

+1

一个小建议:不要使用'fix'作为变量名称,因为已经有一个内置函数[FIX](http://www.mathworks.com/access/helpdesk/help/techdoc/) REF/fix.html)。 – gnovice 2010-06-25 15:17:17

回答

1

尝试从fixdur21=[]开始。

如果这不起作用发表剩余的代码! - 你必须改变它在其他地方

变量名称可以包含任何你喜欢的数字(除了在开始时) 虽然如果你有几个编号变量,你可能最好使用列表或单元格数组(你可以遍历它们)。

也,你的整个代码简化为:

fixdur21 = fixdur((fixdur(1:200) > MIN_FIX_DUR) & (fixdur(1:200) < MAX_FIX_DUR)); 
fixnb21 = length(fixdur21); 

,你可以省略1:200,如果fixdur始终是200项长

,如果你没有不重复。

+0

感谢Sanjay ...在代码的开头添加了fixdur21 = []解决了我的问题。 – Jessy 2010-06-25 13:19:54