【问题标题】:How to slice a struct array?如何切片结构数组?
【发布时间】:2012-01-27 16:53:21
【问题描述】:

如何从 Matlab 结构数组的每个元素中提取特定字段?

>> clear x
>> x(1).a = 6;
>> x(2).a = 7;

我想要一个包含 6 和 7 的数组。x(:).ax.a 都不做我想做的事。

>> x(:).a

ans =    

     6


ans =

     7

【问题讨论】:

    标签: arrays matlab multidimensional-array slice


    【解决方案1】:

    遗憾的是,我几乎可以肯定 MATLAB 没有很好的方法来做你想做的事。您将不得不使用 for 循环来构造一个新数组,或者返回并重新设计您的数据结构。例如,您可以使用 struct-of-arrays 而不是 array-of-structs。

    【讨论】:

      【解决方案2】:

      没问题 - 只需使用:

      arr = [x.a];
      

      它将连接您需要的所有值。 如果您有更复杂的数据,可以使用花括号:

      b(1).x = 'John';
      b(2).x = 'Doe';
      arr = {b.x}; 
      

      【讨论】:

        【解决方案3】:

        对于多维数组,你需要

        reshape([x.a], size(x))
        

        【讨论】:

          【解决方案4】:

          如果结构的元素是字符串,则可接受的解决方案连接所有单元格。 更一般的

          vertcat(x.a)
          

          适用于所有情况。 Ref

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-06-05
            • 2015-04-08
            • 2014-08-24
            • 1970-01-01
            • 1970-01-01
            • 2023-03-26
            • 2020-02-03
            • 2015-02-21
            相关资源
            最近更新 更多