我创建了一个充满字符串变量的单元格:
X{1,1} = 'TEST1A1'
X{2,1} = 'TEST1A2'
X{3,1} = 'TEST1A3'
...
X{120,1} = 'TEST8C5'
它们中的每一个都代表实验中的一组数据。我正在创建一组包含该数据的3Dmatrix,如果我可以将这些字符串用作变量名称,那就太棒了。
函数处理是否可以解决此问题?我以前从未真正使用它们。
答案 0 :(得分:2)
一种选择是使用dynamic field names的结构。
填写:
X = {'test1', 'test2', 'test3', ...};
my_data = struct();
for t = 1:length(X)
my_data.(X{t}) = <<read test "t" from file or database function + parameters>>
end
你最终会得到这样的结构:
my_data.test1 % //(contains a 2d or 3d matrix for test 1)
my_data.test2 % //(contains a 2d or 3d matrix for test 2)
...
要动态阅读,请执行相同的操作:
% // read only one member
tmp = my_data.(X{2})
% // or read them sequentially
for t = 1:length(X)
tmp = my_data.(X{t})
% // do something with tmp
end
我当然认为动态字段的结构比使用eval
函数的技巧更清晰:
eval([X{1}, ' = <<read test "1" from file or database function + parameters>>']);