mtimesx是一个快速的通用矩阵和标量乘法机,具有以下功能:
- 万博1manbetx直接支持多维(ND,N> 2)阵列
- 万博1manbetx支持转置,共轭转置和共轭预操作
- 万博1manbetx支持单例扩展
- 使用BLAS调用,自定义C循环代码或OpenMP多线程C循环代码
- 可以匹配MATLAB结果完全或大约需要
- 在大多数情况下,可以在速度达到或击败matlab
mtimesx有六种基本操作模式:
- blas:始终使用blas库调用
- 循环:如果可用,始终使用C循环
- 循环分om:始终使用OpenMP多线程C循环(如果有)
- MATLAB:最快的BLA或循环方法与MATLAB完全匹配(默认)
- 速度:即使它与matlab完全不匹配,最快的blas或循环方法
- Speedomp:最快的Blas,LOOPS或Loopomp方法即使它与MATLAB不匹配
MTimesx输入可以:
单身的
双倍的
双稀疏
常规语法是(括号[]中的参数是可选的):
mtimesx([指示])
mtimesx(A [,Transa],B [,Transb] [,指令])
其中Transa,Transb和Directive是可选输入:
Transa =表示A上的预操作的字符:
transb =表示B上的预操作的字符:
预操作可以是任何一个:
'n'或'n'=没有预先操作(如果缺少rans_缺少默认值)
't'或't'=转置
'c'或'c'=缀合物转置
'g'或'g'=共轭(没有转置)
指令=上面列出的模式之一,或其他指令
例子:
c = mtimesx(a,b)%执行计算c = a * b
c = mtimesx(a,'t',b)%执行计算c = a。'* B.
c = mtimesx(a,b,'g')%执行计算c = a *结合(b)
c = mtimesx(a,'c',b,'c')%执行计算c = a'* b'
mtimesx('speedomp','Omp_set_num_Threads(4)')%将Speedomp模式设置为线程数= 4
对于ND情况,前两个维度指定矩阵常见的矩阵。剩余尺寸是复制的,并指定为结果执行单个矩阵的数量。即,MTimesx将这些情况视为2D矩阵阵列,并在关联的映射上执行操作。例如:
如果A(2,3,4,5)和B是(3,6,4,5),那么
mtimesx(a,b)将导致c(2,6,4,5),其中c(:,:,i,j)= a(:,:,i,j)* b(:,:,我,j),i = 1:4,j = 1:5
这相当于Matlab M代码:
c =零(2,6,4,5);
对于m = 1:4
对于n = 1:5
C(:,:,m,n)= a(:,m,n)* b(:,:,m,n);
结尾
结尾
前两个维度必须使用标准矩阵乘法规则符合Transa和Transb Pre-Operation考虑的标准矩阵乘法规则,并且尺寸3:结束必须恰好或单例(等于1)。如果尺寸是单例,则它实际上扩展到所需的大小(即,等于Repmat操作,以将其达到符合实际数据副本但没有实际数据拷贝)。这相当于矩阵乘法的BSXFun能力。
詹姆斯图马(2021年)。mtimesx - 快速矩阵乘以多维支持万博1manbetx(//www.tianjin-qmedu.com/matlabcentral/fileexchange/25977-mtimesx-fast-matrix-multiply-with-multi-dimension-su万博1manbetxpport),matlab中央文件exchange。检索到。