MATLAB 中的逐頁矩陣乘法


當我們將兩個 N 維矩陣沿兩個矩陣的每個維度或頁面進行乘法運算時,則稱為逐頁矩陣乘法。逐頁矩陣乘法主要在 3 維矩陣的情況下執行。

請閱讀本教程,瞭解使用 MATLAB 執行逐頁矩陣乘法的多種方法。

什麼是逐頁矩陣乘法?

當兩個 N 維矩陣沿兩個矩陣的每個維度進行乘法運算時,這種型別的矩陣乘法稱為逐頁矩陣乘法。它基本上是沿著 3D 矩陣中特定維度或頁面的兩個 3D 矩陣的逐元素乘法。

讓我們藉助一個示例來理解這個概念。

考慮兩個 3 維矩陣“A”和“B”,其維度為 $\mathrm{m \: \times \: n \: \times \: p}$。然後,沿著第三維度的逐頁乘法將透過沿著第三維度的每個頁面或維度對這兩個矩陣進行乘法來執行。

下面給出此乘法的技術解釋:

如果 A(:, :, i) 和 B(:, :, i) 分別是矩陣 A 和 B 在第 $\mathrm{i^{th}}$ 頁上的矩陣。然後,它們的逐頁乘法將定義如下:

$$\mathrm{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 矩陣的逐頁矩陣乘法,並帶有轉置。

結論

總之,逐頁矩陣乘法是一種矩陣乘法,通常用於沿著特定維度對兩個 3D 矩陣進行乘法。在 MATLAB 中,我們有一個函式“pagemtimes”,用於執行兩個 N 維矩陣的逐頁矩陣乘法。在本教程中,我透過 MATLAB 中的示例解釋了執行矩陣逐頁乘法涉及的步驟。

更新於:2023 年 10 月 26 日

137 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.