看到 MatLab 不再授权给我工,确实感到痛心。MatLab 是由美国 The MathWorks 公司出品的商业数学软件,目前世界上 180 多个国家的超过三百万工程师和科学家在使用 MATLAB 和 Simulink。但是转念一想,我们为什么一定要使用来自美国的专有软件?

如果你只是担忧 MatLab+Simulink 的使用,那你看到这里就可以结束了。欢迎大家去使用由法国国立计算机及自动化研究院和法国国立桥梁学院开发的自由软件 Scilab。目前全世界使用 Scilab 的人数估计有 1000,000 人,几乎可以取代 MatLab 和 Simulink。网络上关于 Scilab 的中文资料会比 MatLab 少,但是由于它和 MatLab 很像,多数情况下都可以无缝衔接。

但在这个时间点,我想为大家介绍自由软件。许多人可能只是听说过自由软件,在一些地方看到过 “开放源代码许可” 等字样,但并不知道自由软件究竟是什么,也并没有意识到自由软件早已为我们每个人所用。

举个例子,我们身边最常见的自由软件就是 Android 操作系统。大家都知道 Android 的开发者是谷歌,但是我们现在仍旧能够使用 Android 操作系统的原因就是 Android 是自由软件。大家也知道,去年谷歌对华为进行了断供,在 Mate30 手机中无法安装谷歌相关服务。但是 Mate30 仍旧能够使用 Android 操作系统,就是因为谷歌只能断供谷歌服务(如谷歌地图、Gmail、YouTube 等服务性质的专有软件),而不能断供 Android 操作系统(自由软件)。

我们身边另一个常见的自由软件就是 Linux。许多人可能并不知道 Linux,Linux 是由 Linus Torvalds 开发的操作系统,在服务器、主机和超级计算机中占有很大的比例。2010 年 11 月公布的超级计算机前 500 强中有 459 个(91.8%)运行 Linux 发行版。据 Netcraft 报告,在 2010 年二月,每 10 台可靠的服务器中 Linux 发行版占 6 台,FreeBSD 占 2 台,Windows 占 1 台。

说了这么多,大家已经意识到自由软件的重要性了,但自由软件到底是什么呢?自由软件意味着任何人或组织可以在任何计算机系统上,出于任何目的去运行该程序,并且没有义务通知软件的开发者或任何个人或团体。自由软件受到选定的 “自由软件许可协议” 保护而发布(这个协议是为了保护自由软件的源代码不被专有软件所用,而非为了阻碍他人使用),其发布以源代码为主;也就是说,自由软件的代码可为每个人所获取,自由软件可为每个人所用,不会受到任何贸易制裁。正是由于这点,每个人都可以自由的阅读自由软件的代码,而且每个人都可以对自由软件的代码进行修改。而且你也可以把你对源代码的修改提交到上游,从而让全世界的人都因此受益。

在学习、科研中,虽然专有软件通常有更好的商业支持,但我们也并不必一定要使用专有软件。在有自由软件取代品的情况下,大家可以去使用更加开放的自由软件。当自由软件出 bug 的时候,我们可以对它进行修改,让自由软件为我们所用。

如果不知道有什么自由软件可以对专有软件进行取代,可以在百度 / 谷歌中输入“关键词 opensource alternative”,搜索结果中有你想要的~

下面图片也给大家列出了一些常见软件的取代,欢迎大家尝试使用自由软件!

如果想要了解关于自由软件更多的信息,欢迎阅读

什么是自由软件? https://www.gnu.org/philosophy/free-sw.html

自由软件现在更加重要 https://www.gnu.org/philosophy/free-software-even-more-important.html

为什么开源错失了自由软件的重点 https://www.gnu.org/philosophy/open-source-misses-the-point.zh-cn.html

自由软件与教育 https://www.gnu.org/education/education.html

 

后MATLAB时代的七种开源替代,一种替代堪称完美!

近日,有哈工大学生表示收到了正版软件取消激活的通知,而在与 MATLAB 开发公司 MathWorks 交涉之后,被告知由于美国政府实体名单的原因,相关授权已被中止。目前,哈尔滨工业大学、哈尔滨工程大学的老师和学生们都无法使用 MATLAB。

MATLAB大学读理工科专业的同学基本上都接触过这款软件。有分析人士指出,如果整个学校被禁用了正版 MATLAB,这意味着学校的人员再发表论文或者从事商业项目,其成果原则上就不应包含任何基于 MATLAB 的内容,这对国内相关企业和研究学者带来的影响不可忽视。

这件事在国内社交媒体迅速发酵并登上热搜,引发学术界和技术界的广泛讨论。

现在只是禁止了实体名单的上的几所高校,但是谁又能保证后续不会加码制裁打击中国高校,抑制中国科技发展呢?因此通过此次禁用事件,我们有理由说现在已经到了后MATLAB时代!急需找到MATLAB合适的替代品。

为此我们收集整理到的一些开源软件,可以起到一定的替代效果。包括:SCILAB、Octave、Spyder、Python、GMAT、GNU Radio、ROS。特别是SCILAB,他与MATLAB最为接近,近乎可以实现完美替代!

希望本文对大家有所帮助。另外,也欢迎大家在留言区推荐你知道的替代工具。

1. “近乎完美”替代之SCILAB

SCILAB 是一款与 MATLAB 类似的开源软件,可以实现 MATLAB 上所有基本的功能,如科学计算、数学建模、信号处理、决策优化、线性、非线性控制等各个方面。

由于 SCILAB 的语法与 MATLAB 非常接近,熟悉 MATLAB 编程的人很快就会掌握 SCILAB 的使用。有意思的是,SCILAB 提供的语言转换函数可以自动将用 MATLAB 语言编写的程序翻译为 SCILAB 语言。目前,SCILAB 可在 Linux、WINDOWS 和 Mac OS 全 PC 平台运行。

作为开放源码的软件,SCILAB的源代码、用户手册及二进制的可执行文件都是免费的,公布于INRIA的网站上(中法实验室已建立其镜像网站),可以直接下载,在EETOP论坛SCILAB专区也可以下载http://bbs.eetop.cn/forum-114-1.html。

更重要的是SCILAB 是由法国国家信息、自动化研究院的科学家们开发的“开放源码”软件,和美国没有关系!

此外最关键的是SCILAB也一个有类似 MATLAB simulink的工具Xcos!simulink能做的Xcos也可以完成,并且界面和使用也很类似!很多网友担心的simulink无法替代问题迎刃而解!

因此SCILAB 近乎可以完美替代MATLAB!(欢迎用过的朋友补充说明)

Xcos截图:

2. 与MATLAB语法兼容Octave

如果已经对MATLAB语言非常熟悉,暂时不想学习一门新的语言,那么可以尝试一下Octave。Octave是GNU项目成员之一,提供了与MATLAB语法兼容的开放源代码科学计算及数值分析的工具。

Octave 是一个类似 MATLAB 和 Scilab 的数学软件包,可以进行各种运算,编程。它还有丰富的 C++ 接口可以让用户编程时调用。其配套的绘图工具采用 gnuplot 。Octave 的使用也是基于字符终端模式的,当需要绘图时,将会调用 gnuplot 进行数据绘图,并显示出来。

Octave 是用 C++ 编写的,它内容丰富的库也可以供用户在编写软件时调用。Octave 同时还支持 Fortran 等的调用,GSL 绑定等。可以由用户定制自己的函数、子程序等。

3. 航天计算神器 GMAT

对于航天器轨道计算、任务分析等,可以尝试General Mission Analysis Tool (GMAT)。GMAT提供了图像化界面或脚本两种接口,相比于STK,GMAT的深空探测相关功能更加强大,可配置的资源也更多。

4. 软件无线电、信号处理等应用 GNU Radio

GNU Radio是一个对学习,构建和部署软件定义无线电系统的免费软件工具包,可通过Python或类似于Simulink/Labview的图形化界面调用。紫丁香、龙江等卫星的业余无线电接收解调软件就是在GNU Radio基础上开发并开源发布的。

5 机器人相关 Robot Operating System (ROS)

ROS是一种针对于满足不同机器人软件协同工作的灵活软件框架。目的在于提高软件模块化能力和复用能力,并实现不同任务间的数据/信号量的有效共享,方便多种机器人平台之间创建复杂和鲁棒的机器人行为,同时它也是一种工具库的约定与集合。

6. Spyder

Spyder不是一门编程语言,Spyder是Python(x,y)的作者为它开发的一个简单的集成开发环境。和其他的Python开发环境相比,它最大的优点就是模仿MATLAB的“工作空间”的功能,可以很方便地观察和修改数组的值。

Spyder的界面由许多窗格构成,用户可以根据自己的喜好调整它们的位置和大小。当多个窗格出现在一个区域时,将使用标签页的形式显示。例如在图1中,可以看到“Editor”、“Object inspector”、“Variable explorer”、“File explorer”、“Console”、“History log”以及两个显示图像的窗格。在View菜单中可以设置是否显示这些窗格。

Spyder 的界面与 MATLAB 非常类似,其作者早年也承认模仿了 MATLAB 的设计。如果对于 MATLAB 的仿真建模需求不高的话,Spyder 足以取而代之。

7. Python

Python是一门完全免费的通用编程语言,以开源的方式提供了大量各类用途的库与包,如Numpy(数值计算)、SciPy(数学、科学和工程计算)、Matplotlib(类似MATLAB中plot的绘图工具)等等。

Python是一门更易学更严谨的面向对象的程序设计语言。作为通用程序设计语言的Python,有更为严格清晰的语法,可以轻易完成界面、文件、封装等高阶需求,可移植性更好,也非常适合AI、网络等相关应用。

Python的拥有庞大的数学库,如果不是必须用到MATLAB simulink的化,用Python来取代MATLAB 应该是最佳方式了。我们经常可以看到这样一个公式:python+NumPy+Scipy+matplotlib = Matlab