【发布时间】:2024-04-26 21:20:02
【问题描述】:
假设我有两个包含字符串值的元胞数组 A 和 B。我希望填充一个结构 S,以便生成S.valueinA.valueinB = 1 的所有可能组合。我目前正在尝试使用两个嵌套的 for 循环来完成此任务,这些循环遍历每个可能的组合,并想问是否有更有效的方法可以在 MATLAB 中解决这个问题。
【问题讨论】:
标签: matlab structure cell-array
假设我有两个包含字符串值的元胞数组 A 和 B。我希望填充一个结构 S,以便生成S.valueinA.valueinB = 1 的所有可能组合。我目前正在尝试使用两个嵌套的 for 循环来完成此任务,这些循环遍历每个可能的组合,并想问是否有更有效的方法可以在 MATLAB 中解决这个问题。
【问题讨论】:
标签: matlab structure cell-array
如果您想在结构中创建动态字段名称,我看不出如果没有两个 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
【讨论】:
for 循环,我看不出你怎么能做到这一点。但是,如果嵌套字段仅包含一个数字,那么我认为它应该相对较快。我还没有测试它,但这是我的预感。顺便说一句,不客气!