MATLAB permute命令的操作邏輯

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章