【问题标题】:how to reshape a cube into one matrix in matlab如何在matlab中将立方体重塑为一个矩阵
【发布时间】:2014-05-27 15:37:26
【问题描述】:

我有一个 m×n×k 的立方体,这意味着我有 k 个 m×n 的矩阵。我想将其重塑为一个大矩阵,例如 p 行和 q 列(将每个 m × n 矩阵视为一个元素)。
我怎样才能做到这一点?我可以使用重塑功能吗?例如,这些矩阵放在一起形成一个立方体:

1 1 , 2 2 , 3 3 , ... , 16 16
1 1   2 2   3 3         16 16

在上面的例子中,k=16,m=n=2。
我想像这样重塑它们:

1 1 5 5 9  9  13 13
1 1 5 5 9  9  13 13
2 2 6 6 10 10 14 14
2 2 6 6 10 10 14 14
3 3 7 7 11 11 15 15
3 3 7 7 11 11 15 15
4 4 8 8 12 12 16 16
4 4 8 8 12 12 16 16

【问题讨论】:

  • 请解释一下“k矩阵m乘n”是什么意思?一个矩阵单元?
  • 不,它们不是元胞数组,正如我上面解释的那样,它们是一些较小的矩阵放在一起。
  • 哪个是 m x k*n 矩阵?
  • 看这个例子,我有 16 个矩阵,有 2 行和 2 列,例如 [1 1;1 1] 或 [2 2;2 2] 等等。这些放在一起形成一个 2 x 2 x 16 的立方体。现在我想按照问题所示重塑这个立方体

标签: matlab reshape


【解决方案1】:

假设您的输入是 n x n x k*k 矩阵,您可以使用以下方法实现所需的输入:

n=2
k=4
reshape(permute(reshape(M,n,n,k,k),[1,3,2,4]),n*k,n*k);

内部reshape拆分为n×n×k×k,直接表示块。

置换交换维度以让 reshape(...,n*k,n*k) 产生预期的结果。

【讨论】:

  • 如果他们是 50 乘 50 乘 16 怎么样?!哪些项目应该改变?
  • 使用维度变量更新。 50 x 50 x 16 将是 n=50;k=4;
猜你喜欢
  • 2014-02-05
  • 1970-01-01
  • 2012-06-18
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多