【发布时间】:2013-02-25 09:28:40
【问题描述】:
我有一个项目,需要我在 while 循环内多次设置两个大矩阵的乘法。对于较大的矩阵,代码运行速度会非常慢。
我只是好奇,此时使用 mex 和 .cpp 文件是否真的可以提高我的程序速度。 MATLAB内置的矩阵乘法不是已经很不错了吗?
【问题讨论】:
-
您是通过循环将矩阵的单个元素相乘,还是通过循环将整个矩阵多次相乘?如果是前者,您应该尝试向量化您的 MATLAB 代码。如果是后者,您不太可能看到将代码转换为 C++ 的任何速度。如果您非常了解 BLAS 和 LAPACK 库,您可能会有机会,但即便如此,它也可能不足以值得付出努力。
-
很大程度上取决于 MatLab 版本和配置。学生版的 MatLab 似乎没有使用多线程矩阵乘法。
-
@Praetorian 我通过循环多次谈论整个矩阵乘法。对于大规模问题,我可能只需要完全退出 MATLAB。真是太糟糕了,MATLAB 有很多不错的功能。
-
很难相信您可以帮助加快 matlab 的矩阵乘法,请查看以下问题了解更多信息:fast matrix multiplication in Matlab 和 Why is MATLAB so fast in matrix multiplication?
-
简短回答 - 不。 Matlab 的矩阵乘法程序会非常非常快。你能发布你想做的事吗?通常有一些方法可以进行矩阵乘法。