最近几天,《哈工大、哈工程受美商务部「实体名单」影响,被禁止使用 MATLAB 商业软件》事件沸沸扬扬,引发了高校圈广泛讨论。
众所周知,Matlab作为一款科学计算仿真软件,是众多工科学子必不可少的工具。如今面临无法使用正版软件的威胁,且“利用Matlab获得的数据、图表等无法用于论文发表”。
形势所迫,没有Matlab的日子还是很难过的。但也不是完全寸步难行,仍然能找到很多替代工具。
Octave
官网:https://www.gnu.org/software/octave/
Octave是一种编程语言,旨在解决线性和非线性的数值计算问题,是GNU项目下的开源软件,早期版本为命令行交互方式,4.0.0版本发布基于QT编写的GUI交互界面。Octave与MATLAB语法兼容,可以将其看做一个开源的、可扩展的matlab,因此很容易将matlab程序移植到Octave。
Octave各个版本的安装包均可以在GNU Octave官方网站下载。
优势与不足:
Octave开源免费,不用担心被美利坚禁用;
占用内存较小,更加轻量化,但功能对大部分应用程序而言绰绰有余;
无法替代Simulink功能。
Scilab
官方网站:https://www.scilab.org/
Scilab是由法国国家信息、自动化研究院的科学家们开发的“开放源码”软件。Scilab作为一种科学工程计算软件,其数据类型丰富,可以很方便地实现各种矩阵运算与图形显示,能应用于科学计算、数学建模、信号处理、决策优化、线性、非线性控制等各个方面。
就基本的功能如科学计算、矩阵处理及图形显示而言,Matlab能完成的工作Scilab都可以实现。
支持多种平台应用,安装包可在官网下载:
优势与不足:
开源免费,不用担心被禁用;
可在一定限度上代替Simulink功能;
对于计算量较大的情况稳定性较差,在网站(http://bugzilla.scilab.org/)追踪定位;
绘图功能不足。
Julia
官方网站:https://julialang.org/
Julia是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。
据说诞生在这样的背景下:“一群拥有各种语言丰富编程经验的Matlab高级用户,对现有的科学计算编程工具感到不满——这些软件对自己专长的领域表现得非常棒,但在其它领域却非常糟糕。他们想要的是一个开源的软件,它要像C语言一般快速而有拥有如同Ruby的动态性;要具有Lisp般真正的同像性(Homoiconicity)而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;还有,它应该是交互式的,同时又是编译型的……”
因此,Julia既有C/C++的性能, 又有MATLAB或Python的代码简洁度。测试报告表示其计算效率远高于matlab (测试报告地址:https://julialang.org/benchmarks/)。
优势与不足:
开源免费;
学习简单,计算效率高;
无法提供Simulink功能;
Python
Python近几年发展速度惊人,其在web、机器学习、数据处理这方面优势明显。通常包括Numpy, Scipy, Matplotlib等模块。
优势与不足:
开源免费,有丰富的社区;
模块众多,扩展性好;
胶水语言,与其他语言有API调用;
无法替代simulink功能。
综上所述,在继续使用盗版软件的选择之外,仍然有众多的开源工具可以使用,但simulink以及部分很专业的工具箱无法被替代。