如何对高维矩阵进行转置?

您所在的位置:网站首页 matlab计算矩阵的转置 如何对高维矩阵进行转置?

如何对高维矩阵进行转置?

2024-02-13 10:49| 来源: 网络整理| 查看: 265

在线性代数课程中,我们一般只需要对二维矩阵进行转置,这是非常简单的。但在编写代码时,我们可能遇到高维(三维、四维等)矩阵转置的问题,那么此时该如何对其进行转置呢?最关键的地方,就是搞清楚在转置过程中,什么位置关系是变化的,什么位置关系是不变的。下面举例说明。

三维矩阵

三位矩阵的转置比较简单,因为它的第二个维度是不发生变化的,实质上只是交换了第一个和第三个维度。

如下面这个 2 × 2 × 3 2\times 2\times 3 2×2×3 的矩阵:

[[[ 1. 2. 3.] [ 4. 5. 6.]] [[ 7. 8. 9.] [10. 11. 12.]]]

在这个矩阵中我们称每个 2 × 3 2\times 3 2×3 的小矩阵为一个矩阵块,2是这个矩阵块的行数,3是这个矩阵块的列数。也就是说,对于 2 × 2 × 3 2\times 2\times 3 2×2×3 的这个大矩阵,第一个维度表示矩阵块的个数,第二个维度表示矩阵块中行的个数,第三个维度表示矩阵块中列的个数。

对它进行转置时,我们要先明确转置后的矩阵形状为 3 × 2 × 2 3\times 2\times 2 3×2×2。我们可以先把它的整体框架画出:

因为第二个维度是不发生变化的,所以每个矩阵块中的行不会变化,也就是说,1下面仍然是4,2下面仍然是5……

[[[ . .] [ . .]] [[ . .] [ . .]] [[ . .] [ . .]]]

因为第一个维度和第三个维度发生了变化,所以1后面不再是2,1和4下面不再是7和10。要实现这个变化,只需要将2和5与7和10交换一下即可,这就是转置后的第一个矩阵块,如此重复,得到转置后的矩阵为:

[[[ 1. 7.] [ 4. 10.]] [[ 2. 8.] [ 5. 11.]] [[ 3. 9.] [ 6. 12.]]] 四维矩阵

对于四维矩阵,我们可以先对中间两个维度进行转置,再对第一个和最后一个维度进行转置。 下面是一个形状为 2 × 2 × 2 × 2 2\times 2\times 2\times 2 2×2×2×2 的矩阵:

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

我们先对中间两个维度转置,这样一来第一个维度就是不变的,所以我们可以将这个矩阵分成两个形状为 2 × 2 × 2 2\times 2\times 2 2×2×2 的矩阵分别转置,然后再合并在一起。

跟对三维矩阵进行转置的步骤一样,对于每个矩阵来说,只有列维度是不变的,也就是说,1后面仍然是2,但1下面不能是3,1和3下面也不再是5和7。所以,我们只要把3和4与5和6交换一下即可,最终得到矩阵:

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

然后,我们要对第一个和最后一个维度进行转置,此时需要保证:1下面仍然是5,1和5下面仍然是3和7,1后面不再是2,1、5、3和7下面不再是9、13、11和15。所以,我们只需要将2、6、4、8与9、13、11、15交换一下即可,最终得到结果:

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3