張鳳莉,張培訓(xùn)
(商丘職業(yè)技術(shù)學(xué)院 機(jī)電系,河南 商丘 476000)
Matlab語言特點(diǎn)與應(yīng)用分析
張鳳莉,張培訓(xùn)
(商丘職業(yè)技術(shù)學(xué)院 機(jī)電系,河南 商丘 476000)
對(duì)Matlab語言的特點(diǎn)進(jìn)行了簡要的介紹和分析,對(duì)其應(yīng)用從線性代數(shù)、數(shù)字信號(hào)處理、通信系統(tǒng)仿真、圖像處理等方面給予舉例分析,Matlab已被廣泛地用于研究和解決各種具體的工程問題,可以預(yù)見,Matlab將在我國科學(xué)研究和工程應(yīng)用中發(fā)揮越來越大的作用.
Matlab語言;特點(diǎn);應(yīng)用
1.1 Matlab語言的數(shù)據(jù)處理能力強(qiáng)
Matlab包含大量的計(jì)算算法,研究發(fā)現(xiàn),Matlab中,有600多個(gè)數(shù)學(xué)運(yùn)算函數(shù),且這些數(shù)學(xué)運(yùn)算函數(shù)都是工程中用到的,它可以實(shí)現(xiàn)用戶需要的不同計(jì)算功能[1]9-10.此外,在具有相同計(jì)算要求的前提下,利用Matlab進(jìn)行編程,能夠大大減少工作量.Matlab中的函數(shù)集,不僅包括一系列最基本、最簡單的數(shù)學(xué)運(yùn)算函數(shù),也包括非常多的復(fù)雜數(shù)學(xué)運(yùn)算函數(shù),例如快速傅立葉變換、特征向量、矩陣等等[2]155,233.
1.2 Matlab的圖形處理功能非常強(qiáng)
Matlab圖形化顯示數(shù)組或者矩陣的能力非常強(qiáng).此外,Matlab也可以給數(shù)組或矩陣的圖形增加注釋,還可以標(biāo)注和打印數(shù)組或矩陣的圖形.其圖形技術(shù)主要包括以下幾個(gè)方面:二維、三維可視化技術(shù),圖像處理技術(shù),高層次專業(yè)圖形技術(shù).如動(dòng)畫等高級(jí)繪圖函數(shù),包括對(duì)圖形的四維數(shù)據(jù)表現(xiàn)、色度處理、光照處理等.Matlab還具有低級(jí)繪圖命令,主要用于讓用戶控制圖形特點(diǎn),通過利用句柄圖形技術(shù),Matlab可以建立圖形用戶界面,讓用戶靈活、自由地控制圖形特點(diǎn)[3]2267-2269.
1.3 Matlab的可擴(kuò)充性強(qiáng) 應(yīng)用程序接口便利
Matlab的庫函數(shù)非常豐富.因此,在開展復(fù)雜數(shù)學(xué)運(yùn)算時(shí),可以直接調(diào)用庫函數(shù)中的數(shù)學(xué)運(yùn)算函數(shù).與此同時(shí),用戶還可以按照實(shí)際需要,對(duì)函數(shù)庫進(jìn)行編寫和擴(kuò)充.通過編程可達(dá)到用戶之間的資源共享.
2.1 Matlab的應(yīng)用范圍
Matlab有著非常廣泛的應(yīng)用范圍,可以在眾多領(lǐng)域中得到良好的應(yīng)用.附加的工具箱使得Matlab環(huán)境得到了有效的擴(kuò)展,從而使這些領(lǐng)域中的特定類型問題也得到了有效解決.因此在現(xiàn)階段,Matlab能夠用于下述工作中:數(shù)值分析,數(shù)值與符號(hào)計(jì)算,數(shù)字圖像處理,數(shù)字信號(hào)處理,財(cái)務(wù)工程與金融工程,控制系統(tǒng)、通訊系統(tǒng)的設(shè)計(jì),仿真及工程科學(xué)繪圖等.
2.2 Matlab語言在數(shù)值分析中的應(yīng)用
對(duì)于Matlab而言,其程序書寫形式相對(duì)比較自由,原因主要在于其函數(shù)名稱、函數(shù)表達(dá)式與現(xiàn)階段計(jì)算公式書寫的表達(dá)方式十分接近,在對(duì)Matlab的程序進(jìn)行編寫時(shí),就如同在草稿上進(jìn)行數(shù)學(xué)計(jì)算公式的排列、求解一樣簡單,基于此表達(dá)方式,可以對(duì)工程技術(shù)人員所提出的算法進(jìn)行快速驗(yàn)證[4]7-8,從而使得編程工作在很大程度上得到了簡化,大大提高了編程的效率.當(dāng)Matlab進(jìn)行運(yùn)行時(shí),能夠直接將Matlab語句輸入命令行,系統(tǒng)會(huì)立即對(duì)Matlab語句進(jìn)行處理,并逐步完成從翻譯到鏈接,再從鏈接到運(yùn)行的全過程,在這個(gè)過程中,因?yàn)閷?duì)庫函數(shù)進(jìn)行了有效利用,從而避開了一些復(fù)雜的、煩瑣的子程序編程任務(wù),對(duì)一些沒有必要進(jìn)行的編程工作進(jìn)行了有效壓縮,從而使得編程工作在很大程度上得到了簡化.
舉一個(gè)例子,應(yīng)用Matlab語言對(duì)下述方程進(jìn)行求解.
>> B=[1;3;2];
>> x=A/B,y=x’
為方便結(jié)果顯示,求得x的轉(zhuǎn)置y,執(zhí)行結(jié)果:y=x’=[0 1 0].
2.3 Matlab語言在數(shù)字信號(hào)處理中的應(yīng)用舉例
已知模擬信號(hào)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('幅頻響應(yīng)')
axis([0 50 0 150])
subplot(2,1,2)
plot(f,xkan)
xlabel('頻率(Hz)'),ylabel('弧度')
title('相頻響應(yīng)')
axis([0 50 -2 2])
執(zhí)行結(jié)果如圖1所示.
圖1 幅度譜和相位譜
2.4 使用Matlab語言對(duì)通訊系統(tǒng)的設(shè)計(jì)
使用一個(gè)隨機(jī)生成的二元序列(假設(shè)“0、1”等概分布),畫出2PSK信號(hào)波形和頻譜圖.
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('基帶信號(hào)');
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('基帶信號(hào)功率譜');
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信號(hào)');
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信號(hào)功率譜');
執(zhí)行結(jié)果如圖2所示.
圖2 2PSK信號(hào)波形和頻譜圖
綜上所述,Matlab語言是一種以矩陣或者是數(shù)組為基礎(chǔ)的高級(jí)語言,具有面向?qū)ο缶幊?、?shù)據(jù)結(jié)構(gòu)、函數(shù)、程序流控制以及輸入/輸出等一系列特色.Matlab憑借著應(yīng)用靈活、程序延伸性好、結(jié)構(gòu)性強(qiáng)以及用法十分簡單等一系列優(yōu)勢,已逐漸成為視圖交互系統(tǒng)、科技計(jì)算以及程序中語言工具的首選.Matlab在動(dòng)態(tài)系統(tǒng)仿真、自動(dòng)控制、數(shù)理統(tǒng)計(jì)、線性代數(shù)以及數(shù)字信號(hào)處理等方面,有著非常突出的作用,已經(jīng)成為現(xiàn)階段科研工作人員進(jìn)行科學(xué)研究、工程技術(shù)人員開展生產(chǎn)實(shí)踐的有效手段.
[1] 陸 強(qiáng),顏加仁,林定能,等.基于ARDUINO與MATLAB的簡易示波器研制[J].科技資訊,2014(29).
[2] 閆常麗,孫志田,趙書銀.關(guān)于利用MATLAB軟件進(jìn)行數(shù)值分析課程教學(xué)的探討[J].科教導(dǎo)刊(上旬刊),2014(11).
[3] 張 萌,王菊霞,李芳菊,等.基于JAVA和MATLAB的光學(xué)虛擬實(shí)驗(yàn)室的建立[J].河南科學(xué),2014(11).
[4] 劉 芳.基于MATLAB的“數(shù)字信號(hào)處理”課程教學(xué)改革與方法研究[J].科技展望,2014(12).
[責(zé)任編輯 冰 竹]
2016-09-27
張鳳莉(1985- ),女,河南商丘人,商丘職業(yè)技術(shù)學(xué)院講師,碩士,主要從事電子與通信工程研究; 張培訓(xùn)(1971- ),男,河南商丘人,商丘職業(yè)技術(shù)學(xué)院副教授,主要從事機(jī)械及制冷與低溫技術(shù)研究。
TP391.7
A
1671-8127(2017)01-0097-03