MATLAB比Python快吗?

2024-06-26 13:47:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Biot–Savart law计算一些导体的磁场,我想用一个1000x1000x1000矩阵。在我使用MATLAB之前,但是现在我想使用Python。Python比MATLAB慢吗?如何使Python更快?

编辑: 也许最好的方法是用C/C++计算大数组,然后将它们转换为Python。我想用VPython可视化。

<2> Edt2:我的情况下,C或C++是什么更好?


Tags: 方法编辑可视化情况矩阵数组matlablaw
3条回答

你可以在这个链接的底部找到一些有用的结果

http://wiki.scipy.org/PerformancePython

从介绍开始

A comparison of weave with NumPy, Pyrex, Psyco, Fortran (77 and 90) and C++ for solving Laplace's equation.

它还比较了MATLAB,并显示了与使用Python和NumPy时类似的速度。

当然,这只是一个特定的例子,您的应用程序可能允许更好或更差的性能。在两者上运行相同的测试并进行比较没有坏处。

您还可以使用优化的库来编译NumPy,比如提供一些BLAS/LAPACK例程的ATLAS。它们的速度应该与MATLAB相当。

我不确定是否已经针对它构建了NumPy下载,但我认为如果编译NumPy,ATLAS会根据您的系统调整库

http://www.scipy.org/Installing_SciPy/Windows

该链接提供了Windows平台下所需内容的更多详细信息。

编辑:

<>如果你想知道什么是更好的,C或C++,那么你可能需要问一个新问题。虽然从上面的链接来看C++具有最好的性能。其他解决方案也非常接近,即pyRX、Python/Fortran(使用F2PY)和内联C++。

< > C++中我所做的唯一的矩阵代数是使用MTL和实现扩展卡尔曼滤波器。不过,我想,从本质上说,这取决于您正在使用的LAPACK/BLAS库以及它的优化程度。

此链接包含许多语言的面向对象数字包列表。

http://www.oonumerics.org/oon/

NumPy和MATLAB都为标准线性代数运算使用底层的BLAS实现。一段时间以来,两者都使用了ATLAS,但现在,很明显,MATLAB还附带了其他实现,比如Intel的Math Kernel Library(MKL)。哪个更快取决于系统和BLAS实现的编译方式。您还可以使用MKL编译NumPy,Enthought正在研究对其Python发行版的MKL支持(请参见它们的roadmap)。这也是最近关于这个的interesting blog post

另一方面,如果您需要更专业的操作或数据结构,那么Python和MATLAB都为您提供了各种优化方法(比如CythonPyCUDA,…)。

编辑:我更正了这个答案,以考虑到不同的BLAS实现。我希望它现在能公正地反映当前的形势。

唯一有效的测试是基准测试。这实际上取决于你的平台是什么,以及Biot-Savart定律与Matlab或NumPy/SciPy内置操作的映射程度。

至于让Python更快,Google正在研究Unladen Swallow,一个针对Python的JIT编译器。可能还有其他类似的项目。

相关问题 更多 >