一言以蔽之:MATLAB和Mathematica是很強大的科學計算軟體。
MATLAB
訊號與系統是電機系一門基礎而重要的課程,不管是未來工作是數位、類比電路設計,控制系統設計,還是通訊原理、圖像演算法……等,都需要用到這門課的內容。而MATLAB是訊號與系統裡面最重要的軟體了,可以用於科學計算、數值分析和數據作圖,它被廣泛使用於許多不同的工程領域(還有數學、統計、金融……等)。
我常用的MATLAB功能有:
- 矩陣運算:MATLAB支援很多數值計算方式,但最好用的就是矩陣。例如for(i=1~10000,j==1~10000) C[i][j]=A[i][j]*B[i][j]這種程式,在一般程式語言中,要跑迴圈一億次、會很慢,但在MATLAB中,矩陣計算C=A.*B可以跑非常快。
- 繪圖工具:ISSCC論文上ADC的FFT spectrum都是用MATLAB畫的,這是因為MATLAB有很強的作圖能力,便可以輕鬆繪製各種圖表。
- 寫程式:有很多語言都能寫程式,但MATLAB已經內建了一大堆數學函式,例如sin、cos,使得用MATLAB來寫工程的程式變得很方便。
- Simulink:如果不會一行一行地刻程式碼,例如寫butter(3,0.6)表示三階的Butterworth filter,那也沒關係,MATLAB有提供Simulink,可以直接拉filter方塊圖出來,一切都搞定。
由於很多電機系的學生和工程師都會使用MATLAB,在這邊只簡單展示一下,這個程式範例,可以畫出y=sin(x)的圖形。
如果不太會寫程式,也可以用Simulink拉方塊。
MATLAB的應用領域真的很廣泛,善用這麼強大的科學計算軟體,可以讓工作效率大幅提升。
Mathematica
除了MATLAB,我更想介紹的是Mathematica,這也是一款強大的數學軟體,這是一個數學系學生很常使用的計算軟體,卻鮮少為電機系學生所知道。
我常用的Mathematica功能有:
- 符號計算:Mathematica還可以進行符號計算,從此算微積分不用再查表。Mathematica算analytical expression就是強。
- 方程式運算:Mathematica處理closed form的能力比MATLAB更強大,所以要算方程式我都會使用它。
- 數值運算:雖然MATLAB也可以做數值計算,但Mathematica更直覺,例如算定積分、解聯立方程式的時候,就跟數學上課教的一樣。
- 繪圖能力:Mathematica也具有強大的圖形和可視化功能,可以輕鬆地繪製2D和3D圖形。
接下來簡單地展示一下Mathematica。首先是多項式的運算,x^3-1=(x-1)*(x^2+x+1),這畫面是不是比MATLAB直觀得多。再來是已知f(x)=x^2+x+1,求f(x-1)是什麼,這種很困擾中學生的題目,是難不倒tool的。
算微積分,當然也不是問題,1/x的積分是ln(x)、cos(x)積分是sin(x)。
除了closed form的運算,數值計算也毫無困難,來試個三角函數。
最後來看看它畫圖的能耐。
雖然在公司裡大部分人使用的是MATLAB,不過在計算analytical formula時還是Mathematica比較得心應手。