使用单元格数组内容创建结构条目

时间:2015-03-02 03:36:23

标签: matlab structure cell-array

假设我有两个包含字符串值的单元格数组A和B.我希望填充结构S,这样我就可以生成S.valueinA.valueinB = 1的所有可能组合。我目前正在尝试使用两个嵌套的for循环来完成这个任务,这些循环遍历每个可能的组合,并想询问是否有更有效的方法来解决MATLAB中的这个问题。

1 个答案:

答案 0 :(得分:3)

如果你想在结构中创建动态字段名称,我不知道如果没有两个for循环你怎么做。假设我们有两个由字符串条目组成的单元格数组AB。 对于我的例子,提前为这些数组中的字符串道歉,因为我现在想不出更好的东西!

这是你想要实现的目标吗?

S = struct();
A = {'hello', 'my', 'name', 'is', 'ray'};
B = {'i', 'am', 'doing', 'awesome'};
for idx = 1 : numel(A)
    for idx2 = 1 : numel(B)
        S.(A{idx}).(B{idx2}) = 1;
    end
end

这会创建一个嵌套结构S,以便A中的每个元素成为S中的一个字段,其中此字段为另一个结构名称来自B中所有元素的字段。

如果我们显示S,我们会:

>> S

S = 

    hello: [1x1 struct]
       my: [1x1 struct]
     name: [1x1 struct]
       is: [1x1 struct]
      ray: [1x1 struct]

如果我们访问了hello的{​​{1}}字段,我们会得到:

S

同样,如果我们访问>> S.hello ans = i: 1 am: 1 doing: 1 awesome: 1 字段,我们会得到:

my

因此,如果我们想要>> S.my ans = i: 1 am: 1 doing: 1 awesome: 1 字段后跟hello字段,我们会这样做:

am