Main Content

# pagemtimes

## 语法

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

## 说明

````Z = pagemtimes(X,Y)` 计算 N 维数组 `X` 和 `Y` 的对应页的矩阵乘积。输出数组 `Z` 的每页都由乘积给出：`Z(:,:,i) = X(:,:,i)*Y(:,:,i)`。 如果 `X` 或 `Y` 之一是矩阵，则 `pagemtimes` 将其与另一输入的每页相乘。例如，如果 `X` 是矩阵，则 `Z(:,:,i) = X*Y(:,:,i)`。如果 `X` 和 `Y` 有三个以上的维度，则前两个维度以外的所有维度都必须具有兼容大小。`pagemtimes` 隐式扩展额外的维度，以乘以分页矩阵的所有组合：`Z(:,:,i,j,k) = Xx(:,:,i,j,k)*Yy(:,:,i,j,k)`。（额外维度已在 `Xx` 和 `Yy` 中扩展。） ```

``Z = pagemtimes(X,transpX,Y,transpY)` 可以选择使用 `X` 和 `Y` 的指定转置来计算矩阵乘积。对于此语法，您必须指定两个转置选项。`transpX` 和 `transpY` 必须分别为：`'transpose'`、`'ctranspose'` 或 `'none'`。`

## 示例

```rng default X = randi([1 6],2,2,3)```
```X = X(:,:,1) = 5 1 6 6 X(:,:,2) = 4 2 1 4 X(:,:,3) = 6 1 6 6 ```
`Y = randi([1 6],2,2,3)`
```Y = Y(:,:,1) = 6 5 3 1 Y(:,:,2) = 3 5 6 6 Y(:,:,3) = 4 6 1 6 ```
`Z = pagemtimes(X,Y)`
```Z = Z(:,:,1) = 33 26 54 36 Z(:,:,2) = 24 32 27 29 Z(:,:,3) = 25 42 30 72 ```

`A = magic(3)`
```A = 3×3 8 1 6 3 5 7 4 9 2 ```
```rng default Y = randi([1 10],3,3,3)```
```Y = Y(:,:,1) = 9 10 3 10 7 6 2 1 10 Y(:,:,2) = 10 10 2 2 5 5 10 9 10 Y(:,:,3) = 8 1 7 10 9 8 7 10 8 ```
`Z = pagemtimes(A,Y)`
```Z = Z(:,:,1) = 94 93 90 91 72 109 130 105 86 Z(:,:,2) = 142 139 81 110 118 101 78 103 73 Z(:,:,3) = 116 77 112 123 118 117 136 105 116 ```

```rng default X = rand(3,3,3) + 1i; Y = rand(3,3,3); A = pagemtimes(X,'ctranspose',Y,'none')```
```A = A(:,:,1) = 0.9350 - 1.2189i 0.6392 - 1.0148i 0.2302 - 0.9668i 0.7894 - 1.2189i 0.6920 - 1.0148i 0.1839 - 0.9668i 0.6316 - 1.2189i 0.4792 - 1.0148i 0.8544 - 0.9668i A(:,:,2) = 1.6427 - 1.9622i 0.4727 - 0.8547i 1.0453 - 1.7476i 1.5794 - 1.9622i 0.5513 - 0.8547i 1.2682 - 1.7476i 1.1025 - 1.9622i 0.5393 - 0.8547i 0.6151 - 1.7476i A(:,:,3) = 1.2393 - 1.5817i 1.4671 - 1.7401i 1.2737 - 1.4974i 0.9995 - 1.5817i 0.9240 - 1.7401i 0.7324 - 1.4974i 1.1504 - 1.5817i 1.2585 - 1.7401i 1.0786 - 1.4974i ```

`B = pagemtimes(X,'none',Y,'transpose')`
```B = B(:,:,1) = 0.9773 + 1.1444i 0.5902 + 0.7844i 0.6217 + 1.2716i 0.8270 + 1.1444i 0.6670 + 0.7844i 0.7805 + 1.2716i 0.1629 + 1.1444i 0.1793 + 0.7844i 0.8372 + 1.2716i B(:,:,2) = 0.8120 + 1.4948i 0.8387 + 1.5510i 1.3086 + 1.5187i 0.4491 + 1.4948i 0.5983 + 1.5510i 0.4138 + 1.5187i 1.4030 + 1.4948i 1.3871 + 1.5510i 1.3988 + 1.5187i B(:,:,3) = 0.8747 + 1.8788i 0.8246 + 1.8554i 0.6322 + 1.0849i 1.5873 + 1.8788i 1.5648 + 1.8554i 0.9777 + 1.0849i 1.4888 + 1.8788i 1.4839 + 1.8554i 0.8025 + 1.0849i ```

```X = ones(3,3,2); A = eye(3); Y = cat(4,A,2*A,3*A,4*A); Z = pagemtimes(X,Y)```
```Z = Z(:,:,1,1) = 1 1 1 1 1 1 1 1 1 Z(:,:,2,1) = 1 1 1 1 1 1 1 1 1 Z(:,:,1,2) = 2 2 2 2 2 2 2 2 2 Z(:,:,2,2) = 2 2 2 2 2 2 2 2 2 Z(:,:,1,3) = 3 3 3 3 3 3 3 3 3 Z(:,:,2,3) = 3 3 3 3 3 3 3 3 3 Z(:,:,1,4) = 4 4 4 4 4 4 4 4 4 Z(:,:,2,4) = 4 4 4 4 4 4 4 4 4 ```

## 输入参数

• 如果 `X``Y` 之一是矩阵，则 `pagemtimes` 将其与另一输入的每页相乘。例如，如果 `X` 是矩阵，则 `Z(:,:,i) = X*Y(:,:,i)`

• 如果 `X``Y` 有三个以上的维度，则前两个维度以外的所有维度都必须具有兼容大小`pagemtimes` 隐式扩展额外的维度，以乘以分页矩阵的所有组合：`Z(:,:,i,j,k) = Xx(:,:,i,j,k)*Yy(:,:,i,j,k)`。（额外维度已在 `Xx``Yy` 中扩展。）

`'none'`不要应用转置。
`'transpose'`将转置应用于对应输入的每页（`transpose` 应用于每页）。
`'ctranspose'`将复共轭转置应用于对应输入的每页（`ctranspose` 应用于每页）。

## 输出参量

`X` 的大小`Y` 的大小运算

`Z(:,:,i) = X(:,:,i)*Y(:,:,i)`

`Z(:,:,i) = X*Y(:,:,i)`

`Z(:,:,i) = X(:,:,i)*Y`

N 维

N 维

`Z(:,:,i,j,k) = X(:,:,i,j,k)*Y(:,:,i,j,k)`

`Z` 的大小遵循以下规则：

• 在前两个维度中，适用矩阵乘法规则。如果任一操作数是标量，则结果具有非标量操作数的大小。当两个操作数均为矩阵时，将 m×n 矩阵乘以 n×q 矩阵会得到 m×q 矩阵。

• `X``Y` 中前两个维度之外的兼容维度会扩展以匹配非单一维度。因此，如果 `X` 为 10×8×1×3，`Y` 为 8×10×4×1，则 `Z` 为 10×10×4×3。

## 详细信息

### 数组页

`pagemtimes` 这样的分页运算函数对排列成一个多维数组的二维矩阵进行运算。例如，三维数组的第三个维度中的元素通常称为页面，因为它们像书籍中的页一样堆叠在一起。每个页面都是函数对其进行运算的一个矩阵。

`cat` 函数可用于将矩阵集合组合成一个多维数组，而 `zeros` 函数可用于预分配一个多维数组。

## 提示

• 对于实数和复数 N 维数组，`pagemtimes(X,'transpose',X,'none')``pagemtimes(X,'none',X,'transpose')` 返回具有对称矩阵页的数组。对于复数 N 维数组，`pagemtimes(X,'ctranspose',X,'none')``pagemtimes(X,'none',X,'ctranspose')` 返回具有埃尔米特矩阵页的数组。

• 使用 `pagemtimes` 获得的结果在数值上等效于在 `for` 循环中乘以每个相同的矩阵。但是，由于存在浮点舍入误差，这两个结果可能略有不同。