matlab神器工具包:便于多维矩阵乘法来避免循环语句的mtimes

在代码仿真中,我们经常要实现如下的乘法:

A ( : , : , k ) = B ( : , : , k ) ∗ C ( : , : , k ) \mathbf{A}(:,:,k) = \mathbf{B}(:,:,k) * \mathbf{C}(:,:,k) A(:,:,k)=B(:,:,k)C(:,:,k)

即将两个三维矩阵的第三维一一对应的,将前两维做矩阵乘法。 常见的场景包括,OFDM系统下,经过波束成形的信号往往会涉及三维矩阵,三维分别是——MIMO信道是一个两位的矩阵,而子载波则是第三维。

普通的matlab代码的实现方法是:

for k = 1 : K
	A(:,:,k) = B(:,:,k) * C(:,:,k);
end

这样,for循环的存在使得运行速度会大幅降低。

通过网上的资料查找,我发现了一个工具包名为 : mtimes, 他可以直接通过以下语句实现上述的for循环的功能。

A = mtimes(B,C) 

速度则是matlab循环的三倍到四倍左右。

工具包使用步骤:

  1. 到github下下载这个库(download zip) 传送门
  2. 解压到任意目录下
  3. 找到src里的mtimesx_build.m文件
  4. 重要! 将166行的代码修改为
mexopts = [prefdir '\mex_C_win64.xml'];
  1. 运行 mtimesx_build.m
  2. 成功的结果展示
  3. matlab神器工具包:便于多维矩阵乘法来避免循环语句的mtimes_第1张图片

你可能感兴趣的:(matlab)