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
来源:CSDN
作者:jzz3933
链接:https://blog.csdn.net/jzz3933/article/details/103629470