多个矩阵乘法,启用了数组的扩张

向量,矩阵乘法或标量中包含两个一天数组,数组扩张启用。

9.7 k下载

更新2010年7月26日

查看许可协议

MULTIPROD是一个强大的、快速和内存高效推广天数组的MATLAB矩阵乘法操作符(*)。而后者只能用二维数组,MULTIPROD作品也与多维数组。
MULTIPROD之间执行多个乘法矩阵,向量,或两个多维数组中包含的标量,自动启用虚拟阵列扩展(AX)。AX允许你,例如,用一个矩阵乘以一个数组的矩阵B,几乎复制了获取数组兼容B。

多维数组可能包含矩阵或向量甚至标量沿着一个或两个维度。例如,一个4×5×3数组包含三个4×5矩阵在其第一和第二维度(图1)。因此,数组可以被描述为一个块数组元素的矩阵,和它的大小可以用(4×5)×3。

MULTIPROD也可以描述为一个泛化的内置函数乘以。当次运营中的元素乘法(例如。* B), MULTIPROD事情,矩阵乘法。

例子

假设

(2×5)×6,
B是(5×3)×6。

与MULTIPROD 6矩阵可以乘以B的一个直观上很有吸引力的步骤:

C = MULTIPROD (A, B)。

在C (2×3)×6。

通过自动应用AX, MULTIPROD可以用一个矩阵乘以一个街区的所有块数组。所以,如果

2×5(单矩阵)
B×1000×10 (5×3),

然后C = MULTIPROD (A, B)的收益率(2×3)×1000×10数组。实际上是扩展到一个(2×5)×1000×10的大小,然后由b multi-multiplied这样做是不使用循环,实际上没有复制矩阵(见附录A)。我们称这种特殊应用的AX为虚拟矩阵扩张。在系统运行MATLAB R2008a, MULTIPROD执行它相当于380倍以下循环(见附录B):

因为我= 1:1000
j = 1:10
C (:,:, i, j) = A * B (:,:, i, j);
结束
结束

AX推广了矩阵扩张多维数组的大小。例如,如果

(2×5)×10,和
B (5×3)×1×6,

然后C = MULTIPROD (A, B)乘以每个10矩阵的每个6矩阵B,获得60矩阵存储在一个数组(2×3)×10×6 C,它通过几乎扩大(2×5)×10×6,和B (5×3)×10×6。详细定义AX手册中提供了。

应用程序

MULTIPROD有着广泛的潜在应用领域。通过调用MULTIPROD,多个几何变换如旋转或roto-translations可以执行大型数组向量的一个步骤,没有循环。等多个操作规范的数组向量,或发现他们沿着坐标轴投影显示的另一个数组向量可以轻松地执行,没有循环和两到三行代码。

样本函数通过调用MULTIPROD执行这些任务都包含在单独的工具箱“多维数组向量的向量代数”(MATLAB中央,文件# 8782)。

优化和测试

因为我想要的服务尽可能多的人,MULTIPROD设计,调试,优化速度和内存效率极度小心。宝贵建议,金惠白(乔治敦大学)帮助我使它更快,更有效率和更多样化的。建议进一步改善将是受欢迎的。代码(“testMULTIPROD.m”)我曾经系统测试函数输出包含在这个包中。

ARRAYLAB工具箱

总之,MULTIPROD是一天的泛化数组的矩阵乘法函数MTIMES,启用了斧子。

广义向量内、外和交叉产品一天由DOT2数组和启用了斧头,外,Cs manbetx 845ROSS2 (MATLAB中央、文件# 8782//www.tianjin-qmedu.com/matlabcentral/fileexchange/8782)。

中的元素乘法(见次)和其他elementwise二进制操作(如加和EQ)启用了AX由BAXFUN (MATLAB中央、文件# 23084//www.tianjin-qmedu.com/matlabcentral/fileexchange/23084)。

在一起,这些功能构成了“ARRAYLAB工具箱”。我希望MathWorks在MATLAB的下一版本将包括它。

MULTITRANSP

这个包包括MULTITRANSP函数,执行多个矩阵互换。B = MULTITRANSP (DIM)转置矩阵的所有包含维度的暗淡,昏暗的+ 1。

引用作为

保罗·德·利瓦(2023)。多个矩阵乘法,启用了数组的扩张(//www.tianjin-qmedu.com/matlabcentral/fileexchange/8773-multiple-matrix-multiplications-with-array-expansion-enabled), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R14
兼容任何释放
平台的兼容性
窗户 macOS Linux
类别
找到更多的在制导、导航和控制(GNC)帮助中心MATLAB的答案

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!
版本 发表 发布说明
1.37.0.0

2.1版》(2009)——更新手册和描述。MULTIPROD运作“事情”矩阵乘法,块数组。这是一个泛化的矩阵乘法(*)和乘法中的元素(. *)

1.35.0.0

版本2.1(2009),启用了数组的扩张,和内存高效双仁香引擎。更新手册和添加截图。

1.33.0.0

版本2.1(2009)利用更快、更有效、更强大的双仁香引擎。它还引入了虚拟阵列扩展,它允许你,例如,用一个矩阵乘以一个矩阵数组。

1.30.0.0

警告。新版本可用一旦Mathworks技术问题得到解决。

1.0.0.0

更新在MULTIPROD帮助文本