【问题标题】:Matlab transform 2D matrix to 3D matrixMatlab 将 2D 矩阵转换为 3D 矩阵
【发布时间】:2016-09-11 13:37:27
【问题描述】:

我有一个二维矩阵A,比如:

  A = [ 1 2 3 4 5 6;
    7 8 9 10 11 12;
    1 2 3 4 5 6;
    7 8 9 10 11 12;]

我想将这个 2D 矩阵转换为大小为 2X3X4 的 3D 矩阵B,例如:

B(:,:,1) = [1 2 3; 7 8 9];
B(:,:,2) = [1 2 3; 7 8 9];
B(:,:,3) = [4 5 6; 10 11 12];
B(:,:,4) = [4 5 6; 10 11 12];

现在我要做的是首先将这个 2D 矩阵A 转换为单元格类型Cmat2cell,然后使用cat 将其转换为 3D 矩阵B,但这太复杂了,因为我这样做了根本不需要这个单元格C

有人能给我一些建议吗?如何将A 直接优雅地转换为B

谢谢!

【问题讨论】:

  • A 总是 4x6 吗?
  • @RafaelMonteiro 不,这只是一个例子,只有 B 的每个页面大小相同。

标签: matlab matrix-transform


【解决方案1】:

你可以这样做 -

[m,n] = size(A);
nr = 2; % Number of rows in o/p
nc = 3; % Number of cols in o/p
out = reshape(permute(reshape(A,nr,m/nr,nc,[]),[1,3,2,4]),nr,nc,[]);

【讨论】:

  • 太棒了!!!您已经创建了一个 4D 矩阵并节省了很多时间。但是您的代码中有一个小错误。我认为应该是:
  • @JayWang 应该是?
  • 抱歉,ctrl + c 失败。应该是输出 = reshape(permute(reshape(A,nr,m/nr,nc,[]),[1,3,2,4]),nr,nc,[])
猜你喜欢
  • 1970-01-01
  • 2015-12-08
  • 2015-02-04
  • 2016-08-25
  • 2013-09-21
  • 1970-01-01
  • 2011-01-16
  • 2012-05-24
  • 1970-01-01
相关资源
最近更新 更多