web-dev-qa-db-fra.com

Créer un tableau de chaînes

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.

37
Brian

Vous devez utiliser des tableaux de cellules:

names = cell(10,1);
for i=1:10
    names{i} = ['Sample Text ' num2str(i)];
end
46
Amro

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 
9
b3.

Une autre option:

names = repmat({'Sample Text'}, 10, 1)
8
Rich C

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.

3
codeaviator

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.

2
Budo Zindovic

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
1
gnovice

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 '}]

0
arman