Est-il possible de créer un tableau de chaînes dans MATLAB au sein d'une boucle for?
Par exemple,
for i=1:10
Names(i)='Sample Text';
end
Je ne semble pas pouvoir le faire de cette façon.
Vous devez utiliser des tableaux de cellules:
names = cell(10,1);
for i=1:10
names{i} = ['Sample Text ' num2str(i)];
end
Vous pouvez créer un tableau de caractères qui le fait via une boucle:
>> pour i = 1: 10 Noms (i,:) = 'Exemple de texte'; fin >> Noms Noms = Exemple de texte Exemple de texte Exemple de texte Exemple de texte Exemple de texte Exemple de texte Exemple de texte Exemple de texte Exemple de texte
Cependant, cela serait mieux implémenté avec REPMAT :
>> Names = repmat ('Sample Text', 10, 1) Names = Sample Text Sample Text Sample Text Sample Texte Exemples de texte Exemples de texte Exemples de texte Exemples de texte Exemples de texte Exemples de texte
Une autre option:
names = repmat({'Sample Text'}, 10, 1)
De nouvelles fonctionnalités ont été ajoutées à MATLAB récemment:
Les tableaux de chaînes ont été introduits dans R2016b (sous la forme Budo et gnovice déjà mentionné):
Les tableaux de chaînes stockent des morceaux de texte et fournissent un ensemble de fonctions pour travailler avec du texte en tant que données. Vous pouvez indexer dans, remodeler et concaténer des tableaux de chaînes comme vous le pouvez avec des tableaux de tout autre type.
De plus, à partir de R2017a, vous pouvez créer un string en utilisant des guillemets doubles ""
.
Par conséquent, si votre version de MATLAB est> = R2017a, ce qui suit suffira:
for i = 1:3
Names(i) = "Sample Text";
end
Vérifiez la sortie:
>> Names
Names =
1×3 string array
"Sample Text" "Sample Text" "Sample Text"
Plus besoin de traiter avec des tableaux de cellules.
Une autre solution à cette vieille question est le nouveau conteneur string array
, introduit dans Matlab 2016b. D'après ce que j'ai lu dans les documents officiels Matlab , ce conteneur ressemble à un tableau de cellules et la plupart des fonctions liées aux tableaux devraient fonctionner immédiatement. Pour votre cas, une nouvelle solution serait:
a=repmat('Some text', 10, 1);
Cette solution ressemble à la solution solution de Rich C appliquée au tableau de chaînes.
Comme déjà mentionné par Amro , le moyen le plus concis de faire cela consiste à utiliser des tableaux de cellules. Cependant, Budo a abordé la nouvelle classe string
introduite dans la version R2016b de MATLAB. En utilisant ce nouvel objet, vous pouvez très facilement créer un tableau de chaînes dans une boucle, comme suit:
for i = 1:10
Names(i) = string('Sample Text');
end
une des manières les plus simples de créer une matrice de chaînes est la suivante:
x = [{'première chaîne'} {'Deuxième paramètre} {' Troisième texte '} {' Quatrième composant '}]