📜  MATLAB 中的逐页矩阵乘法

📅  最后修改于: 2022-05-13 01:55:02.626000             🧑  作者: Mango

MATLAB 中的逐页矩阵乘法

逐页矩阵乘法是沿两个数组的每个维度或页面将两个 ND 数组相乘。 Matlab 允许用户使用 pagemtimes() 计算逐页乘法。

pagemtimes() 方法的不同语法是:

  • Z = 分页次数(X,Y)
  • Z = pagemtimes(X,transpX,Y,transpY)

Z = 分页次数(X,Y)

  • 它返回 ND 数组 X 和 Y 的逐页乘法。每个页乘积由 Z(: , : , i) = X(: , : , i)*Y(: , : , i) 给出。
  • 如果 X 和 Y 是 ND 矩阵,则 X 和 Y 的前两个维度应该与矩阵乘法兼容。

例子:

Matlab
% Two 3-D arrays of sizes 3*3*3 and 3*2*3
X = randi([1 6],3,3,3);
Y = randi([1 6],3,2,3);
  
% Page-wise multiplication
M = pagemtimes(X,Y);
disp("Page-wise multiplication :");
disp(M);


Matlab
% X is a matrix of 2*3
% y is 3-D array of 3*3*3
X = randi([1 6],2,3);
Y = randi([1 6],3,3,3);
  
% Page-wise multiplication
M = pagemtimes(X,Y);
disp("Page-wise multiplication :");
disp(M);


Matlab
% X is a 3-D array of 3*2*3
% y is 3-D array of 3*3*3
X = randi([1 6],3,2,3);
Y = randi([1 6],3,2,3);
  
% Page-wise multiplication as X'*Y
M = pagemtimes(X,'transpose',Y,'none');
disp("Page-wise multiplication :");
disp(M);


输出 :



如果 X 是矩阵和 Y ND 数组,则 Z(: , : , i) = X*Y(: , : , I)。 X 的尺寸应与 Y 的前 2 个尺寸兼容。

例子:

MATLAB

% X is a matrix of 2*3
% y is 3-D array of 3*3*3
X = randi([1 6],2,3);
Y = randi([1 6],3,3,3);
  
% Page-wise multiplication
M = pagemtimes(X,Y);
disp("Page-wise multiplication :");
disp(M);

输出 :

Z = pagemtimes(X, transpX, Y, transpY)

  • 它通过将 X 和 Y 的转置视为 transpX 和 transpY 来返回 X 和 Y 的逐页乘法。
  • 如果 transp = 'none',那么它不会改变数组的转置
  • 如果 transp = 'transpose',则它转置数组的每一页。
  • 如果 transp = 'ctranspose',则它在数组的每一页上应用复共轭转置。

例子:

MATLAB

% X is a 3-D array of 3*2*3
% y is 3-D array of 3*3*3
X = randi([1 6],3,2,3);
Y = randi([1 6],3,2,3);
  
% Page-wise multiplication as X'*Y
M = pagemtimes(X,'transpose',Y,'none');
disp("Page-wise multiplication :");
disp(M);

输出 :