pagemtimes
分页矩阵乘法
描述
例子
3-D阵列相乘
创建两个3d数组并将相应的页面相乘。
rng默认的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
的我
输出的第Th页Z(:,:,我)
是通过相乘得到的X(:,:我)* Y(:,:,我)
.
乘法矩阵和三维阵列
创建一个矩阵一个
以及3d阵列Y
,然后将3d阵列的每一页与矩阵相乘。
魔术(3)
一个=3×38 1 6 3 5 7 4 9 2
rng默认的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
的我
输出的第Th页Z(:,:,我)
是通过相乘得到的* Y(:,:,我)
.
乘转置数组页
创建两个3d数组X
而且Y
.使用pagemtimes
执行以下操作X(:,:我)' * Y(:,:,我)
在每一页X
而且Y
.
rng默认的X = rand(3,3,3) + 1i;Y = rand(3,3,3);A = pagemtimes(X,“ctranspose”, Y,“没有”)
=(:: 1) = 0.9350 - 1.2189我0.6392 - 1.0148 0.2302 - 0.9668 0.7894 - 1.2189我0.6920 - 1.0148 0.1839 - 0.9668 0.6316 - 1.2189 0.4792 - 1.0148 0.8544 - 0.9668我(:,:2)= 1.6427 - 1.9622我0.4727 - 0.8547 1.0453 - 1.7476 1.5794 - 1.9622我0.5513 - 0.8547 1.2682 - 1.7476 1.1025 - 1.9622 0.5393 - 0.8547 0.6151 - 1.7476我(:,:,3)= 1.2393 - 1.5817我1.4671 - 1.7401 1.2737 - 1.4974 0.9995 - 1.5817我0.9240 - 1.7401 0.7324 - 1.4974 1.1504 - 1.5817 1.2585 - 1.7401 1.0786 - 1.4974我
现在,执行该操作X(:,:我)* Y(:,:我)。”
在每一页X
而且Y
.
B = pagemtimes(X,“没有”, Y,“转置”)
B = B(:: 1)我0.5902 + 0.7844 = 0.9773 + 1.1444 0.6217 0.8270 + 1.1444 + 1.2716我0.6670 0.1629我0.7805 + 1.2716 + 0.7844 + 1.1444我0.1793 + 0.7844 0.8372 + 1.2716 B(:,: 2) 0.8387 + 1.5510 = 0.8120 + 1.4948我1.3086 + 1.5187我0.4491 + 1.4948 0.5983 1.4030我0.4138 + 1.5187 + 1.5510 + 1.4948我1.3871 + 1.5510 1.3988 + 1.5187 B(:,:, 3)我0.8246 + 1.8554 = 0.8747 + 1.8788 0.6322 1.5648我1.5873 + 1.8788 + 1.0849 + 1.8554我0.9777 + 1.0849 1.4888 + 1.8788 1.4839 0.8025 + 1.0849 + 1.8554我
乘N-D数组
创建一个3 × 3 × 2的数组X
然后乘以一个3 × 3 × 1 × 4的数组Y
.结果的大小为3 × 3 × 2 × 4。
X = ones(3,3,2);A =眼睛(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
每个大小为1的维度(在前两个维度之后)都隐式展开以匹配其他输入的维度大小,然后是输出的每个页面Z (:,:, i, j)
是通过相乘得到的X (:,:, i, j) * Y (:,:, i, j)
.一种直观的思考方法是X
包含两个矩阵作为三维数组的页,Y包含沿第四维排列的四个矩阵;因此,将这些矩阵的所有组合相乘得到8个3 × 3矩阵。
输入参数
transpX
,transpY
- - - - - -换位选项
“没有”
(默认)|“转置”
|“ctranspose”
换位选项,每个选项都指定为该表中的一个值。
价值 | 描述 |
---|---|
“没有” |
不要使用换位。 |
“转置” |
对相应输入的每一页应用换位(转置 应用于每一页)。 |
“ctranspose” |
对相应输入的每一页应用复共轭转置(ctranspose 应用于每一页)。 |
使用转置选项来计算诸如X ' * Y
以一种明智的方式。即使只有一个输入被转置,也必须指定两个转置选项。
例子:pagemtimes (X,“ctranspose”Y“没有”)
的分页版本X ' * Y
.
数据类型:字符
|字符串
输出参数
Z
-输出数组
多维数组
输出数组,作为多维数组返回。执行的操作pagemtimes
取决于输入的大小X
而且Y
:
的大小X |
的大小Y |
操作 |
---|---|---|
三维 |
三维 |
Z(:,:,i) = X(:,:,i)*Y(:,:,i) |
二维 |
三维 |
Z(:,:,i) = X*Y(:,:,i) |
三维 |
二维 |
Z(:,:,i) = X(:,:,i)*Y |
一天 |
一天 |
Z(:,:,i,j,k) = X(:,:,i,j,k)*Y(:,:,i,j,k) |
的大小Z
遵循以下规则:
在前两个维度中,适用矩阵乘法的规则。如果任意一个操作数是标量,则结果具有非标量操作数的大小。当两个操作数都是矩阵时,乘以an米——- - - - - -n矩阵n——- - - - - -问矩阵的结果是米——- - - - - -问矩阵。
中的前两个以外的兼容维度
X
而且Y
扩展以匹配非单例维度。因此,如果X
是10 × 8 × 1 × 3和Y
是8 × 10 × 4 × 1吗Z
10-by-10-by-4-by-3。
更多关于
提示
对于实N-D数组,
pagemtimes (X,“转置”,X,“没有一个”)
返回具有对称页面的矩阵。类似地,对于复杂的N-D数组,可以使用pagemtimes (X, ctranspose, X,“没有一个”)
.
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
转置期权
transpX
而且transpY
必须是常数。此函数的代码生成不支持整数和半精度数据类型。
传入的输入数组
pagemtimes
必须是非稀疏的。代码生成支持数组输入的隐式展开以及的非页面维度
pagemtimes
函数。
线程环境
在后台使用MATLAB®运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
该功能完全支持GPU阵列。有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存分区大型数组。
这个函数完全支持分布式数组。有关更多信息,请参见运行MATLAB函数与分布式数组(并行计算工具箱).
版本历史
在R2020b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。