第1章:MATLAB的介紹和安裝
1.1 MATLAB的介紹
以下內(nèi)容引用自百度百科:
MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于數(shù)據(jù)分析、無線通信、深度學(xué)習(xí)、圖像處理與計算機(jī)視覺、信號處理、量化金融與風(fēng)險管理、機(jī)器人,控制系統(tǒng)等領(lǐng)域。
MATLAB是matrix和laboratory兩個詞的組合,意為矩陣實驗室,軟件主要面對科學(xué)計算、可視化以及交互式程序設(shè)計的高科技計算環(huán)境。它將數(shù)值分析、矩陣計算、科學(xué)數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計以及必須進(jìn)行有效數(shù)值計算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言(如C、Fortran)的編輯模式。
1.2 MATLAB和Python的比較
從上面的介紹可以知道,MATLAB是一款專業(yè)的數(shù)學(xué)軟件,能很方便的進(jìn)行科學(xué)計算,其提供的強(qiáng)大功能在科學(xué)研究和工業(yè)領(lǐng)域有廣泛的應(yīng)用。而Python作為最近幾年非常流行的編程語言,也能很好的完成科學(xué)計算的工作。那么,作為初學(xué)者我們應(yīng)該如何選擇呢?
在知乎上,關(guān)于這兩款軟件的對比有很多討論,這里我列舉一些普遍的觀點給大家參考:

對于數(shù)學(xué)建模競賽而言,MATLAB和Python相比,在數(shù)值計算、微分方程求解、仿真等方面更加方便;而Python在爬蟲、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等方面要比MATLAB更具有優(yōu)勢,許多前沿文獻(xiàn)提出的算法都提供了Python的實現(xiàn)方法。
下面是我個人關(guān)于MATLAB和Python的學(xué)習(xí)心得,有興趣的同學(xué)可以看看:

我是統(tǒng)計學(xué)出身,也修了一些經(jīng)濟(jì)學(xué)方面的課程。因為課程學(xué)習(xí)的需求,老師和助教大多推薦我們學(xué)習(xí)MATLAB、R語言和Stata軟件(那時候Python沒有現(xiàn)在這么大的熱度,在我們專業(yè)并沒有很多老師了解),因此我接觸MATLAB的時間較早。后來我參加了數(shù)學(xué)建模的各種比賽,這些經(jīng)歷讓我的MATLAB水平有了很大的提高。當(dāng)然,在參加比賽的階段,我也學(xué)習(xí)了一些其他的軟件,例如SPSS和容易被大家忽略的Office套件。
到了2016年底左右,有朋友邀請我一起參加Kaggle數(shù)據(jù)分析的比賽,于是我學(xué)習(xí)了Python。因為有MATLAB的基礎(chǔ),所以學(xué)習(xí)Python的速度很快。當(dāng)時我是先看的小甲魚老師的視頻入門(注意,現(xiàn)在這個視頻稍微有點老了,想學(xué)習(xí)Python的同學(xué)可以在B站搜一些新出的教程,選擇一門播放量較高的基礎(chǔ)課程看完就能入門啦),然后再自己學(xué)習(xí)一些更加專業(yè)的包,例如做數(shù)據(jù)科學(xué)最基本的Numpy, Pandas和Matplotlib。對于想學(xué)習(xí)Python機(jī)器學(xué)習(xí)的同學(xué),可以學(xué)習(xí)Sklearn這個包,學(xué)習(xí)深度學(xué)習(xí)的話可以使用PyTorch或者TensorFlow等框架。
說實話,我個人覺得Python在做數(shù)據(jù)分析方面的工作要比MATLAB更加方便。2018年時,爬蟲技術(shù)很火,我還特意學(xué)習(xí)了爬蟲的技術(shù)在網(wǎng)上抓取網(wǎng)頁數(shù)據(jù),然后再對這些數(shù)據(jù)進(jìn)行分析,感覺還是挺有成就感的(現(xiàn)在我的爬蟲用的很少了,大部分情況都是分析整理別人提供好的數(shù)據(jù))。另外,如果你打算參加數(shù)據(jù)分析類的比賽,例如Kaggle和天池,絕大部分隊伍都是使用的Python,有些獲獎隊伍會在比賽結(jié)束后,在Github上發(fā)布自己隊伍的分析思路和代碼,這些都是很好的學(xué)習(xí)資源,網(wǎng)上大部分機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的課程都是基于Python實現(xiàn)的。
在本節(jié)開始,我們對比了MATLAB和Python這兩款軟件,事實上對于初學(xué)者而言,我個人認(rèn)為MATLAB的入門難度更低,很多問題我們都只需要調(diào)用MATLAB中的內(nèi)置函數(shù)和工具箱就能解決了,而且MATLAB官網(wǎng)提供的幫助文檔特別詳細(xì),很適合自學(xué)。而Python的語法非常靈活,同一個問題可能有很多種不同的代碼實現(xiàn)思路,例如列表推導(dǎo)式和循環(huán)都能計算得到新的列表,因此初學(xué)者需要對Python的一些用法非常熟練。另外,學(xué)習(xí)Python需要學(xué)習(xí)很多第三方的功能包,這樣才能實現(xiàn)需要的功能。很多同學(xué)學(xué)到最后都是會“調(diào)包”,只要能解決需要的問題,讓代碼跑起來就可以了。當(dāng)然,未來計算從事這方面工作的話,只會“調(diào)包”是遠(yuǎn)遠(yuǎn)不夠的,最好是專心于某一個領(lǐng)域深耕,例如計算機(jī)視覺CV、自然語言處理NLP等。如果只是感興趣學(xué)習(xí)Python或者想在數(shù)據(jù)分析類競賽中取得一個還行的排名,會“調(diào)包”還是夠用的。
如果單純從做數(shù)學(xué)建模競賽的角度,我還是更推薦大家使用MATLAB,盡管前面我提到了Python更擅長進(jìn)行數(shù)據(jù)分析。因為數(shù)學(xué)建模的題目很廣泛,里面可能涉及到很多方面的知識,例如:對于微分方程的求解,MATLAB要比Python更加專業(yè)方便,MATLAB還提供了偏微分方程工具箱,專門用來求解在物理和工程技術(shù)中應(yīng)用廣泛的偏微分方程;另外,MATLAB中提供了許多圖形界面化(即GUI)功能,例如“導(dǎo)入數(shù)據(jù)”、“繪圖功能”,這些功能可以將原本代碼實現(xiàn)的任務(wù)變成傻瓜式操作,并支持導(dǎo)出對應(yīng)的代碼,這將大大提高我們的工作效率;此外,MATLAB中提供了強(qiáng)大的工具箱,例如在數(shù)學(xué)建模中常用的“擬合工具箱”、 “統(tǒng)計和機(jī)器學(xué)習(xí)工具箱”、“深度學(xué)習(xí)工具箱”等。盡管MATLAB中提供的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法沒有Python那么靈活豐富,但如果大家用過就會發(fā)現(xiàn),MATLAB中操作實現(xiàn)起來非常容易,我個人感覺比Python還要方便。最后,許多數(shù)學(xué)建模的書籍和論文中的代碼都是基于MATLAB編寫的,因此使用MATLAB進(jìn)行數(shù)學(xué)建模有更豐富的課外資源,能大大降低數(shù)學(xué)建模入手難度。
最后還有一個問題,MATLAB是商業(yè)軟件,美國限定了國內(nèi)部分高校使用MATLAB,所以這部分學(xué)校的同學(xué)盡量選擇Python。但就我目前的觀察來看,盡管被限制使用MATLAB的部分高校老師不再推薦他們的學(xué)生使用MATLAB進(jìn)行建模,但有一些同學(xué)在比賽論文中使用了MATLAB,最后也沒有對比賽成績造成影響(被限制的同學(xué)不要在論文中強(qiáng)調(diào)是使用MATLAB求解的)。事實上,大部分學(xué)生使用的都是盜版的MATLAB,MATLAB官方對市面上的盜版也是睜一只眼閉一只眼,個人使用盜版的MATLAB進(jìn)行學(xué)習(xí)一般不會出現(xiàn)問題,企業(yè)使用盜版或者被限制使用MATLAB的高校老師利用MATLAB發(fā)表學(xué)術(shù)論文可能會導(dǎo)致版權(quán)糾紛。

1.3 MATLAB的安裝
正版的MATLAB對于學(xué)生來說非常昂貴,一般都是學(xué)校或者企業(yè)才會購買,因此很多同學(xué)都會選擇在網(wǎng)上下載MATLAB各個版本的破解版。在上一小節(jié)的文章最后,我也談到:使用破解版的MATLAB要注意版權(quán)問題,如果是個人學(xué)習(xí)使用的話一般不會出現(xiàn)問題,而使用破解版的MATLAB去發(fā)表學(xué)術(shù)論文可能會被追責(zé)。
?
1.3.1 MATLAB版本的選擇
從MATLAB誕生的上世紀(jì)80年代起,MATLAB發(fā)布了多個版本。MATLAB的版本越新,提供的功能越強(qiáng)大,同時對電腦的配置要求也越高。本課程最低要求MATLAB2017a[1]版本,在后面涉及到數(shù)據(jù)分析部分也會用到更高的版本(例如MATLAB2021的版本),與2017版本相比,新版本的函數(shù)和工具箱更加方便。
[1]?注:大家安裝MATLAB時會發(fā)現(xiàn)版本后帶有a和b的區(qū)別。以2017版本為例:2017a和2017b版本的區(qū)別在于,a是上半年出的版本,b是下半年出的版本,b版本和a版本的功能差異不大,可以視為a版本的穩(wěn)定版。
大家在下載MATLAB時,需要綜合考慮電腦的配置,電腦配置高的同學(xué)請盡量下載較新的MATLAB版本。本課程前期主要基于2017a的版本講解,這是為了照顧電腦性能較差的同學(xué)。一般新版本的MATLAB可以兼容低版本的MATLAB,即低版本MATLAB能運(yùn)行的代碼在高版本也能運(yùn)行,但新版本提供的某些新的函數(shù)在低版本運(yùn)行時會報錯。
這里根據(jù)電腦價格給大家一個建議:價格小于等于4000元安裝MATLAB2017版本、價格在4000到8000之間安裝MATLAB2021版本,價格高于8000安裝你能獲得的最新版本。
1.3.2 MATLAB的獲取
除了直接購買正版MATLAB外,正版MATLAB有多種免費(fèi)獲取的途徑。
(1)??? 免費(fèi)試用1個月
訪問MATLAB官網(wǎng):https://ww2.mathworks.cn,在右上角注冊并登陸MATLAB官網(wǎng),即可免費(fèi)使用20個小時的在線MATLAB版本,也能夠獲取30天的無限制試用版本。

(2)??? 大學(xué)購買的正版MATLAB資源
許多大學(xué)出于科研的目的都建立了自己的正版軟件平臺,大家可以在百度搜索自己的學(xué)校是否購買了正版的MATLAB軟件,也可以打電話向?qū)W校的圖書館或者信息辦咨詢。
例如,搜索“復(fù)旦大學(xué)正版軟件”的關(guān)鍵詞,就能檢索到相應(yīng)的頁面,一般在頁面內(nèi)會有詳細(xì)的安裝教程,大家根據(jù)教程安裝即可。
(3)??? 參加MATLAB贊助或支持的競賽
官網(wǎng)中給出了MATLAB贊助或支持的大學(xué)生競賽列表:
https://ww2.mathworks.cn/academia/student-competitions.html

參加列表中這些競賽的同學(xué)可以免費(fèi)使用一定期限的MATLAB。(MATLAB公司多年來都是數(shù)學(xué)建模國賽的贊助商,然而從去年開始,國賽取消了MATLAB公司的贊助)

有很多同學(xué)也會選擇使用盜版的MATLAB,也就是破解版的MATLAB。在功能上盜版的MATLAB和正版的MATLAB幾乎沒有區(qū)別,但是享受不到正版的售后服務(wù),也可能因為下載不慎導(dǎo)致電腦中病毒。使用破解版的MATLAB不需要經(jīng)過復(fù)雜的申請環(huán)節(jié),一般都是下載完成后就能安裝使用。在b站上有很多Up主分享了安裝過程,淘寶上也可以購買遠(yuǎn)程安裝的服務(wù),大家可以自己找網(wǎng)上的盜版資源。當(dāng)然,未來如果你有精力和財力的話,請使用正版的MATLAB,只有保護(hù)正版才能給開發(fā)者源源不斷更新的動力,也能讓自己的使用體驗更加舒心。
再次強(qiáng)調(diào),如果你使用了盜版的MATLAB發(fā)表學(xué)術(shù)論文可能會導(dǎo)致版權(quán)問題。目前來看,如果僅僅出于個人學(xué)習(xí),或者參加數(shù)學(xué)建模競賽的目的,我們使用盜版的MATLAB不會造成很嚴(yán)重的問題,但未來是否會造成嚴(yán)重的后果這一點誰也無法保證。
最后,MATLAB軟件安裝包占硬盤的空間較大[1],網(wǎng)上提供的資源絕大部分都是百度網(wǎng)盤的下載方式,如果沒有網(wǎng)盤會員的話下載速度會很慢,大家可以在拼多多上面搜索網(wǎng)盤會員等關(guān)鍵詞,可以買到非常便宜的會員加速下載服務(wù)(這個方法未來可能會失效,請大家自行測試)。
[1] 安裝MATLAB的過程中,有一個環(huán)節(jié)是選擇需要安裝的產(chǎn)品。有些同學(xué)的硬盤空間有限,因此我這里提供了一個大家不需要安裝的產(chǎn)品列表,大家可以在公眾號《數(shù)學(xué)建模學(xué)習(xí)交流》中查看歷史文章(發(fā)布時間是2021年7月15日)。

1.4 本章小節(jié)
??介紹了MATLAB軟件和Python的區(qū)別,Python在數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等方面更有優(yōu)勢;對于數(shù)學(xué)建模比賽而言,使用MATLAB會更方便一點。
??學(xué)習(xí)如何安裝MATLAB軟件。在本課程中,大家需要安裝MATLAB2017a或以上的版本,在電腦配置允許的前提下,安裝更新的版本更好。
?
1.5?課后習(xí)題
Q1.? 根據(jù)本章介紹的方法安裝MATLAB軟件。(版本建議:價格小于等于4000元的電腦安裝MATLAB2017版本、價格在4000到8000之間的電腦安裝MATLAB2021版本,價格高于8000的電腦安裝你能獲得的最新版本)
Q2.? 在知乎搜索關(guān)于MATLAB的問題,增加對于MATLAB的了解。