哇,这是我迄今为止使用的所有不同 SDK 中最难弄清楚的功能之一。因此,在“我的置换函数之旅”中,我多次使用了 F*ck 这个词。这里有一些例子可以防止你遭受类似的极度痛苦:
首先,让我们记住matlab中矩阵的维度名称:A = zeros(4,5,7),矩阵A有4行5列7页。如果您不指定维度,则其默认计数设置为 1。(即B=zeros(10,3) 有 10 行、3 列和 1 页,此顺序很重要!)
order 参数传递给permute 交换矩阵中的这些维度并产生一个尴尬的数组组合,我认为permute 是这种效果的误称。
现在让我们转到示例,最后:
% A has 4 rows, 2 columns and 1 page
A =[ 5 6
8 2
2 2
1 3];
% (numbers in the order argument of permute function indicates dimensions,
% 3 = page , 2 = column and 1 = row dimensions):
B = permute(A,[3,2,1]); % [3,2,1] means [ page,column,row]
C = permute(A,[3,1,2]); % [3,1,2] means [ page,row,column]
D = permute(A,[1,3,2]); % [1,3,2] means [ row,page,column]
E = permute(A,[2,3,1]); % [2,3,1] means [ column,page,row]
F = permute(A,[2,1,3]); % [2,1,3] means [ column,row,page]
G = permute(A,[1,2,3]); % [1,2,3] means [ row,column,page]
解释:
B = permute(A,[3,2,1]);
1x2x4(A = 1 的 page(3) 维度,A = 2 的 column(2) 维度,A = 4 的 row(1) 维度;1 是行维度,2 是列维度,4 是页面维度生成的 B. 继续阅读直到你理解为止)
因此,将有 4 个 1x2 (1x2x4) 行矩阵。如:
ans(:,:,1) =
5 6
ans(:,:,2) =
8 2
ans(:,:,3) =
2 2
ans(:,:,4) =
1 3
*
C = permute(A,[3,1,2]);
1x4x2(A = 1 的 page(3) 维度,A = 4 的 row(1) 维度,A = 2 的 column(2) 维度;1 是行维度,4 是列维度,2 是页面维度生成的 C)
因此,将有 2 个 1x4 (1x4x2) 行矩阵。如:
ans(:,:,1) =
5 8 2 1
ans(:,:,2) =
6 2 2 3
*
D = permute(A,[1,3,2]);
4x1x2(A = 4的行(1)维度,A = 1的页面(3)维度,A = 2的列(2)维度;4是行维度,1是列维度,2是页面维度生成的 D)
因此,将有 2 个 4x1 (4x1x2) 列矩阵。如:
ans(:,:,1) =
5
8
2
1
ans(:,:,2) =
6
2
2
3
*
E = permute(A,[2,3,1]);
2x1x4(A = 2 的 column(2) 维度,A = 1 的 page(3) 维度,A = 4 的 row(1) 维度;2 是行维度,1 是列维度,4 是页面维度生成的 E)
因此,将有 4 个 2x1 (2x1x4) 列矩阵。如:
ans(:,:,1) =
5
6
ans(:,:,2) =
8
2
ans(:,:,3) =
2
2
ans(:,:,4) =
1
3
*
F = permute(A,[2,1,3]); % this is transpose and same as [2,1]
2x4x1(A = 2 的 column(2) 维度,A = 4 的 row(1) 维度,A = 1 的 page(3) 维度;2 是行维度,4 是列维度,1 是页面维度生成的 F)
因此,将有 1 个 2x4 (2x4x1) 矩阵。如:
ans =
5 8 2 1
6 2 2 3
*
G = permute(A,[1,2,3]); % this makes no difference, using to show the reasoning
4x2x1(A = 4 的行(1)维度,A = 2 的列(2)维度,A = 1 的页面(3)维度;4 是行维度,2 是列维度,1 是页面维度生成的 G)
因此,将有 1 个 4x2 (4x2x1) 矩阵(本身!)。如:
ans =
5 6
8 2
2 2
1 3
是的,这看起来很难,确实很难!要检查您是否完全理解,请尝试预测方阵的相似不同排列。玩得开心,我的意思是减少痛苦:)