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