Effacer les filtres
Effacer les filtres

Hi, i have cell that consisting string value.i want to use every cell element as variable name. for example filename{1}= [1 2 3] then i have EX1=[1 2 3] in work space. i wrote this code but it doesn't work.

1 vue (au cours des 30 derniers jours)
filename={'EX1','EX2','FX1','FX2','PR1','PR2',...
'RU1','RU2','SP1','SP2','UL1','UL2'};
for i=1:12
genvarname(filename{i})) =importdata([filename{i},'.mat']);
end
  4 commentaires
Guillaume
Guillaume le 22 Fév 2018
So, you're having difficulty generating dynamic variable names. Even if we told you how to do it, you would have the exact same difficulties every time you want to use these variable names. The only good answer to your question is don't do that.
I'm sure Stephen will answer your question with his very detailed explanation of why it's a bad idea. Please follow that advice.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 22 Fév 2018
Modifié(e) : Stephen23 le 22 Fév 2018
As an alternative to magically creating variable names (which is not recommended), you can very simply define a structure and dynamically create the fieldnames:
C = {'EX1','EX2','FX1','FX2','PR1','PR2','RU1','RU2','SP1','SP2','UL1','UL2'};
S = struct();
for k = 1:numel(C)
S.(C{k}) = importdata(sprintf('%s.mat',C{k}));
end
and then accessing your data is also very simple and efficient:
S.EX1
S.EX2
S.FX1
... etc

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by