【发布时间】:2016-09-10 23:09:30
【问题描述】:
在 MATLAB 中,我想为 1 x n 结构(非标量结构)的每个索引提取一个嵌套字段,并将输出作为 1 x n 元胞数组接收。举个简单的例子,假设我从以下 struct s 开始:
s(1).f1.fa = 'foo';
s(2).f1.fa = 'yedd';
s(1).f1.fb = 'raf';
s(2).f1.fb = 'da';
s(1).f2 = 'bok';
s(2).f2 = 'kemb';
我可以使用 for 循环生成我想要的 1 x 2 元胞数组 c:
n = length(s);
c = cell(1,n);
for k = 1:n
c{k} = s(k).f1.fa;
end
如果我想对 非嵌套 字段进行类似操作,例如 f2,那么我可以“矢量化”该操作(请参阅 this question),只需编写:
c = {s.f2};
但是,相同的方法似乎不适用于嵌套字段。那么有哪些可能的方法来向量化上述 for 循环呢?
【问题讨论】: