用python替换Matlab

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条线... p = Pool(8); res = p.map(analysis_function,list_of_data)-MATLAB并行工具箱非常昂贵,我还没有看到实际上有它们的大学。


我从事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。