2010-06-25 5 views
0

Je me demande si matlab a défini une restriction sur le nom de la variable.Sortie bizarre 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 

La sortie fixnb21 est 113, ce qui signifie le nombre total de rangées de fixdur21 devrait être 113. Mais quand j'ai vérifié le nombre de lignes de fixdur21, c'était 1023, ce qui est totalement faux. Cela n'arrive que lorsque je mets le numéro 21 à la fin de fixdur21. La sortie semble juste quand je n'utilise pas le numéro . C'est tellement déroutant.

+1

Une petite suggestion: N'utilisez pas 'fix' comme nom de variable, car il existe déjà une fonction intégrée [FIX] (http://www.mathworks.com/access/help/techdoc/ ref/fix.html). – gnovice

Répondre

1

essayez de commencer par fixdur21=[].

si cela ne fonctionne pas, affichez le reste de votre code! - vous devez le changer ailleurs

Les noms de variables peuvent contenir tous les chiffres que vous voulez (sauf au début) Cependant, si vous avez plusieurs variables numérotées, il vaut probablement mieux utiliser une liste ou un tableau de cellules (donc vous pouvez itérer sur eux).

aussi, votre code tout se simplifie:

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

et vous pouvez omettre le 1: 200 si fixdur est toujours 200 articles à long

ne pas itérer si vous n'avez pas.

+0

Merci Sanjay ... en ajoutant le fixdur21 = [] au début du code a résolu mon problème. – Jessy