Loading [MathJax]/jax/output/HTML-CSS/jax.js

MATLAB 中的逐页矩阵乘法


当我们将两个 N 维矩阵沿两个矩阵的每个维度或页面进行乘法运算时,则称为逐页矩阵乘法。逐页矩阵乘法主要在 3 维矩阵的情况下执行。

请阅读本教程,了解使用 MATLAB 执行逐页矩阵乘法的多种方法。

什么是逐页矩阵乘法?

当两个 N 维矩阵沿两个矩阵的每个维度进行乘法运算时,这种类型的矩阵乘法称为逐页矩阵乘法。它基本上是沿着 3D 矩阵中特定维度或页面的两个 3D 矩阵的逐元素乘法。

让我们借助一个示例来理解这个概念。

考虑两个 3 维矩阵“A”和“B”,其维度为 m×n×p。然后,沿着第三维度的逐页乘法将通过沿着第三维度的每个页面或维度对这两个矩阵进行乘法来执行。

下面给出此乘法的技术解释:

如果 A(:, :, i) 和 B(:, :, i) 分别是矩阵 A 和 B 在第 ith 页上的矩阵。然后,它们的逐页乘法将定义如下:

C(:,:,i)=A(:,:,i)B(:,:,i)

对于所有 i = 1, 2, 3, …, p。

这就是关于逐页矩阵乘法基础知识的全部内容。现在让我们讨论如何使用 MATLAB 执行逐页矩阵乘法。

使用 MATLAB 进行逐页矩阵乘法

在 MATLAB 中,我们有以下两个内置函数来执行逐页矩阵乘法:

  • pagemtimes(A, B)

  • pagemtimes(A, transpA, B, transpY)

这两个函数用于在 MATLAB 中沿 3D 矩阵的页面执行矩阵乘法。

现在让我们讨论这两个函数在 MATLAB 编程中的实现。

执行两个 3D 矩阵的逐页矩阵乘法

在 MATLAB 中,“pagemtimes(A, B)”是一个内置函数,用于执行两个 3 维矩阵 A 和 B 的逐页矩阵乘法。

执行此乘法涉及的步骤如下所述:

  • 步骤 1 - 创建两个 3D 矩阵 A 和 B。

  • 步骤 2 - 使用 A 和 B 作为参数调用“pagemtimes()”函数以执行它们的逐页乘法。

  • 步骤 3 - 使用“disp”函数显示逐页矩阵乘法的结果。

示例 1

以下示例演示了这些步骤的实际实现:

% MATLAB code to perform page-wise matrix multiplication % Create two sample 3D matrices A and B A = cat(3, [5 5 1; 5 4 3; 2 1 4], [3 5 5; 4 2 3; 2 4 5], [4 2 5; 1 4 2; 1 2 5]); B = cat(3, [2 3 1; 4 3 1; 2 5 3], [3 2 2; 2 5 3; 1 4 2], [2 5 2; 3 2 5; 1 4 1]); % Perform page-wise matrix multiplication of A and B C = pagemtimes(A, B); % Display the original matrices and their page-wise product disp('Matrix A:'); disp(A); disp('Matrix B:'); disp(B); disp('Page-wise product of A and B:') disp(C);

输出

它将产生以下输出:

Matrix A:
(:, :, 1) =
   5     5     1
   5     4     3
   2     1     4
(:, :, 2) =
   3     5     5
   4     2     3
   2     4     5
(:, :, 3) =
   4     2     5
   1     4     2
   1     2     5

Matrix B:
(:, :, 1) =
   2     3     1
   4     3     1
   2     5     3
(:, :, 2) =
   3     2     2
   2     5     3
   1     4     2
(:, :, 3) =
   2     5     2
   3     2     5
   1     4     1

Page-wise product of A and B:
(:, :, 1) =
   32    35    13
   32    42    18
   16    29    15
(:, :, 2) =
   24    51    31
   19    30    20
   19    44    26
(:, :, 3) =
   19    44    23
   16    21    24
   13    29    17

此示例显示了使用 MATLAB 中的“pagemtimes”函数对两个 3D 矩阵进行逐页乘法。

执行矩阵和 3D 矩阵之间的逐页矩阵乘法

在 MATLAB 中,我们还可以使用“pagemtimes(A, B)”函数执行矩阵和 3D 矩阵之间的矩阵乘法。

假设 A 是一个普通矩阵,B 是一个 3D 矩阵。然后,我们可以如下对矩阵 A 和矩阵 B 进行逐页乘法:

  • 步骤 1 - 创建一个矩阵 A 和一个 3D 矩阵 B。

  • 步骤 2 - 使用“pagemtimes(A, B)”函数执行矩阵 A 和 B 的逐页乘法。

  • 步骤 3 - 使用“disp”函数显示 A 和 B 的逐页乘积。

示例 2

让我们通过 MATLAB 中的一个示例来了解此乘法。

% MATLAB code to page-wise multiply a matrix and a 3D matrix % Create a sample matrix A A = [5 4 1; 1 5 3; 2 4 1]; % Create a 3D matrix B B = cat(3, [2 3 1; 4 3 1; 2 5 3], [3 2 2; 2 5 3; 1 4 2], [2 5 2; 3 2 5; 1 4 1]); % Perform page-wise matrix multiplication of A and B C = pagemtimes(A, B); % Display the original matrices and their page-wise product disp('Ordinary Matrix A:'); disp(A); disp('3D Matrix B:'); disp(B); disp('Page-wise product of A and B:') disp(C);

输出

它将产生以下输出:

Ordinary Matrix A:
   5     4     1
   1     5     3
   2     4     1
3D Matrix B:
(:, :, 1) =
   2     3     1
   4     3     1
   2     5     3
(:, :, 2) =
   3     2     2
   2     5     3
   1     4     2
(:, :, 3) =
   2     5     2
   3     2     5
   1     4     1

Page-wise product of A and B:
(:, :, 1) =
   28    32    12
   28    33    15
   22    23     9
(:, :, 2) =
   24    34    24
   16    39    23
   15    28    18
(:, :, 3) =
   23    37    31
   20    27    30
   17    22    25

此示例显示了如何使用 MATLAB 中的“pagemtimes”函数对普通矩阵和 3D 矩阵进行逐页乘法。

执行带有 3D 矩阵转置页面的逐页矩阵乘法

在 MATLAB 中,有一个函数“pagemtimes(A, transpA, B, transpB)”用于执行带有 3D 矩阵转置页面的逐页矩阵乘法。

执行带有页面转置的逐页矩阵乘法需要遵循以下步骤:

  • 步骤 1 - 创建两个 3D 矩阵 A 和 B。

  • 步骤 2 - 定义乘法的转置标志。这些可以是“none”、“ctranspose”或“transpose”。

  • 步骤 3 - 使用“pagemtimes”函数执行带有转置的逐页矩阵乘法。

  • 步骤 4 - 使用“disp”函数显示矩阵的逐页乘积。

示例 3

让我们看一个示例来了解 MATLAB 中的此乘法。

% MATLAB code to page-wise multiply two 3D matrices with transpositions % Create two sample 3D matrices A and B A = cat(3, [5 5 1; 5 4 3; 2 1 4], [3 5 5; 4 2 3; 2 4 5], [4 2 5; 1 4 2; 1 2 5]); B = cat(3, [2 3 1; 4 3 1; 2 5 3], [3 2 2; 2 5 3; 1 4 2], [2 5 2; 3 2 5; 1 4 1]); % Specify the transposition flags transpA = 'none'; transpB = 'transpose'; % Perform page-wise matrix multiplication with transpositions C = pagemtimes(A, transpA, B, transpB); % Display the original matrices and their page-wise product disp('Matrix A:'); disp(A); disp('Matrix B:'); disp(B); disp('Page-wise product of A and B with transpositions:') disp(C);

输出

它将产生以下输出:

Matrix A:
(:,:,1) =
   5     5     1
   5     4     3
   2     1     4
(:,:,2) =
   3     5     5
   4     2     3
   2     4     5
(:,:,3) =
   4     2     5
   1     4     2
   1     2     5

Matrix B:
(:,:,1) =
   2     3     1
   4     3     1
   2     5     3
(:,:,2) =
   3     2     2
   2     5     3
   1     4     2
(:,:,3) =
   2     5     2
   3     2     5
   1     4     1

Page-wise product of A and B with transpositions:
(:,:,1) =
   26    36    38
   25    35    39
   11    15    21
(:,:,2) =
   29    46    33
   22    27    18
   24    39    28
(:,:,3) =
   28    41    17
   26    21    19
   22    32    14

此示例显示了如何执行两个 3D 矩阵的逐页矩阵乘法,并带有转置。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

结论

总之,逐页矩阵乘法是一种矩阵乘法,通常用于沿着特定维度对两个 3D 矩阵进行乘法。在 MATLAB 中,我们有一个函数“pagemtimes”,用于执行两个 N 维矩阵的逐页矩阵乘法。在本教程中,我通过 MATLAB 中的示例解释了执行矩阵逐页乘法涉及的步骤。

更新于:2023 年 10 月 26 日

137 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告