2013-09-25 4 views
0

je tyhe code suivant:valeurs variables ne sont pas enregistrées Matlab

myFiles = {fullfile(working, 'file1'),fullfile(working, '*.txt'),... 
      fullfile(folder1, 'controllerX'))}; 

switch (test) 
    case 'test1' 

     myFiles = {fullfile(working, folder1, '*.txt'),... 
       fullfile(working, folder1,folder2,'test.xml')}; 

case 'test2' 
      myFiles = {fullfile(working, folderX, '*.txt'),... 
       fullfile(working, folder1,folder2,'test.xml')} 

end 
for m = 1:numel(myFiles) 
    file = dir(myFiles{m}); 
    verify(numel(file) == 1) 
end 

le problème est que dans la boucle de la vérification est effectuée uniquement pour affaire1 ou 2 à savoir: numel (myFiles) = nombre de fichiers trouvés dans case1 ou case 2 donc la première fois que j'ai assigné des valeurs à myFiles, les valeurs ne sont pas sauvegardées .... Je voulais que myFiles = nombre de fichiers à la première fois et nombre dans le cas 1 ou le cas 2

+1

votre script de test semble contenir des erreurs. Surtout dans la boucle for, vous utilisez 'm' comme compteur, mais la référence' ii' dans la ligne suivante. En outre, il serait vraiment utile si le code contient également les informations pour nous de l'exécuter. (par exemple ce qui est 'verify',' ii' et 'test') – bdecaf

+0

J'ai mis à jour le code, c'était une erreur ... le problème ne vient pas de la fonction de vérification, mais juste que le numéro de myFile dans la boucle est toujours le nombre de fichiers dans le cas 1 ou le cas 2 alors que je voulais le premier numéro 3 + numéro dans case1 orcase2 – lola

+0

Je ne comprends pas. Pouvez-vous clarifier ce que vous obtenez réellement et ce que vous attendez? (Que signifie "le premier numéro 3"?) – bdecaf

Répondre

1

question et votre commentaire, je pense que vous voulez fusionner différents fichiers (cas test1, cas test2) dans votre tableau de chaînes de cellules initiales.

Depuis myFiles est un tableau de ligne, vous pouvez les concaténer comme ceci:

switch(test) 
case 'test1' 
    myFiles = [myFiles, {fullfile..., fullfile...}]; 
case 'test2' 
    myFiles = [myFiles, {fullfile..., fullfile...}]; 
end 

Si à un moment donné plus tard, vous ne pouvez pas garantir la mise en page de la taille de vos réseaux de cellules, utilisez plutôt l'union, auquel cas deux les entrées sont filtrées:

switch(test) 
case 'test1' 
    myFiles = union(myFiles, {fullfile..., fullfile...}); 
case 'test2' 
    myFiles = union(myFiles, {fullfile..., fullfile...}); 
end 
Questions connexes