【发布时间】:2019-06-13 13:13:45
【问题描述】:
数据结构:
我有一个结构数组s,其中包含多个字段s.x、s.y 和s.z。
请考虑结构的以下结构属性!:
(1) 同一行中的字段具有相同大小的单个向量:
length(s(i).x)=length(s(i).y)=length(s(i).z)
(2) 字段中的单个向量的大小可能因行而异:
length(s(i).x)~=length(s(j).x)
length(s(i).y)~=length(s(j).y)
length(s(i).z)~=length(s(j).z)
问题:
我想根据其中一个字段创建一个逻辑掩码,例如s.z 并将其应用于整个结构数组。一种方法是执行以下操作:
mask = [s.z] > 0;
s_concatenated = [s.x; s.y; s.z]';
mask_applied2struct = s_concatenated(mask);
现在我的问题是是否有办法在 Matlab 中将逻辑掩码应用到结构数据类型?也许在以下时尚中,例如:
mask_applied2struct = s([s.z] > 0)
或
mask_applied2struct = [s]([s.z] > 0)
所以,基本上我对连接结构并对其应用掩码的即时方式感兴趣。
提前致谢!
【问题讨论】:
-
为什么不
s_concatenated = [s.dx(mask); s.dy(mask); s.dz(mask)]';? -
因为连接会删除我的数据结构
标签: matlab indexing struct concatenation mask