【问题标题】:MATLAB: 2-D array of structs (containing vectors) to 3-D Array?MATLAB:2-D 结构数组(包含向量)到 3-D 数组?
【发布时间】:2011-03-04 01:38:19
【问题描述】:

我有一个二维的结构“单元”数组,每个都包含许多向量:

cell(1,1).U = [1 2 3];
cell(1,2).U = [4 5 6];
cell(2,1).U = [7 8 9];
cell(2,2).U = [0 1 2];

我想将数据提取到一个 3-D 数组 A(i,j,k) 中。

使用单元格样式提取返回一个 1x3 单元格,其内容为

>> {cell.U}
ans = {[cell(1,1).U]   [cell(1,2).U]   [cell(2,1).U]   [cell(2,2).U]}

因此,使用 cell2mat() 将其转换为矩阵,如下所示:

cell2mat(ans)

返回一个 3x4 数组。

理想情况下,我想要一个 2x2x3 数组,以便保留索引 i 和 j。有没有办法(没有循环)来完成这个?

【问题讨论】:

    标签: arrays matlab data-structures multidimensional-array


    【解决方案1】:

    使用CATRESHAPE。另外,不要调用你的变量cell,因为这是一个内置函数。

    >> c(1,1).U = [1 2 3];
    c(1,2).U = [4 5 6];
    c(2,1).U = [7 8 9];
    c(2,2).U = [0 1 2];
    
    
    >> out = cat(1,c.U)
    >> out = reshape(out,2,2,3)
    out(:,:,1) =
         1     4
         7     0
    out(:,:,2) =
         2     5
         8     1
    out(:,:,3) =
         3     6
         9     2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 2021-09-03
      相关资源
      最近更新 更多