2010-06-25 110 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