Créer un tableau de chaînes de caractères

Est-il possible de créer un tableau de chaînes dans MATLAB dans une boucle for?

Par exemple

for i=1:10
Names(i)='Sample Text';
end

Je ne semble pas être capable de le faire de cette façon.

36
demandé sur Brian 2011-08-18 03:47:12

7 réponses

Vous devez utiliser des tableaux de cellules:

names = cell(10,1);
for i=1:10
    names{i} = ['Sample Text ' num2str(i)];
end
44
répondu Amro 2011-08-17 23:50:00

Vous pouvez créer un tableau de caractères qui fait via une boucle:

>> for i=1:10
Names(i,:)='Sample Text';
end
>> Names

Names =

Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text

Cependant, cela serait mieux implémenté en utilisant REPMAT :

>> Names = repmat('Sample Text', 10, 1)

Names =

Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
Sample Text
9
répondu b3. 2011-08-17 23:54:03

Une autre option:

names = repmat({'Sample Text'}, 10, 1)
8
répondu Rich C 2011-08-18 00:22:10

De nouvelles fonctionnalités ont été ajoutées récemment à MATLAB:

Les tableaux de Chaîne ont été introduites dans R2016b (comme Budo et gnovice déjà mentionné plus haut):

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, remodeler et concaténer des tableaux de chaînes comme vous le pouvez avec des tableaux de n'importe quel autre type.

En outre, à partir de R2017a, vous pouvez créer un chaîne en utilisant des guillemets doubles "".

Par conséquent, si votre version MATLAB est > = R2017a, ce qui suit fera l'affaire:

for i = 1:3
    Names(i) = "Sample Text";
end

Vérifier la sortie:

>> Names

Names = 

  1×3 string array

    "Sample Text"    "Sample Text"    "Sample Text"

Plus besoin de traiter les tableaux de cellules.

3
répondu codeaviator 2017-11-15 15:44:03

Une autre solution à cette ancienne 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 au tableau devraient fonctionner hors de la boîte. Pour votre cas, la nouvelle solution serait:

a=repmat('Some text', 10, 1);

Cette solution ressemble à une solutionriche en C appliquée au tableau de chaînes.

2
répondu Budo Zindovic 2017-05-23 11:45:46

Comme déjà mentionné par Amro, la plus concise façon de le faire est d'utiliser des tableaux de cellules. Cependant, Budo a touché à la nouvelle string classe introduit 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
répondu gnovice 2017-05-23 11:52:55

L'une des façons les plus simples de créer une matrice de chaîne est la suivante:

X = [ {'première chaîne'} {'Deuxième paramètre} {"Troisième texte'} {'Quatrième composante'} ]

0
répondu arman 2015-12-17 15:08:08