MATLAB permute命令的操作逻辑

微笑、不失礼 提交于 2019-12-21 01:54:42

MATLAB中permute命令可以对高维矩阵的轴进行操作,例如使2*3*4的三维矩阵调整为4*2*3,那么具体函数内部进行了什么操作呢?

我们知道matlab里有两种坐标系,一种是我们熟知的笛卡尔坐标系,用命令axis xy实现,以二维图为例,原点在左下角

还有一种是matlab中矩阵的索引体系,用命令axis ij实现,以二维图为例,原点在左上角

permute命令就是基于axis ij这种坐标轴下进行的操作

下面我们以一个三维矩阵的例子来说明命令permute的内部操作逻辑

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

val(:,:,1) =

     1     2
     3     4


val(:,:,2) =

     5     6
     7     8


val(:,:,3) =

     9    10
    11    12

permute(a,order)操作分为两种情况

1.保持坐标轴关系不变

也就是order=[2 3 1]或[3 1 2]

这时候只用找到一个角度来重新观察这个矩阵即可

例如下图中所示

用MATLAB运行结果进行验证

D=permute(A,[2 3 1]);

val(:,:,1) =

     1     5     9
     2     6    10


val(:,:,2) =

     3     7    11
     4     8    12

2,某两个轴进行交换

例如order = [1 3 2] [2 1 3] [3 2 1]

那么就是针对这两个轴的数据进行转置,如上图所示

用MATLAB运行结果进行验证

B=permute(A,[2 1 3]);

val(:,:,1) =

     1     3
     2     4


val(:,:,2) =

     5     7
     6     8


val(:,:,3) =

     9    11
    10    12

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!