使用元胞数组内容创建结构条目
Using Cell Array Contents to Create Struct Entries
假设我有两个包含字符串值的元胞数组 A 和 B。我希望填充一个结构 S,以便生成 S.valueinA.valueinB = 1
的所有可能组合。我目前正在尝试使用两个嵌套的 for 循环来完成此操作,循环遍历所有可能的组合,并想询问是否有更有效的方法来解决 MATLAB 中的这个问题。
如果你想在结构中创建动态字段名称,我看不出如果没有两个 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]
如果我们访问 S
的 hello
字段,我们得到:
>> 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
假设我有两个包含字符串值的元胞数组 A 和 B。我希望填充一个结构 S,以便生成 S.valueinA.valueinB = 1
的所有可能组合。我目前正在尝试使用两个嵌套的 for 循环来完成此操作,循环遍历所有可能的组合,并想询问是否有更有效的方法来解决 MATLAB 中的这个问题。
如果你想在结构中创建动态字段名称,我看不出如果没有两个 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]
如果我们访问 S
的 hello
字段,我们得到:
>> 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