许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB真的无可替代吗?

MATLAB真的无可替代吗?

阅读数 45
点赞 0
article_banner

by HPCer @ Beijing,2020-6-16

最近这段时间,我的微信朋友圈出现频率最多的就是Matlab被禁相关的新闻,好像Matlab被禁天就要塌下来似的。我对Matlab不可代替这件事真的不敢苟同。大约5~10年前我是Matlab的重度用户,但现在除非是给别人调程序,基本不会再去打开Matlab做任何事情。所以我想,花一点时间,写一点文字,告诉大家Matlab真的不是像传统工业软件那样不可替代,这个事情或许是值得去做的。

为什么我说Matlab被禁不重要

Matlab最初是美国新墨西哥大学Cleve Moler 教授编写的用于线性代数和数值分析教学的工具,其目的是让学生学习使用LINPACK EISPACK 库,而不去写繁琐的Fortran 程序。他用Fortran编写和封装了相关程序,构建了类似今天脚本语言常见的解释性执行环境,其中最核心的内容是矩阵计算。早期Matlab提供的功能并不多,但基本上也能找到今天常用函数的影子,比如所有人都会用到的PLOT函数(如下图所示):

早期的Matlab界面 引自:https://ww2.mathworks.cn/company/newsletters/articles/a-brief-history-of-matlab.html

后来随着Matlab的逐渐商业化,特别是Cleve在斯坦福大学的学生Jack Little加入Matlab产品化开发后(用C语言重写了Matlab,并加入了函数、工具箱和图形化等现代Matlab的基本功能),相继发布了PC-MATLAB (用于PC机)和Pro-MATLAB (用于Unix工作站)产品,MATLAB逐渐在大量使用矩阵计算的工程学科中推广开来。今天的MATLAB虽然增加了很多功能,无论是在语言层面的面向对象编程支持,还是图形化界面的丰富,亦或toolbox的大量增加,都没改变其核心仍然是矩阵计算,所以大家可以看到Matlab里矩阵是最基本的数据类型。
到了今天,不是说矩阵计算不重要了,而恰恰相反,无论是传统CAE仿真,还是如今火热的人工智能,都是建立在矩阵计算基础上,甚至可以说没有矩阵计算,也就没有了今天的数字化工业。但反过来说,在矩阵计算如此重要的时代,Matlab能够发挥的作用有多少?
我想至少有以下几个方面,是今天的Matlab做不到的:

  • 大规模并行矩阵计算:大规模并行计算一直是Matlab的短板,您可以说Matlab有parfor、有workers、还支持cuda,但Matlab解释性执行这个基本前提直接阻止了Matlab在高性能计算领域的发挥前景。当然您还可以说我用mex调用C、Fortran程序呀,甚至我还可以用生成器将Matlab语言转成C呀,但这个就不是我们现在讨论的Matlab普适应用价值所在了。
  • 工业级软件产品开发:今天的工业级软件产品里,我们基本看不到Matlab的影子,而类似于Matlab解释性脚本语言的开源语言Python反到后来居上,借着人工智能的火热,占据了工业级矩阵计算软件的半壁江山。
  • ARM与边缘计算设备:Matlab无法在ARM处理器上运行,这对大量使用ARM的移动端、边缘端设备、工控和基于国产处理器的设备来说是一个巨大的市场空白;此外由于Matlab庞大的体积,也基本难以用于边缘设备的部署。
    从这个角度来讲,如果说我们今天要开发一款基于矩阵计算的工业级的高性能程序,Matlab是无能为力的,而这种场景在今天越来越多;此外,随着5G和工业互联网的普及,在边缘端进行的矩阵计算也越来越多,而这种场景更是Matlab无能为力的。
    那Matlab今天的主要应用场景在哪?我能够想象到的主要还是集中在教学和科研中,但我想这或许只是一种习惯,而不是真正的技术门槛导致了不可迁移。我们今天就来盘点一下Matlab的两个主要替代品 - Octave和Python。作为一个系列文章的开端,本文不会深入技术细节,未来我会挑选一些典型应用场景,做一些比较详细的分析和解读。

Matlab的直接替代品 - Octave

应该说Octave是Matlab的最直接替代品。

  • 首先Octave的界面和Matlab真的很像,因为最初它就是模仿Matlab开始的:
Matlab的直接替代者 - Octave集成应用环境
  • 其次,在语法和绘图功能方面,Octave和Matlab极其相似,Octave可以直接直接运行大部分的Matlab源程序,即m文件;Matlab程序除非涉及到比较特殊的工具箱,基本简单的改写即可在Octave中运行。
  • 大量的开源代码是同时支持Matlab和Octave的,比如在国外有限元教学中经常用到的ifiss工具箱,就同时维护了Matlab和Octave版本。
  • 最近火热的人工智能领域里,Andrew NG 吴恩达在其最受欢迎的深度学习课程中推荐用Octave替代Matlab。
  • Octave可以保存数据为Matlab二进制格式,也就是说实在您有部分功能用Octave搞不定了,或者不想自己造轮子了,还可以用偷偷Matlab算一下,当然这一招一般情况下不推荐使用(:
    为什么我不提Scilab,按理说Scilab比Octave出道时间早,又是INRIA(法国国家信息与自动化研究院)这么强大的背书,应该是牛x的,但我用过几次Scilab后直接选择了放弃。我不记得以前是在哪篇文章里看过,说信仰自由的法国人喜欢搞开源软件,但搞了一堆却没几个好好维护下去的,Scilab恐怕就毁在这儿。(关于开源软件的开发模式,大家没事可看看Eric Raymond著名的《大教堂与市集》)当然这也许只是我的个人偏好问题,Scilab的粉丝请不要对我开火(:

Matlab的间接替代品 - Python Spyder

首先要解释一下,我为啥说Spyder而不提现在用的更多的Jupyter Notebook ?我想用过Mathematica 的同学都知道,Jupyter更像是Mathematica,很多Matlab的用户直接上手Jupyter并不习惯,而Spyder真的很像Matlab:

Matlab的间接替代者 - Python Spyder集成开发环境

关于Python的话题,我想用一天也都说不完,反正Python很火就是了,应用领域也比Matlab要大得多。Python可以从理论研究出发,一路做到工业产品,也就是说您在迁移Matlab程序的过程中,万一哪天厌倦了想转行,还可以靠Python去产业界找个工作^-^ 可以说如果你一上手就是用的Python,可能根本不会去想Matlab的事情;但对于Matlab重度用户来讲,转移到Python还是有一定的难度,主要的问题还是使用习惯造成。所以这里我要介绍一个大神器,叫做oct2py,用它可以直接在Python环境里调用Octave内核来运行Matlab/Octave代码,用这种方式可能会比直接用Python重写Matlab代码要自然得多。所以,我想或许Python+Octave能够完美解决Matlab的替代问题,而Python本身又比Matlab强大很多,一旦渡过了适应期大家会发现lab真的是可有可无了~


结语

十年前我还在读研究生的时候,曾经给国家气象局的学弟学妹们上过一门Matlab的课 ,那个时候我们是想用Matlab代替一门当时在空间科学领域广为应用的商业语言,叫做IDL (Interactive Data Language,交互式数据语言)。我不知道今天在空间科学里IDL的使用率还有多少,至少这门语言没有发展推广到其他更加广阔的应用领域,甚至在空间科学本身,我也看到越来越多使用Matlab的用户。我想说既然Matlab可以替代IDL,那么在贸易战美国对我们封锁的背景下,Matlab也绝对不像网上很多人说的那样不可替代!如果您不知道怎样替代,请持续关注我的简书吧^-^
其实我更想说的是,很多时候一个软件在国内用的多,用的广,并不是说他真的就是技术上不可替代,甚至不是因为他真的做得就是比其他软件好,至少在数学软件这块,Matlab是不如Mathematica优雅的(Matlab也有类似于Mathematica的符号运算功能,但他借用的是Maple的语法,并且是以MuPAD单独组件的形式出现,我敢说大部分Matlab用户甚至从来都没有打开过这个界面),但国内用Matlab的人却要比Mathematica多太多了。
我是一个国产HPC/CAE软件研发从业者,今天在仿真计算软件领域看到的情况与Matlab生态是类似的,很多人都说老外的软件做的就是比国产的好,但我想很多时候只是使用习惯和你身边的人决定了你接受哪种软件,对于一个完全没有任何经验和没任何人指导的工业软件初学者来讲,是国内自主的FELAC好用还是ANSYS好用,真不一定好说(:
待续……


参考文献
[1] MATLAB发展简史. ww2.mathworks.cn/compan


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...

相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空