我需要在 Matlab 中进行非常大的矩阵/向量乘法:“A”是一个 655360 x 5 的实数值矩阵,不一定是稀疏的,“B”是一个 655360 x 1 的实数值向量。我的问题是如何有效地计算:B'*A。
我注意到通过计算 A'*B 可以稍微缩短时间,它给出了一个列向量。但是仍然很慢(我需要在程序中多次执行此操作)。
稍微搜索一下,我发现了一个有趣的 Matlab 工具箱 MTIMESX由 James Tursa 编写,我希望它能提高上述矩阵乘法的性能。经过几次试验,我对 Matlab 原生矩阵乘法的 yield 微乎其微。
关于我应该如何重写 A'*B 以使操作更有效率的任何建议?谢谢。
最佳答案
Matlab 存在的理由是进行矩阵计算。如果您可以使用手工制作的工具显着超越其内置矩阵乘法,我会感到非常惊讶。首先,您应该确保您的乘法实际上可以更快地执行。您可以通过使用 Eigen 在 C++ 中实现类似的乘法来实现这一点。
关于performance - Matlab中的快速矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7645201/