我是一名工科学生,我必须做很多数值处理,绘图,模拟等工具。我目前使用的工具是Matlab。我在大学的计算机上使用它来完成大部分作业。但是,我想知道有哪些免费选项。
我做了一些研究,很多人都说python是各种场景下matlab的有效替代品。我想知道如何用python做这一切。我正在使用mac,所以我如何安装不同的python包。那些包裹是什么?它真的是一个可行的选择吗?使用这个python设置我可以做什么和不能做什么?
答案 0 :(得分:20)
在Mac上,最简单的入门方式是(没有特别的顺序):
sudo port install py26-numpy py26-scipy py26-matplotlib py26-ipython
可以帮助您入门。大约2年前我完成了这个(用Python代替Matlab)并且没有回头。 Python中的广播,更直观的记忆模型和其他Numpy优势使数字作品成为一种完全的乐趣。再加上f2py,cython将内循环放在另一种语言中非常容易。 This是一个很好的起点 - 提供动机的其他令人印象深刻的网页是PerformancePython和ParallelProgramming。一定要了解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中的所有内容都已捆绑在一起,工具箱可以无缝集成。它也更成熟 - 但不是为通用编程而设计的,这意味着任何非线性代数相关的东西都难以实现。
Python需要一些额外的模块才能成为一个很好的Matlabreplacement。
repmat
垃圾。这是我认为python缺乏的地方。我简单地发现算法开发(特别是涉及大量线性代数)在Matlab IDE中不那么痛苦。
以下是一些关键的Matlab功能,如果没有工程专业学生,这些功能很难实现。请注意,Python IDE也具有其中一些功能,但实施起来却更为严格。
有一些新的python IDE开始与MATLAB的一些关键优势竞争。我个人喜欢PyCharm,它最近作为免费社区版本发布。它具有以下功能,并且从UI角度进行了精心设计。
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项目起飞将会很棒。