【问题标题】:Indexing/Accessing MATLAB nested structure索引/访问 MATLAB 嵌套结构
【发布时间】:2019-03-27 07:48:30
【问题描述】:

希望我没有创建副本,但到目前为止我还没有找到解决我的问题的正确答案。

假设我们有以下结构:

a(1).b = 1;
a(1).x.y = 2;

a(2).b = 3;
a(2).x.y = 4;

当我现在尝试获取 b 的所有值时,我可以这样做:

>> a(:).b

ans = 1
ans = 3

但是如何使用嵌套结构 .x.y 呢?

>> a(:).x.y

大括号或点索引表达式应有一个输出,但有 2 个结果。

感谢您的帮助...!

【问题讨论】:

  • 有趣的是,Octave 支持多个连续的索引,所以使用 octave 你可以使用[[a.x].y][a.x].y
  • 另外,如果有人知道为什么这没有在 matlab 中实现:我很感兴趣。

标签: matlab indexing matlab-struct


【解决方案1】:

只需遍历索引即可。

>> arrayfun(@(k) a(k).x.y, 1:numel(a))

ans =

     2     4

或:

>> struct2array(cell2mat(extractfield(a,'x')))

ans =

     2     4

【讨论】:

  • 谢谢!我知道“arrayfun”,但没有找到正确的实现方法。
猜你喜欢
  • 2017-02-19
  • 2019-06-24
  • 2021-09-15
  • 2017-10-08
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多