用python替换Matlab

时间:2009-11-21 18:24:26

标签: python matlab

我是一名工科学生,我必须做很多数值处理,绘图,模拟等工具。我目前使用的工具是Matlab。我在大学的计算机上使用它来完成大部分作业。但是,我想知道有哪些免费选项。

我做了一些研究,很多人都说python是各种场景下matlab的有效替代品。我想知道如何用python做这一切。我正在使用mac,所以我如何安装不同的python包。那些包裹是什么?它真的是一个可行的选择吗?使用这个python设置我可以做什么和不能做什么?

8 个答案:

答案 0 :(得分:20)

在Mac上,最简单的入门方式是(没有特别的顺序):

  • Enthought Python Distribution包含您可能需要的大多数科学包。免费用于学术/非商业用途。
  • Macports - 与最新版本保持同步,因此sudo port install py26-numpy py26-scipy py26-matplotlib py26-ipython可以帮助您入门。
  • Scipy Superpack - 用于安装所有重要软件包的最新svn版本的脚本。

大约2年前我完成了这个(用Python代替Matlab)并且没有回头。 Python中的广播,更直观的记忆模型和其他Numpy优势使数字作品成为一种完全的乐趣。再加上f2py,cython将内循环放在另一种语言中非常容易。 This是一个很好的起点 - 提供动机的其他令人印象深刻的网页是PerformancePythonParallelProgramming。一定要了解Pythons“变量是一个对象的引用”语义......在那个调整之后,一切都是一帆风顺的。打败matlab的最酷的事情之一是我在8个核心上运行的2行... p = Pool(8); res = p.map(analysis_function,list_of_data) - MATLAB与工具箱相比非常昂贵,我还没有看到一个实际拥有它们的大学。

答案 1 :(得分:13)

我已经使用Matlab编程了大约15年,使用Python编写了大约10年。它通常会以这种方式分解:

如果您满足以下条件:     1.您主要使用矩阵和矩阵运算     你有资金获得Matlab许可证     3.您在mathworks支持的平台上工作

然后,一定要使用Matlab。否则,如果您的数据结构不是矩阵,那么需要一个开源选项,允许您在不担心许可证的情况下提供解决方案,并且需要在mathworks不支持的平台上构建;那么,请使用Python。

matlab语言很笨拙,但用户界面很光滑。 Python语言非常好 - 使用matlab缺少的迭代器,生成器和函数编程工具;但是,如果你不喜欢(或不能使用)SAGE,你将不得不挑选并选择一个漂亮的光滑界面。

我希望有所帮助。

答案 2 :(得分:6)

用Python替换Matlab时需要考虑三个方面;核心语言功能,IDE和Price。

能力比较

本节概述了每个平台的所有功能。简而言之,Matlab可以做的一切,Python也可以做更多。然而,像线性代数和快速原型制作Matlab这样的东西更干净。

Matlab的

Matlab中的所有内容都已捆绑在一起,工具箱可以无缝集成。它也更成熟 - 但不是为通用编程而设计的,这意味着任何非线性代数相关的东西都难以实现。

  • 工具箱: Matlab工具箱非常好,python实现经常难以与它们竞争(即使对于不那么专业的事情,如优化算法)。
  • 线性代数: Matlab具有简洁的线性代数功能,更易于阅读和解释。
  • 可视化功能:具有非常好的和非常广泛的可视化功能。

的Python

Python需要一些额外的模块才能成为一个很好的Matlabreplacement。

  • 通用编程:Python是一种适当的编程语言,它提供了比Matlab更多的灵活性。
  • Numpy:提供数组和线性代数例程,但语法比Matlab更笨拙。我已经爱上了broadcasting功能,但不再是repmat垃圾。
  • SciPy:统计信息,优化和其他有用的数学内容。
  • MatPlotLib:在我看来,提供比Matlab更高质量的图。此外,它的设计在语法上类似于Matlab,因此应该很容易上手。
  • SymPy:良好的符号编程包。

IDE比较

这是我认为python缺乏的地方。我简单地发现算法开发(特别是涉及大量线性代数)在Matlab IDE中不那么痛苦。

Matlab的

以下是一些关键的Matlab功能,如果没有工程专业学生,这些功能很难实现。请注意,Python IDE也具有其中一些功能,但实施起来却更为严格。

  • 强大的调试功能:可以非常不受限制地轻松探索功能。 Python也允许调试,但在IDE中通常没有那么干净。
  • 变量资源管理器:MATLAB有一个很好的变量资源管理器,它总能很好地查看许多支持的数据类型。一些python IDE很难显示可能令人讨厌的numpy数组。
  • 变量生存:如果代码在运行时中断,变量仍然存在,这有助于调试。此外,假设持久变量,连续运行不同的脚本更容易。在Python中,您必须手动将变量保存在脚本中,以使其可用于其他脚本。
  • Profiler:非常适合细分算法瓶颈的地方。
  • 命令行可以在命令行上执行单行指令。在所有优秀的IDE中,Python也完全支持这一点。
  • GUI绘图工具:可以从用户界面快速轻松地绘制结果和变量。大多数Python IDE都面向软件开发,因此不支持这一点(尽管sypder通过matplotlib提供的支持有限)。
  • 文档:所有函数都在IDE中包含本机文档。

的Python

有一些新的python IDE开始与MATLAB的一些关键优势竞争。我个人喜欢PyCharm,它最近作为免费社区版本发布。它具有以下功能,并且从UI角度进行了精心设计。

  • Bebugging
  • Variable Explorer
  • 命令行
  • 文档

价格比较

Python是免费的,并且拥有一个活跃的支持社区。 Matlab也有一个很好的支持社区,但它不是免费的。

答案 3 :(得分:4)

也许你喜欢sagemath,它将许多现有开源软件包的强大功能集成到一个基于Python的通用界面中。这是feature tour

答案 4 :(得分:4)

尝试Sage - 它被设计为Matlab,Mathematica等的开源替代品。它是用Python实现的,可以用Python编写脚本,但它还增加了许多特定于数学的功能。有一个installer for the Mac,因此您无需下载大量单独的软件包。

还有GNU Octave - Mathematica / Matab的另一个开源替代品,它有自己的编程语言。但是我没有在Mac版本上找到任何信息(虽然我看起来不是很努力)。

答案 5 :(得分:1)

python(x,y)功能非常强大,但仅适用于Windows或Linux,因此您必须使用bootcamp或Linux。一个更轻量级的数学包是Matplotlib,它基本上为Python语言添加了绘图功能(最好与IPython一起使用)。

答案 6 :(得分:0)

重复this

我的感觉是,对于纯数值/线性代数计算和可视化,Matlab是一个稍微更一致的开发环境。对我来说,Numpy / Scipy / Matplotlib有点杂乱无章。如果您正在构建一个完整的程序 - 自动化系统或在网页上显示结果 - Python首先是一种真正的编程语言。但对于交互式数字处理,我认为Matlab仍然获胜。 Python中缺少元素智能中缀运算符只是一个小例子(PEP 225)。对于统计计算,数据探索和可视化,很难超越R

答案 7 :(得分:0)

如果sourceforge上的matlab to python转换mat2py项目起飞将会很棒。