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 次查看(过去 30 天)
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 个评论
Guillaume
Guillaume 2018-2-22
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.

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2018-2-22
编辑:Stephen23 2018-2-22
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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by