replacing Matlab with python
我是一名工程专业的学生,我必须做大量的数值处理,绘图,模拟等工作。我目前使用的工具是Matlab。 我在大学计算机上使用它来完成大部分任务。 但是,我想知道有哪些可用的免费选项。
我已经做过一些研究,许多人说python在各种情况下都可以替代matlab。 我想知道如何用python做所有这些事情。 我使用的是Mac,如何安装不同的python软件包。 那些包是什么? 真的可行吗? 使用此python设置我可以做什么和不能做什么?
在Mac上,最简单的入门方法是(无特定顺序):
- 有思想的Python发行版,其中包含您可能需要的大多数科学软件包。免费用于学术/非商业用途。
-
Macports-最新版本,因此
sudo port install py26-numpy py26-scipy py26-matplotlib py26-ipython 应该会让您入门。 - Scipy Superpack-安装所有重要软件包的svn版本的脚本。
大约2年前,我已经做到了这一点(用Python代替了Matlab),并且没有回头。使用Python进行广播,更直观的内存模型和Numpy的其他优点使数值工作变得非常愉快。与f2py和cython一起使用,可以很容易地将内部循环放入另一种语言。这是一个很好的起点-PerformancePython和ParallelProgramming是其他令人振奋的页面。一定要了解Python的"变量是对对象的引用"的语义……在进行了这种调整之后,一切都会顺利进行。击败matlab的最酷的事情之一是我在8个内核上运行了2条线...
我从事Matlab编程已有15年之久,而使用Python已有10年之久。通常会这样分解:
如果可以满足以下条件:
1.您主要使用矩阵和矩阵运算
2.您有钱购买Matlab许可证
3.您在Mathworks支持的平台上工作
然后,一定要使用Matlab。否则,如果您具有矩阵以外的数据结构,则需要一个开放源代码选项,该选项可让您无需担心许可证即可交付解决方案,并且需要在mathworks不支持的平台上构建;然后,使用Python。
Matlab语言很笨拙,但用户界面很漂亮。 Python语言非常好-具有matlab缺少的迭代器,生成器和函数式编程工具;但是,如果您不喜欢(或不能使用)SAGE,则必须选择一个漂亮的光滑界面。
希望对您有所帮助。
用Python替换Matlab时需要考虑三个方面;核心语言功能,IDE和Price。
能力比较
本节概述了每个平台的所有功能。简而言之,Matlab可以做的一切,Python还能做的还很多。但是,诸如线性代数和快速原型制作Matlab之类的东西就更干净了。
Matlab的
Matlab中的所有内容均已捆绑在一起,并且工具箱已无缝集成。它也更加成熟-但不是为通用编程而设计的,这意味着与线性代数无关的任何东西都难以实现。
- 工具箱:Matlab工具箱非常好,并且python实现常常很难与它们竞争(即使对于诸如优化算法之类的不太专门的东西)。
- 线性代数:Matlab具有简洁的线性代数功能,易于阅读和解释。
- 可视化功能:具有非常好的和非常广泛的可视化功能。
Python
Python将需要大量其他模块才能使其成为良好的Matlab替代品。
- 通用编程:Python是一种合适的编程语言,与Matlab相比,它提供了更多的灵活性。
-
numpy:提供数组和线性代数例程,但是比Matlab语法更笨拙。我已经爱上了广播功能,但是再也没有
repmat 垃圾了。 - SciPy:统计,优化和其他有用的数学知识。
- MatPlotLib:我认为比Matlab提供更高质量的绘图。此外,其设计在语法上与Matlab相似,因此应该易于使用。
- SymPy:好的符号编程包。
IDE比较
我认为这是缺少python的地方。我只是发现算法开发(尤其是涉及很多线性代数)在Matlab IDE中不那么痛苦。
Matlab的
这是一些Matlab的关键功能,如果没有工程专业的学生,??这些功能将很难实现。请注意,Python IDE确实也具有其中一些功能,但实现起来却过于草率。
- 强大的调试功能:可以非限制性地轻松浏览功能。 Python还允许进行调试,但在IDE中通常没有完全实现。
- 变量资源管理器:MATLAB有一个很好的变量资源管理器,它总是非常适合查看许多受支持的数据类型。一些python IDE努力显示可能令人讨厌的numpy数组。
- 变量生存期:如果代码在运行时中断,则变量仍然存在,这有助于调试。此外,假设持久变量,连续运行不同的脚本会更容易。在Python中,您将必须手动将变量保存在脚本中,以使变量可用于其他脚本。
- 事件探查器:非常有助于您了解算法瓶颈所在。
- 命令行可以在命令行上执行单行指令。 Python在所有好的IDE中也完全支持此功能。
- GUI绘图工具:可以从用户界面快速轻松地绘制结果和变量。大多数Python IDE都面向软件开发,因此不支持此功能(尽管sypder通过matplotlib的支持有限)。
- 文档:所有功能在IDE中都有本机文档。
Python
有一些新的python IDE正在与MATLAB的一些关键优势竞争。我个人喜欢最近以免费社区版本发布的PyCharm。它具有以下功能,并且从UI角度进行了精心设计。
- 调试
- 变量浏览器
- 命令行
- 文献资料
价格对比
Python是免费的,并且有一个活跃的支持社区。 Matlab也有一个很好的支持社区,但是免费。
尝试Sage-它被设计为Matlab,Mathematica等的开源替代品。它是用Python实现的,可以用Python编写脚本,但是它还增加了许多特定于数学的功能。 Mac有一个安装程序,因此您无需下载很多单独的软件包。
还有GNU Octave-Mathematica / Matab的另一个开源替代品,它具有自己的编程语言。但是,我还没有找到有关Mac版本的任何信息(尽管看起来还不是很辛苦)。
也许您喜欢sagemath,它可以将许多现有的开源软件包的功能组合到一个通用的基于Python的界面中。这是一个特色导览。
python(x,y)非常强大,但仅适用于Windows或Linux,因此您必须使用Bootcamp或Linux。 Matplotlib是更轻量的数学软件包,它基本上在Python语言中增加了绘图功能(最好与IPython一起使用)。
如果sourcefourge上的从matlab到python的转换mat2py项目起飞,那就太好了。
重复的。
我的感觉是,对于纯数值/线性代数计算和可视化来说,Matlab是一个更为一致的开发环境。在我看来,Numpy / Scipy / Matplotlib有点偶然。如果您要构建一个完整的程序(以使系统自动化或在网页上显示结果),那么Python的优势就是首先要成为一种真正的编程语言。但是对于交互式数值处理,我认为Matlab仍然可以胜出。 Python中缺少元素明智的中缀运算符是一个小例子(PEP 225)。对于统计计算,数据探索和可视化,很难击败R。