最近,因為美國政府實體名單的影響,國內學校哈工大、哈工程接到了MATLAB軟體停止服務的郵件通知,該軟體的相關授權已被終止,無法繼續使用。此事在國內媒體迅速發酵併成為社會關注熱點,引發學術界和技術界的廣泛討論和引起有關部門的高度重視。
Matlab被禁,該怎麼辦?
那麼MATLAB是什麼?
MATLAB是美國MathWorks公司出品的商業數字軟體,用於資料分析、無線通訊、深度學習、影象處理與計算機視覺、訊號處理、量化金融與風險管理、機器人,控制系統等領域。
MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室),軟體主要面對科學計算、視覺化以及互動式程式設計的高科技計算環境。它將數值分析、矩陣計算、科學資料視覺化以及非線性動態系統的建模和模擬等諸多強大功能整合在一個易於使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,並在很大程度上擺脫了傳統非互動式程式設計語言(如C、Fortran)的編輯模式。
MATLAB和Mathematica、Maple並稱為三大數學軟體。它在數學類科技應用軟體中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪製函式和資料、實現演算法、建立使用者介面、連線其他程式語言的程式等。MATLAB的基本資料單位是矩陣,它的指令表示式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,並且MATLAB也吸收了像Maple等軟體的優點,使MATLAB成為一個強大的數學軟體。在新的版本中也加入了對C,FORTRAN,C++,JAVA的支援。
Matlab以矩陣操作為核心,是一個整合數學、力學、統計學、工程學、電子電路、金融學等各個行業專家知識的工具軟體。邊學邊用,邊用邊學。看看help,找一下對應的工具包,模仿一下呼叫包的示例程式碼,就能完成日常工作,這是一個常態。
二十多年時間,Matlab陪眾多工科和理科科研人員完成了各種學科作業、畢業論文,以及日常的科研工作,現在大多數人幾乎每天都在用。
我們現在就來研討一下,Matlab被禁,對中國科研和工業界意味著什麼?
Matlab這樣的基礎工具被禁,實質是,提高了許多初級科研工作和設計工作的人力成本,或者說提高了科研工作的難度,壓縮了設計工作的利潤空間。
我們從Matlab的基礎功能和Matlab的工具箱兩個方面來說明這個問題。
(1)Matlab的基礎功能可以比較容易的尋找替代工具
Matlab的基礎功能是科研部門常用的東西,比如說各種矩陣計算,微分方程求解,畫圖之類。這些東西可以比較容易的用其他科學計算軟體,或者R,Python等程式語言引用相應工具包替代。
matlab這些方面有個很大的好處就是文件非常全,而且有全球許多人寫各種翻譯和支援文件,而且資料檔案支援做的很全,可以匯入其他軟體產生的資料。這些功能對於大學生來說是很有價值的,但說到底不怕麻煩都可以替換,替換門檻也不高。
比如matlab的矩陣計算本身是呼叫lapack/mkl的,這個還好,但它的call機制非常有問題,經常沒事就把陣列複製一下,這個工作往往比計算部分還慢很多。你自己寫個FORTRAN介面呼叫MKL,或者用C++的引用方式,都會效率高得多。
下面我們看一下兩款可以替代Matlab基礎功能的開源軟體:
1)SCILAB
SCILAB 是一款與 MATLAB 類似的開源軟體,可以實現 MATLAB 上所有基本的功能,如科學計算、矩陣處理及圖形顯示等。由於SCILAB的語法與MATLAB非常接近,熟悉MATLAB程式設計的人很快就會掌握SCILAB的使用。有意思的是,SCILAB提供的語言轉換函式可以自動將用MATLAB語言編寫的程式翻譯為 SCILAB語言。目前,SCILAB可在Linux、Windows和 Mac OS等全PC平臺執行。
作為開放原始碼的軟體,SCILAB遵循GPL 2.0開源協議,原始碼、使用者手冊及二進位制的可執行檔案都可以通過官網免費直接下載使用。使用者不僅可以在SCILAB的許可證條件下自由使用該軟體,還可以根據自己需要修改原始碼。
2)Octave
Octave是一個類似MATLAB和Scilab 的數學軟體包,可以進行各種運算,程式設計。它還有豐富的C++介面可以讓使用者程式設計時呼叫。其配套的繪圖工具採用gnuplot。Octave的使用也是基於字元終端模式的,當需要繪圖時,將會呼叫gnuplot進行資料繪圖,並顯示出來。
Octave 是用C++編寫的,它內容豐富的庫也可以供使用者在編寫軟體時呼叫。Octave同時還支援Fortran等的呼叫,GSL繫結等。可以由使用者定製自己的函式、子程式等。
(2)Matlab的各種工具箱很難被替代
為什麼呢?因為Matlab經過多年的積累,各個行業的領域專家凝聚他們的智慧,開發了基於Matlab的包羅永珍的,各行各業的工業模擬和驗證工具箱。這其中最主要的當然是simulink工具箱。
在使用這些工具箱進行工業模擬實驗時,通過一個包裝和呼叫介面和介面,使用者可以在完全不知道里面的模擬具體是幹啥,裡面的演算法具體是怎麼執行的情況下,只要自己設計包裝幾個邏輯框架,呼叫這些模擬工具包就好,然後在90%的情況下可以執行。
而這一點這對工科很多專業的工業控制和自動化設計部門是意義非常重大的。只要知道總體邏輯,不需要知道細節,就能畫設計圖,尤其不需要知道每個框圖都是具體咋做的。這可以說是一種端到端的高階模擬模式(即不了解具體機理,只要起點和終點就行)。
從這個角度上,目前中國各個行業的工業模擬和驗證的軟體替換產品,基本是沒有的。
因為如上所述,Matlab是一款“讓文盲可以寫字”的產品。
它不是給做模擬和控制對應的計算方法的人用的。而是給科研部門和工業設計部門中,不懂對應的演算法細節,就直接呼叫對應工具包的人用的。
如果對所有的中國科研部門和企業都禁用Matlab了,那麼它們就需要提高現有設計人員的基礎素質,需要重新開發大量的工業模擬和設計工具包,這都意味著巨大的設計成本支出。
對於工業控制和自動化這些相關部門,這就是主要的破壞因素,企業不得不僱傭更多的人,也許5倍,甚至10倍,來完成以前同樣的工業設計和模擬需求。
(3)解決方案
一代又一代理工科學生對工業模擬和自動化演算法的細節不求甚解,失去了對演算法的基礎創新能力。研究者和開發者們成了“調包族”: 將資料輸入“黑箱”(Matlab的Toolbox ),然後就只能聽天由命看結果了。這也造成了我們對像Matlab這樣的計算軟體和國外各種開源工具包的路徑依賴。
從現在開始,在各行各業,各個工業領域,我們需要全社會,全行業共同行動起來,凝聚行業領域的智慧,進行演算法程式設計,在不斷的試錯中,理解這些模擬和自動化演算法的核心奧祕,完成各個行業的專業工業模擬和自動化工具包的開發和共享(這個當然應該是有償共享的),從而開創中國原創工業科研的新時代。