Vectorized Multi-Dimensional Matrix Multiplication

版本 1.2.0.0 (2.2 KB) 作者: Darin Koblick
Take Any N-D Matrix and Multiply it by another N-D Matrix Without a For-Loop
786.0 次下载
更新时间 2017/7/7

查看许可证

If you want to multiply multi-dimensional matrices together without having to write a for-loop to cycle through each additional dimension beyond two, this routine is for you. Not a single for-loop was used in the development of this routine. Consequently, you should see a significant runtime improvement when using the multi-dimensional matrix multiply operations contained in this code.
mntimes will support 2-D matrix multiplication much like the built-in mtimes.m routine (so you can overload it if desired), it will support 3-D matrix multiplication, 4-D multiplication, and so on (until you run out of system memory). Matrices don't have to be the same size (i.e. 3x3 * 3x3) they can be 1x3 * 3x1, 1x3 * 3x3, 3x3 * 3x1, the choices are unlimited as long as it is a valid 2-D operation. If you are sure to identify which dimension corresponds to a row, and which to a column there shouldn't be a N-D matrix case this code can't handle.
Example Function call:
z = mntimes(x,y,xrowdim,xcoldim,yrowdim,ycoldim);
Input List:
x - N-D input matrix
y - N-D input matrix
xrowdim - row dimension specifier for x
xcoldim - column dimension specifier for x
yrowdim - row dimension specifier for y
ycoldim - column dimension specifier for y
Output List:
z - N-D output matrix (resulting product of the z = x*y operation)

引用格式

Darin Koblick (2024). Vectorized Multi-Dimensional Matrix Multiplication (https://www.mathworks.com/matlabcentral/fileexchange/47092-vectorized-multi-dimensional-matrix-multiplication), MATLAB Central File Exchange. 检索来源 .

MATLAB 版本兼容性
创建方式 R2012a
兼容任何版本
平台兼容性
Windows macOS Linux
类别
Help CenterMATLAB Answers 中查找有关 Loops and Conditional Statements 的更多信息
致谢

启发作品: mmDerivative(t,y)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
版本 已发布 发行说明
1.2.0.0

*
Corrected bug which would not allow for transposing matricies when rowDim and colDim were swapped. This version was also regression tested.
Corrected routine to increase stability when dealing with higher dimensionality.

1.1.0.0

Updated last step on re-assembling the N-D matrix to ensure singleton dimension was preserved when set to one.

1.0.0.0