假设我有两个包含字符串值的单元格数组A和B.我希望填充结构S,这样我就可以生成S.valueinA.valueinB = 1
的所有可能组合。我目前正在尝试使用两个嵌套的for循环来完成这个任务,这些循环遍历每个可能的组合,并想询问是否有更有效的方法来解决MATLAB中的这个问题。
答案 0 :(得分:3)
如果你想在结构中创建动态字段名称,我不知道如果没有两个for
循环你怎么做。假设我们有两个由字符串条目组成的单元格数组A
和B
。
对于我的例子,提前为这些数组中的字符串道歉,因为我现在想不出更好的东西!
这是你想要实现的目标吗?
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