web-dev-qa-db-fra.com

Itération sur une liste de chaînes dans MATLAB

J'essaie d'itérer sur une liste de chaînes dans MATLAB. Le problème est qu'à l'intérieur de la boucle "for", mon itérateur est considéré comme une "cellule" plutôt qu'une chaîne.

for str = {'aaa','bbb'}
  fprintf('%s\n',str);
end

??? Error using ==> fprintf
Function is not defined for 'cell' inputs.

Quelle est la manière correcte\élégante de résoudre ce problème?

25
wanderingbear

Vous devez appeler le contenu de la cellule via str{1} comme suit pour le corriger:

for str = {'aaa','bbb'}
  fprintf('%s\n',str{1});
end

Voici un exemple plus sophistiqué sur l'impression du contenu des tableaux de cellules.

29
petrichor
str={'aaa','bbb'};
fprintf('%s\n',str{:});

Pas besoin de boucles for.

EDIT: Voir aussi: cellfun

6
KitsuneYMG

À partir de R2016b, vous pouvez utiliser tableaux de chaînes :

for str = ["aaa" "bbb"]
  fprintf('%s\n',str);
end
1
joalv