别再无脑吹了,python和matleb有什么不同你知道吗?

最近有人要求我做一期python和matleb的详细比对,我就满足一下粉丝的小要求吧

matlab

MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。使用 MATLAB,可以较使用传统的编程语言(如 C、C++ 和 Fortran)更快地解决技术计算问题。

随着MATLAB工具箱的不断添加和完善,M语言也逐渐成为工程界的准通用标准语言,官网称:MATLAB - The Language Of Technical Computing。

大学理工科专业一般都开设了或选修或必修的MATLAB相关课程。很多新出版的教材,计算机辅助教学的工具软件开始选用MATLAB。

MATLAB以其简洁易学的语法、友好的界面和完善的文档系统逐渐深入人心并将继续扩大它的控制领地。

然而,MATLAB也有着很大的局限性。首先,是价格。作为一款商业软件,获得正版授权,价格不菲。就说最便宜的学生版,核心组件单个授权要花99刀,想使用额外工具箱,则是每个工具箱29刀。 正如你能想到的,商业版本更贵。

其次,是版权。mathworks论坛活跃着很多用户,也有很多有价值的代码,但是,版权归mathworks公司,要想使用必须获得它的授权。

再次,是语言完善性。MATLAB进行数学计算的表现无可置疑,但是实际的科学计算还有文件操作、界面设计等。MATLAB在这些领域功能较弱或者很麻烦。应该可以说,MATLAB不是一种完善的语言。

还有:学术界大量使用matlab做仿真,做研究的话容易找到代码参考;

语法相对python更灵活一些,matlab写程序基本不用套路,所谓老夫撸matlab就一个字,干;

有simulink。有人说simulink没什么用,其实还是挺有用的,比如通信建模,另外simulink可以生产DSP或者FPGA代码,有的时候很有用。

Python

首先,Python完全免费,绝大多数科学计算相关扩展库也都是免费的,大多也都是是开源的,所以金钱问题完全不用考虑。版权问题也基本不用考虑,众多的实例程序可以让你拿去就用。

(有时候也需要考虑,因为有些授权,如GPL授权,具有“传染性”)。考虑控制版权更严格的诸如美国之类的国家,有着众多的研究人员和大学生使用Python,并有很多网络提供了交流平台,在这个平台可以获得更多的交流学习机会。

其次,Python是一门更易学更严谨的面向对象的程序设计语言。作为通用程序设计语言的Python,有更为严格清晰的语法,可以轻易完成界面、文件、封装等高阶需求。最后,不得不提的就是性能。MATLAB作为科学计算工具,经过了近乎苛刻的优化,Python呢?

实话说,纯Python的速度确实不怎么地,但是使用Python的科学计算扩展库numpy、scipy等之后,速度和MATLAB不相上下。

再次大的优势:开源。你可以大量更改科学计算的算法细节。

可移植性,Matlab必然不如Python。但你主要做Research,这方面需求应当不高。

第三方生态,Matlab不如Python。比如3D的绘图工具包,比如GUI,比如更方便的并行,使用GPU,Functional等等。长期来看,Python的科学计算生态会比Matlab好。

语言更加优美。另外如果有一定的OOP需求,构建较大一点的科学计算系统,直接用Python比用Matlab混合的方案肯定要简洁不少。

python作为一种通用编程语言,可以做做Web,搞个爬虫,编个脚本,写个小工具用途很广泛。

两者的区别:

Python相比于Matlab的最大优势是:Python是一门通用编程语言,实现科学计算功能的numpy、scipy、matplotlib只是Python的库和Package而已,除此之外Python还有用于各种用途的库和包,比如用于GUI的PyQt和wxPython,用于Web的Django和Flask

Matlab相比于Python最大的优势是:它专门就是给数值计算开发的,在数值计算这个领域库最多、用的人最多、出的书最多

如何选择python和matlab

如果你做策略研究,做数据分析,两者功能上差不多,但是应该选择matlab,因为:

1 Python的文档没有Matlab的详细。

2 Matlab将所有的功能整合了在一起,而Python需要自己一个一个安装所需要的包,不同的包的代码风格还不太一样。

如果你还要做网络爬虫,数据清洗等偏IT的工作,那么Python更优。

简单的说,Python是通用语言,什么都能做,而matlab擅长计算。

怎么样?小伙伴们你们了解了多少呢?欢迎下方留言讨论!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190125A08FZQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券