提取并分配选定的结构行

时间:2018-10-26 11:40:08

标签: arrays matlab function struct cell

S.a=rand(100,3)
S.b=rand(100,3)
S.c=rand(100,3)
S.d=rand(100,3)

K.a=[ ]
K.b=[ ]
K.c=[ ]
K.d=[ ]

for i=1:numel(S)
   if rand<0.8   % condition
      K(i,:)=S(i,:) % How this assignment can be made
   end
end

如何提取结构中所有字段的行并将其存储到另一个结构中。

1 个答案:

答案 0 :(得分:1)

从您的解释中我不能完全确定这是否是您想要的。下面的代码会将S中的字段仅复制到<0.8

的行中,复制到K中
S.a=rand(100,3);
S.b=rand(100,3);
S.c=rand(100,3);
S.d=rand(100,3);
K = [];

for field = ['a', 'b', 'c', 'd']
    I = rand(length(S.(field)), 1) < 0.8;
    K.(field) = S.(field)(I,:);
end