張鳳莉,張培訓
(商丘職業技術學院 機電系,河南 商丘 476000)
Matlab語言特點與應用分析
張鳳莉,張培訓
(商丘職業技術學院 機電系,河南 商丘 476000)
對Matlab語言的特點進行了簡要的介紹和分析,對其應用從線性代數、數字信號處理、通信系統仿真、圖像處理等方面給予舉例分析,Matlab已被廣泛地用于研究和解決各種具體的工程問題,可以預見,Matlab將在我國科學研究和工程應用中發揮越來越大的作用.
Matlab語言;特點;應用
1.1 Matlab語言的數據處理能力強
Matlab包含大量的計算算法,研究發現,Matlab中,有600多個數學運算函數,且這些數學運算函數都是工程中用到的,它可以實現用戶需要的不同計算功能[1]9-10.此外,在具有相同計算要求的前提下,利用Matlab進行編程,能夠大大減少工作量.Matlab中的函數集,不僅包括一系列最基本、最簡單的數學運算函數,也包括非常多的復雜數學運算函數,例如快速傅立葉變換、特征向量、矩陣等等[2]155,233.
1.2 Matlab的圖形處理功能非常強
Matlab圖形化顯示數組或者矩陣的能力非常強.此外,Matlab也可以給數組或矩陣的圖形增加注釋,還可以標注和打印數組或矩陣的圖形.其圖形技術主要包括以下幾個方面:二維、三維可視化技術,圖像處理技術,高層次專業圖形技術.如動畫等高級繪圖函數,包括對圖形的四維數據表現、色度處理、光照處理等.Matlab還具有低級繪圖命令,主要用于讓用戶控制圖形特點,通過利用句柄圖形技術,Matlab可以建立圖形用戶界面,讓用戶靈活、自由地控制圖形特點[3]2267-2269.
1.3 Matlab的可擴充性強 應用程序接口便利
Matlab的庫函數非常豐富.因此,在開展復雜數學運算時,可以直接調用庫函數中的數學運算函數.與此同時,用戶還可以按照實際需要,對函數庫進行編寫和擴充.通過編程可達到用戶之間的資源共享.
2.1 Matlab的應用范圍
Matlab有著非常廣泛的應用范圍,可以在眾多領域中得到良好的應用.附加的工具箱使得Matlab環境得到了有效的擴展,從而使這些領域中的特定類型問題也得到了有效解決.因此在現階段,Matlab能夠用于下述工作中:數值分析,數值與符號計算,數字圖像處理,數字信號處理,財務工程與金融工程,控制系統、通訊系統的設計,仿真及工程科學繪圖等.
2.2 Matlab語言在數值分析中的應用
對于Matlab而言,其程序書寫形式相對比較自由,原因主要在于其函數名稱、函數表達式與現階段計算公式書寫的表達方式十分接近,在對Matlab的程序進行編寫時,就如同在草稿上進行數學計算公式的排列、求解一樣簡單,基于此表達方式,可以對工程技術人員所提出的算法進行快速驗證[4]7-8,從而使得編程工作在很大程度上得到了簡化,大大提高了編程的效率.當Matlab進行運行時,能夠直接將Matlab語句輸入命令行,系統會立即對Matlab語句進行處理,并逐步完成從翻譯到鏈接,再從鏈接到運行的全過程,在這個過程中,因為對庫函數進行了有效利用,從而避開了一些復雜的、煩瑣的子程序編程任務,對一些沒有必要進行的編程工作進行了有效壓縮,從而使得編程工作在很大程度上得到了簡化.
舉一個例子,應用Matlab語言對下述方程進行求解.

>> B=[1;3;2];
>> x=A/B,y=x’
為方便結果顯示,求得x的轉置y,執行結果:y=x’=[0 1 0].
2.3 Matlab語言在數字信號處理中的應用舉例
已知模擬信號x(t)=2sin(3πt)-sin(6πt),求其幅度譜和相位譜.程序如下:
fs=100;
N=128;
n=0:N-1;
xn=2*sin(3*pi*n/fs)-sin(6*pi*n/fs);
xk=fft(xn,N);
f=(0:N-1)*fs/N;
xkam=abs(xk);
xkan=angle(xk);
subplot(2,1,1)
plot(f,xkam)
xlabel('頻率(Hz)'),ylabel('幅值')
title('幅頻響應')
axis([0 50 0 150])
subplot(2,1,2)
plot(f,xkan)
xlabel('頻率(Hz)'),ylabel('弧度')
title('相頻響應')
axis([0 50 -2 2])
執行結果如圖1所示.

圖1 幅度譜和相位譜
2.4 使用Matlab語言對通訊系統的設計
使用一個隨機生成的二元序列(假設“0、1”等概分布),畫出2PSK信號波形和頻譜圖.
A=1;
Fc=2;
Fs=128;
Ts=1/Fs;
M=20;
Td=1;
T=M*Td;
t=0:Ts:T-Ts;
N=length(t);
d=sign(randn(1,M));
dd=sigexpand((d+1)/2,Fs);
gt=ones(1,Fs);
figure(1)
subplot(221);
t_snrz=conv(dd,gt);
delta_f=1/T;
N=length(t);
f=delta_f*[-N/2:N/2-1];
f_snrz=fft(t_snrz(1:length(t)));
f_snrz=T/N*fftshift(f_snrz);
psf=(abs(f_snrz).^2+eps)/T;
plot(t,t_snrz(1:length(t)));grid on
axis([0 5 0 1.2]);
xlabel('t');ylabel('amp');title('基帶信號');
subplot(222);
plot(f,10*log10(abs(f_snrz).^2/T+eps));grid on
plot(f,abs(f_snrz).^2/T+eps);grid on
axis([-2 2 0 10]);
xlabel('f');ylabel('psf');title('基帶信號功率譜');
ht=A*cos(2*pi*Fc*t);
t_2psk=(2*t_snrz(1:N)-1).*ht;
f_2psk=fft(t_2psk(1:N));
f_2psk=T/N*fftshift(f_2psk);
psf=(abs(f_2psk).^2+eps)/T;
subplot(223)
plot(t,t_2psk);grid on;
axis([0 5 -1.2 1.2]);
xlabel('t');ylabel('amp');title('2PSK信號');
subplot(224)
plot(f,abs(f_2psk).^2/T+eps);grid on;
axis([-Fc-4 Fc+4 0 2]);
xlabel('f');ylabel('psf');title('2PSK信號功率譜');
執行結果如圖2所示.

圖2 2PSK信號波形和頻譜圖
綜上所述,Matlab語言是一種以矩陣或者是數組為基礎的高級語言,具有面向對象編程、數據結構、函數、程序流控制以及輸入/輸出等一系列特色.Matlab憑借著應用靈活、程序延伸性好、結構性強以及用法十分簡單等一系列優勢,已逐漸成為視圖交互系統、科技計算以及程序中語言工具的首選.Matlab在動態系統仿真、自動控制、數理統計、線性代數以及數字信號處理等方面,有著非常突出的作用,已經成為現階段科研工作人員進行科學研究、工程技術人員開展生產實踐的有效手段.
[1] 陸 強,顏加仁,林定能,等.基于ARDUINO與MATLAB的簡易示波器研制[J].科技資訊,2014(29).
[2] 閆常麗,孫志田,趙書銀.關于利用MATLAB軟件進行數值分析課程教學的探討[J].科教導刊(上旬刊),2014(11).
[3] 張 萌,王菊霞,李芳菊,等.基于JAVA和MATLAB的光學虛擬實驗室的建立[J].河南科學,2014(11).
[4] 劉 芳.基于MATLAB的“數字信號處理”課程教學改革與方法研究[J].科技展望,2014(12).
[責任編輯 冰 竹]
2016-09-27
張鳳莉(1985- ),女,河南商丘人,商丘職業技術學院講師,碩士,主要從事電子與通信工程研究; 張培訓(1971- ),男,河南商丘人,商丘職業技術學院副教授,主要從事機械及制冷與低溫技術研究。
TP391.7
A
1671-8127(2017)01-0097-03