你好,格雷戈里,
Matt J的方式通过创建多个结构阵列,从而在嵌套字段下工作。这是功能性的,但不是很快,因为您每次都创建新的阵列,除非您将在该级别访问所有数据。
另一方面,这对cellfun来说是完美的:
x = cellfun(@(c) c.姿势。位置。X, myCell);
当您访问的字段总是包含标量数据时,这种方法非常有效。如果它包含向量数据,或文本,你必须使用'UniformOutput',false,这将输出另一个单元格数组。
如果您关心性能,那么创建一个本地函数来一次处理深度嵌套消息中所有数据的访问可能会更快。喜欢的东西:
[x,y,z] = Cellfun(@Extractpose,MyCell);
功能[x, y, z] =提取
pos = msg.Pose.Position;
x = pos.X;
y = pos.y;
z = pos.Z;
结束
凸轮