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

Using Cell Array Contents to Create Struct Entries

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

如果你想在结构中创建动态字段名称,我看不出如果没有两个 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]

如果我们访问 Shello 字段,我们得到:

>> 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 字段,我们这样做:

>> S.hello.am

ans =

     1