【问题标题】:Matlab: turn 2d struct array of scalars to a matrixMatlab:将标量的二维结构数组转换为矩阵
【发布时间】:2016-02-24 22:06:22
【问题描述】:

我正在编写代码,其中有一个二维结构数组 (organism = 10x10 struct),其中一个字段完全由标量组成,我想提取所有这些标量并将它们放入矩阵中。 我尝试将它放在方括号中,但它没有给我一个矩形矩阵,而是给了我一个长行矩阵;

>>    [organism(1:3,1:3).fitness]

ans =

-5   990   493   492    -5    -8   994    -5   -10

再次,我希望收到

-5    990   493
492   -5    -8
994   -5    -10

我试过vertcat(organism(1:3,1:3).fitness),但不出所料,它只给了我一列。我希望在没有 for 循环的情况下做到这一点,因为这最终将是一个大小至少为 50x50 的整个结构数组。 有没有办法将二维结构数组中的所有标量字段转换为具有相同维度的矩阵?

(将 40x60 转换为 60x40 不会有任何问题;我不希望转置我得到的矩阵有任何困难。)

【问题讨论】:

    标签: arrays matlab matrix struct


    【解决方案1】:

    你可以使用重塑:

    scalar_matrix = reshape([organism.fitness], size(organism));
    

    【讨论】: