8
votes

Comment concaténer un numéro à un nom de variable dans Matlab?

J'ai une variable a = 1 . Je veux générer un nom de variable du formulaire: xxx

donc dans cet exemple, je voudrais xxx

comme variables. Comment puis-je faire ça?


3 commentaires

Bien que cela soit bien sûr possible (comme les réponses montrées déjà), il n'est pas très utile dans la plupart des cas. Y a-t-il une raison pour laquelle une structure ou une matrice ne peut pas être utilisée?


Marrant. J'ai eu l'un de mes collègues non programmés poser la même question la semaine dernière. Ma réponse était "ne" pas ". Ensuite, je lui ai montré comment il pourrait utiliser un tableau dans le même but.


Je pense que cela devrait être mentionné: Comment créer Variables A1, A2, ..., A10 dans une boucle?


5 Réponses :


4
votes

Utilisez attribuine . xxx


EDIT: Comme JS mentionné, les Structs sont généralement meilleurs pour les noms de champ dynamiques. Vous pouvez les utiliser comme ceci: xxx

ou même plus simplement, comme celui-ci: xxx


0 commentaires

8
votes

Essayez genvarname code>.

varnamelist = genvarname({'a','a','a','a','a'});
for l=1:length(varnamelist)
  eval([varnamelist{l} '= l^2']);
end


1 commentaires

Utilisez des matrices de cellules, des structures, des tableaux 3D ou d'autres moyens de stocker des données, mais ne faites pas de variables en Poof dans l'espace de travail.



19
votes

Ma réponse à cette question est "Êtes-vous sûr de vraiment vouloir faire cela?"

Si vous avez une série de variables comme celle-ci, vous allez alors devoir trouver un moyen de faire référence à tous ceux qui Variables plus tard, cela signifiera probablement une évaluation ou autre chose comme ça. P>

Si vous savez que tout ce que vous allez stocker dans ce sera un scalaire, vous pouvez les stocker tout dans un vecteur: p>

a{1} = 1;
a{2} = 'Doug';
a{3} = [1 2 3 4];


1 commentaires

Notez que tant que toutes les entrées sont numériques et garanties pour avoir la même taille, vous devez utiliser une matrice. Ils sont stockés et manipulés plus efficacement que les tableaux de cellules. Petit exemple: effacer a; A (1,:, :) = rand (3); A (2,:, :) = magie (3)



2
votes

Ma réponse à cette question est "Êtes-vous sûr que vous voulez vraiment faire cela?"

Mais si votre réponse est oui, c'est votre réponse: p>

for k=1:5
  eval(['a' num2str(k) '= k;'])
end


0 commentaires

0
votes

J'utilise ce code pour une application avec des réseaux neuronaux de bootstrap xxx


0 commentaires