我有一个项目要求我在while循环中多次设置两个大矩阵。使用更大的矩阵,代码可以运行得非常慢。
我只是好奇如果使用mex和.cpp文件可以真正提高程序的速度。内置的MATLAB矩阵乘法不是很好吗?
答案 0 :(得分:3)
如果没有关于您的问题的更具体信息,任何人都可以说的具体事情很少。在某些情况下,MEX功能肯定可以提高性能,有些情况下它们不能。矩阵乘法是Matlab的优势之一,只需将矩阵乘法移动到MEX函数中就不太可能使代码运行得更快。
也就是说,有一些提高绩效的一般策略:
答案 1 :(得分:0)
首先,我假设这些矩阵彼此相关,随着时间的推移或类似的情况发展。如果从一个实例到下一个实例的每个矩阵完全不相关,这将无济于事。 然而,如果它们是相关的,那么我发现矩阵的变化可能很小甚至是稀疏的。鉴于你的基本方程 C(i)= A(i)* B(i) 如果您创建delta矩阵 Da = A(i + 1) - A(i) Db = B(i + 1) - B(i) 然后当然 C(i + 1)= C(i)+ Da * B(i)+ A(i)* Db + Da * Db 其中C(i)是已知的。如果Da和Db很小或稀疏,则这3个矩阵乘法可以快得多。它们甚至可能是正交的,并且最后一个项被删除,或者其结果被忽略为数量级的二阶。 只是一个想法。 Matlab矩阵问题有很多工具,不要放弃Matlab了!