张量切片详解
说明 lateral slice
、front slice
和 top slice
的操作,并用 MATLAB 代码实现这些操作。
例子
有一个三维张量 X ∈ R 2 × 3 × 4 \mathcal{X} \in \mathbb{R}^{2 \times 3 \times 4} X∈R2×3×4,表示如下:
X = [ 1 2 3 4 5 6 7 8 9 10 11 12 ] , [ 13 14 15 16 17 18 19 20 21 22 23 24 ] \mathcal{X} = \begin{array}{ccc} \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{bmatrix}, & \begin{bmatrix} 13 & 14 & 15 & 16 \\ 17 & 18 & 19 & 20 \\ 21 & 22 & 23 & 24 \end{bmatrix} \end{array} X= 159261037114812 , 131721141822151923162024
MATLAB 代码实现
创建这个张量,并实现三种切片方法。
% 创建张量 X
X = reshape(1:24, [2, 3, 4]);
% 显示原始张量
disp('原始张量 X:');
disp(X);
% Lateral Slice (侧向切片)
disp('Lateral Slice:');
for k = 1:size(X, 3)
disp(['第 ', num2str(k), ' 个侧向切片:']);
disp(squeeze(X(:, :, k)));
end
% Front Slice (正面切片)
disp('Front Slice:');
for j = 1:size(X, 2)
disp(['第 ', num2str(j), ' 个正面切片:']);
disp(squeeze(X(:, j, :)));
end
% Top Slice (顶面切片)
disp('Top Slice:');
for i = 1:size(X, 1)
disp(['第 ', num2str(i), ' 个顶面切片:']);
disp(squeeze(X(i, :, :)));
end
运行上述代码后,输出结果如下:
原始张量 X:
(:,:,1) =
1 3 5
2 4 6
(:,:,2) =
7 9 11
8 10 12
(:,:,3) =
13 15 17
14 16 18
(:,:,4) =
19 21 23
20 22 24
Lateral Slice:
第 1 个侧向切片:
1 3 5
2 4 6
第 2 个侧向切片:
7 9 11
8 10 12
第 3 个侧向切片:
13 15 17
14 16 18
第 4 个侧向切片:
19 21 23
20 22 24
Front Slice:
第 1 个正面切片:
1 7 13 19
2 8 14 20
第 2 个正面切片:
3 9 15 21
4 10 16 22
第 3 个正面切片:
5 11 17 23
6 12 18 24
Top Slice:
第 1 个顶面切片:
1 3 5
7 9 11
13 15 17
19 21 23
第 2 个顶面切片:
2 4 6
8 10 12
14 16 18
20 22 24
原始张量:
- 张量 X \mathcal{X} X 的尺寸为 2 × 3 × 4 2 \times 3 \times 4 2×3×4。
Lateral Slice(侧向切片):
- 固定第三个维度的索引 k k k,得到 2 × 3 2 \times 3 2×3 的矩阵。
- 例如,第1个侧向切片是 X ( : , : , 1 ) \mathcal{X}(:,:,1) X(:,:,1)。
Front Slice(正面切片):
- 固定第二个维度的索引 j j j,得到 2 × 4 2 \times 4 2×4 的矩阵。
- 例如,第1个正面切片是 X ( : , 1 , : ) \mathcal{X}(:,1,:) X(:,1,:)。
Top Slice(顶面切片):
- 固定第一个维度的索引 i i i,得到 3 × 4 3 \times 4 3×4 的矩阵。
- 例如,第1个顶面切片是 X ( 1 , : , : ) \mathcal{X}(1,:,:) X(1,:,:)。