使用与Matlab中变量值相同的变量名创建嵌套结构?

时间:2014-09-12 22:19:02

标签: matlab syntax struct

我想创建一个结构,其中第一级将具有变量名称,例如: - a

>> a=struct()

a = 

struct with no fields.

>> for i=1:30
a.i=rand(3);
end
>> a

a = 

    i: [3x3 double]

a.i

ans =

    0.3477    0.2621    0.2428
    0.1500    0.0445    0.4424
    0.5861    0.7549    0.6878

但我想创造的是一个结构,其中' a'是一个包含30个字段的结构 其中a.1; a.2; a.3;每个都给出一个先前分配的随机矩阵。

我也想做同样的事情,但是对于我来说。字符串而不仅仅是数字。 例如,读取视频,并将每帧中的某些特定数据存储在具有帧编号变量名的结构中。

expected result

1 个答案:

答案 0 :(得分:1)

您的代码只定义了一个名为i的字段,共30次。

您可以使用variable field names在每次迭代中构建不同的字段名称。字段名称must begin with a letter,因此您需要使用f1f2等名称作为名称。为此,您构建表示字段名称的字符串(在这种情况下该字符串为['f' num2str(i)])并在其周围加上括号:

for i = 1:30
    a.(['f' num2str(i)]) = rand(3);
end

这给出了

a = 
     f1: [3x3 double]
     f2: [3x3 double]
     f3: [3x3 double]
     f4: [3x3 double]
          ...