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

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

A(:,:,k)=B(:,:,k)C(:,:,k)\mathbf{A}(:,:,k) = \mathbf{B}(:,:,k) * \mathbf{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. 在这里插入图片描述
发布了47 篇原创文章 · 获赞 116 · 访问量 73万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览