使用单元格的内容作为变量名称

时间:2014-11-03 14:10:45

标签: matlab

我创建了一个充满字符串变量的单元格:

X{1,1} = 'TEST1A1'
X{2,1} = 'TEST1A2'
X{3,1} = 'TEST1A3'
...
X{120,1} = 'TEST8C5'

它们中的每一个都代表实验中的一组数据。我正在创建一组包含该数据的3Dmatrix,如果我可以将这些字符串用作变量名称,那就太棒了。

函数处理是否可以解决此问题?我以前从未真正使用它们。

1 个答案:

答案 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>>']);