基于MATLAB的DSP軟件仿真信號(hào)處理實(shí)驗(yàn)_第1頁
基于MATLAB的DSP軟件仿真信號(hào)處理實(shí)驗(yàn)_第2頁
基于MATLAB的DSP軟件仿真信號(hào)處理實(shí)驗(yàn)_第3頁
基于MATLAB的DSP軟件仿真信號(hào)處理實(shí)驗(yàn)_第4頁
基于MATLAB的DSP軟件仿真信號(hào)處理實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目 錄緒論 11 離散時(shí)間信號(hào)和系統(tǒng)分析1.1 離散時(shí)間信號(hào)產(chǎn)生與運(yùn)算 21.2 離散時(shí)間系統(tǒng)的時(shí)域分析 91.3 離散時(shí)間系統(tǒng)的頻域分析 131.4 離散時(shí)間系統(tǒng)頻響的零極點(diǎn)確定 142 快速傅立葉變換的應(yīng)用2.1 fft的計(jì)算 172.2 利用fft進(jìn)行譜分析 182.3利用fft實(shí)現(xiàn)快速卷積 193 數(shù)字濾波器的設(shè)計(jì)3.1數(shù)字濾波器的結(jié)構(gòu) 233.2無限沖激響應(yīng)(iir)數(shù)字濾波器的設(shè)計(jì) 253.3有限沖激響應(yīng)(fir)數(shù)字濾波器的設(shè)計(jì) 274 綜合應(yīng)用舉例4.1 語音信號(hào)處理 324.2 電話撥號(hào)音的合成與識(shí)別 32 緒 論 數(shù)字信號(hào)處理主要研究如何對(duì)信號(hào)進(jìn)行分析、變換、綜合、估計(jì)與識(shí)

2、別等加工處理的基本理論和方法。隨著計(jì)算機(jī)技術(shù)和大規(guī)模集成電路技術(shù)的發(fā)展,數(shù)字信號(hào)處理以其方便、靈活等特點(diǎn)引起人們?cè)絹碓蕉嗟闹匾?。?0多年的發(fā)展過程中,這門學(xué)科基本形成了一套完整的理論體系,其中也包括各種快速、優(yōu)良的算法,而且數(shù)字信號(hào)處理的理論和技術(shù)也在不斷、快速地豐富和完善,新理論和新技術(shù)也層出不窮。學(xué)習(xí)這門課程的過程中,容易使人感到數(shù)字信號(hào)處理的概念抽象難懂,其中的分析方法與基本理論不容易很好地理解與掌握。因此,如何理解與掌握課程中的基本概念、基本原理、基本分析方法以及綜合應(yīng)用所學(xué)知識(shí)解決實(shí)際問題的能力,是本課程學(xué)習(xí)中所要解決的關(guān)鍵問題。matlab是一種面向科學(xué)和工程的高級(jí)語言,現(xiàn)已成為

3、國際上公認(rèn)的優(yōu)秀的科技界應(yīng)用軟件,在世界范圍內(nèi)廣為流行和使用。在歐美高等院校里,matlab已成為大專院校學(xué)生、教師的必要基本技能,廣泛應(yīng)用于科學(xué)研究、工程計(jì)算、教學(xué)等。上世紀(jì)90年代末和本世紀(jì)初matlab在我國也被越來越多地應(yīng)用于科研和教學(xué)工作中。matlab是一套功能強(qiáng)大的工程計(jì)算及數(shù)據(jù)處理軟件,在工業(yè),電子,醫(yī)療和建筑等眾多領(lǐng)域均被廣泛運(yùn)用。它是一種面向?qū)ο蟮?,交互式程序設(shè)計(jì)語言,其結(jié)構(gòu)完整又具有優(yōu)良的可移植性。它在矩陣運(yùn)算,數(shù)字信號(hào)處理方面有強(qiáng)大的功能。另外,matlab提供了方便的繪圖功能,便于用戶直觀地輸出處理結(jié)果。本文通過matlab系列仿真,旨在掌握基本的數(shù)字信號(hào)處理的理論和

4、方法,提高綜合運(yùn)用所學(xué)知識(shí),提高matlab計(jì)算機(jī)編程的能力。進(jìn)一步加強(qiáng)獨(dú)立分析問題、解決問題的能力、綜合設(shè)計(jì)及創(chuàng)新能力的培養(yǎng),同時(shí)注意培養(yǎng)實(shí)事求是、嚴(yán)肅認(rèn)真的科學(xué)作風(fēng)和良好的實(shí)驗(yàn)習(xí)慣。1. 離散時(shí)間信號(hào)和系統(tǒng)分析1.1 離散時(shí)間信號(hào)產(chǎn)生與運(yùn)算 本節(jié)的目的是使讀者熟悉matlab中離散時(shí)間信號(hào)產(chǎn)生和信號(hào)運(yùn)算的基本命令。幾種常用的序列如下:(1)單位抽樣序列 在matlab中可以利用zeros()函數(shù)實(shí)現(xiàn):例如,下列程序n = input (type in length of sequence = ); n=0:n-1; x=zeros(1,n); x(1)=1; stem(n,x); xlab

5、el(n);ylabel(x(n); title(單位抽樣序列 n取10);輸入type in length of sequence = 10,可產(chǎn)生(2)單位階越序列 在matlab中可以利用ones()函數(shù)實(shí)現(xiàn):例如,下列程序n = input (type in length of sequence = ); n=0:n-1; x=ones(1,n); stem(n,x); xlabel(n);ylabel(x(n);title(單位階越序列 n取10);輸入type in length of sequence = 10,可產(chǎn)生(3)正弦序列在matlab中:例如,下列程序a = inpu

6、t(type in a = ); b = input(type in b = ); a = input(type in the gain constant = ); n = input (type in length of sequence = ); n = 0:n; x = a*sin(a*pi*n+pi/b); stem(n,x); title(正弦序列); xlabel(time index n);ylabel(amplitude);輸入type in a = 0.1,type in b = 2,type in the gain constant = 3,type in length o

7、f sequence = 40,可產(chǎn)生(4)指數(shù)序列在matlab中:例如,下列程序a = input(type in exponent = ); k = input(type in the gain constant = ); n = input (type in length of sequence = ); n = 0:n; x = k*a.n; stem(n,x); xlabel(time index n);ylabel(amplitude); title( 指數(shù)序列 alpha = ,num2str(a);輸入type in exponent = 2,type in the gain

8、 constant = 1,type in length of sequence = 20,可產(chǎn)生如下結(jié)果(5)復(fù)指數(shù)序列在matlab中:例如,下列程序a = input(type in real exponent = ); b = input(type in imaginary exponent = ); c = a + b*i; k = input(type in the gain constant = ); n = input (type in length of sequence = ); n = 1:n; x = k*exp(c*n);subplot(211); stem(n,re

9、al(x); ylabel(amplitude); title(復(fù)指數(shù)序列 real part); subplot(212); stem(n,imag(x); xlabel(time index n); ylabel(amplitude); title(復(fù)指數(shù)序列 imaginary part);輸入type in real exponent = 0.2,type in imaginary exponent = 0.2,type in the gain constant = 2,type in length of sequence = 40,可產(chǎn)生如下結(jié)果(6)sinc函數(shù)在matlab中:例

10、如,下列程序t=-10:0.01:10; x=sinc(t); plot(t,x); xlabel(t);ylabel(x(t); title(sinc函數(shù));可產(chǎn)生(7)隨即序列例如,下列程序clf; r=51; d=0.8*(rand(r,1)-0.5); m=0:r-1; stem(m,d,b); title(隨機(jī)序列); xlabel(k);ylabel(f(k);可產(chǎn)生序列的基本運(yùn)算有:(1)序列加法和乘法在matlab中:x= c+ b;y= c.* b;例如,下列程序%取a=2,1, 3, 4,b=0,1,2, 3, 1 m=1:4; a=2 1 3 4; c=2 1 3 4 0

11、; n=1:5; b=0 1 2 3 1; c=a zeros(1); x=c+b; y=c.*b; subplot(4,1,1); stem(m,a);xlabel(m);ylabel(a(m); subplot(4,1,2); stem(n,b);xlabel(n);ylabel(b(n); subplot(4,1,3); stem(n,x);xlabel(n);ylabel(x(n); title(序列的加法); subplot(4,1,4); stem(n,y);xlabel(n);ylabel(y(n) ; title(序列的乘法);可產(chǎn)生 (2)序列的卷積在matlab中:c=co

12、nv(a,b);例如,下列程序a=input(type in the first sequence =); b=input(type in the second sequence =); c=conv(a,b); m=length(c)-1; n=0:1:m; disp(output sequence =); disp(c);stem(n,c); xlabel(time index n); ylabel(amplitude);title(序列的卷積);輸入type in the first sequence =1 2 3,type in the second sequence =4 5 6,可

13、產(chǎn)生:output sequence = 4 13 28 27 18 1.2 離散時(shí)間系統(tǒng)的時(shí)域分析對(duì)線性離散時(shí)間系統(tǒng),若y1n和y2n分別是輸入序列x1n和x2n的響應(yīng),則輸入xn=ax1n+bx2n的輸出響應(yīng)為yn=ay1n+by2n式中疊加性質(zhì)對(duì)任意常數(shù)a和b以及任意輸入x1n和x2n都成立。反之,則系統(tǒng)稱之為非線性。例如,下列程序% yn-0.4yn-1+0.75yn-2=2.2403xn+2.4908xn-1+2.2403xn-2n=0:40;a=2; b=-3;x1=cos(2*pi*0.1*n);x2=sin(2*pi*0.1*n);x=a*x1+b*x2;num=2.2403

14、2.4908 2.2403; den=1 -0.4 0.75;ic=0 0; %設(shè)置零初始條件y1=filter(num,den,x1,ic); %計(jì)算輸出y1ny2=filter(num,den,x2,ic); %計(jì)算輸出y2ny=filter(num,den,x,ic); %計(jì)算輸出ynyt=a*y1+b*y2;d=y-yt; %計(jì)算差值輸出dn%畫出輸出和差信號(hào)subplot(3,1,1); stem(n,y); ylabel(振幅);title(加權(quán)輸入:acdot x_1n+bcdot x_2n的輸出);subplot(3,1,2); stem(n,yt); ylabel(振幅);t

15、itle(加權(quán)輸出:acdot y_1n+bcdot y_2n);subplot(3,1,3); stem(n,d);xlabel(時(shí)間序號(hào) n);ylabel(振幅); title(差信號(hào));可產(chǎn)生對(duì)于離散時(shí)不變系統(tǒng),若y1n是x1n的響應(yīng),則輸入xn=x1n-n0的輸出響應(yīng)為yn=y1n-n0式中n0時(shí)任意整數(shù)。上面的輸入輸出關(guān)系,對(duì)任意輸入序列及其相應(yīng)的輸出成立。反之,則系統(tǒng)稱之為時(shí)變的。例如,下列程序% yn-0.4yn-1+0.75yn-2=2.2403xn+2.4908xn-1+2.2403xn-2clf;n=0:40;d=10;a=3.0;b=-2;x=a*cos(2*pi*0.

16、1*n)+b*sin(2*pi*0.1*n);xd=zeros(1,d) x;num=2.2403 2.4908 2.2403;den=1 -0.4 0.75;ic=0 0; %設(shè)置零初始條件y=filter(num,den,x,ic); %計(jì)算輸出ynyd=filter(num,den,xd,ic); %計(jì)算輸出ydnd=y-yd(1+d:41+d); %計(jì)算差值輸出dn%畫出輸出subplot(3,1,1); stem(n,y); ylabel(振幅);title(輸出yn);grid;subplot(3,1,2); stem(n,yt(1:41); ylabel(振幅);title(由于

17、延時(shí)輸入xn,num2str(d),的輸出);grid;subplot(3,1,3); stem(n,d); xlabel(時(shí)間序號(hào) n);ylabel(振幅);title(差值信號(hào));grid;可產(chǎn)生結(jié)果離散時(shí)間系統(tǒng)的仿真:線性和非線性系統(tǒng)、時(shí)變和非時(shí)變系統(tǒng)的仿真離散系統(tǒng)其輸入、輸出關(guān)系可用以下差分方程描述:輸入信號(hào)分解為沖激信號(hào)記系統(tǒng)單位沖激響應(yīng),則系統(tǒng)響應(yīng)為如下的卷積計(jì)算式:當(dāng) 時(shí),hn是有限長(zhǎng)度的(n:0,m),稱系統(tǒng)為fir系統(tǒng);反之,稱系統(tǒng)為iir系統(tǒng)。1.3 離散時(shí)間系統(tǒng)的頻域分析序列xn 的dtft定義:在matlab中,可用freqz計(jì)算出離散時(shí)間系統(tǒng)的頻率響應(yīng)。可用下列程序

18、計(jì)算差分方程y(n)+0.7y(n-1)-0.45y(n-2)-0.6y(n-3)=0.8x(n)-0.44x(n-1)+0.36x(n-2)+0.02x(n-3) 的單位脈沖響應(yīng):% x(n)=zeros(1,n-1),0=nws; (2)低通濾波器:wp和ws為一元矢量且wpws; (3)帶通濾波器:wp和ws為二元矢量且wpws,如wp=0.1,0.8,ws=0.2,0.7。契比雪夫i型iir濾波器的設(shè)計(jì): 在期望通帶下降斜率大的場(chǎng)合,應(yīng)使用橢圓濾波器或契比雪夫?yàn)V波器。在matlab下可使用cheby1函數(shù)設(shè)計(jì)出契比雪夫i型iir濾波器。 cheby1函數(shù)可設(shè)計(jì)低通、高通、帶通和帶阻契比

19、雪夫i型濾iir波器,其通帶內(nèi)為等波紋,阻帶內(nèi)為單調(diào)。契比雪夫i型的下降斜度比ii型大,但其代價(jià)是通帶內(nèi)波紋較大。 cheby1函數(shù)的用法為:b,a=cheby1(n,rp,wn,/ftype/) ,在使用cheby1函數(shù)設(shè)計(jì)iir濾波器之前,可使用cheblord函數(shù)求出濾波器階數(shù)n和截止頻率wn。cheblord函數(shù)可在給定濾波器性能的情況下,選擇契比雪夫i型濾波器的最小階和截止頻率wn。 cheblord函數(shù)的用法為:n,wn=cheblord(wp,ws,rp,rs) ,其中wp和ws分別是通帶和阻帶的拐角頻率(截止頻率),其取值范圍為0至1之間。當(dāng)其值為1時(shí)代表采樣頻率的一半。rp和

20、rs分別是通帶和阻帶區(qū)的波紋系數(shù)。例如,下列程序可實(shí)現(xiàn)一個(gè)巴特沃茲低通數(shù)字濾波器的設(shè)計(jì)wp=100*2*pi;ws=200*2*pi;rp=2; rs=15;fs=500; ts=1/fs;n,wn=buttord(wp,ws,rp,rs,s);z,p,k=buttap(n);bap,aap=zp2tf(z,p,k);b,a=lp2lp(bap,aap,wn);bz,az=bilinear(b,a,fs);h,w=freqz(bz,az);subplot(211);plot(w*fs/(2*pi),abs(h); grid xlabel(頻率/hz); ylabel(頻率響應(yīng)幅度);運(yùn)行可得到

21、:3.3有限沖激響應(yīng)(fir)數(shù)字濾波器的設(shè)計(jì)數(shù)字濾波器的設(shè)計(jì)是數(shù)字信號(hào)處理中的一個(gè)重要內(nèi)容。數(shù)字濾波器設(shè)計(jì)包括fir(有限單位脈沖響應(yīng))濾波器與iir(無限單位脈沖響應(yīng))濾波器兩種。 與iir濾波器相比,fir濾波器在保證幅度特性滿足技術(shù)要求的同時(shí),很容易做到嚴(yán)格的線性相位特性。設(shè)fir濾波器單位脈沖響應(yīng)h(n)長(zhǎng)度為n,其系統(tǒng)函數(shù)為h(z),h(z)是z1的n1次多項(xiàng)式,它在z平面上有n1個(gè)零點(diǎn),原點(diǎn)z=0是n1階重極點(diǎn),因此h(z)是永遠(yuǎn)穩(wěn)定的。穩(wěn)定和線性相位特性是fir濾波器突出的優(yōu)點(diǎn)。 fir濾波器的設(shè)計(jì)任務(wù)是選擇有限長(zhǎng)度的h(n)。使傳輸函數(shù)h(z)滿足技術(shù)要求。fir濾波器的設(shè)計(jì)

22、方法有多種,如窗函數(shù)法、頻率采樣法及其它各種優(yōu)化設(shè)計(jì)方法,本實(shí)驗(yàn)介紹窗函數(shù)法的fir濾波器設(shè)計(jì)。 窗函數(shù)法是使用矩形窗、三角窗、巴特利特窗、漢明窗、漢寧窗和布萊克曼窗等設(shè)計(jì)出標(biāo)準(zhǔn)響應(yīng)的高通、低通、帶通和帶阻fir濾波器。 (1)firl函數(shù)的使用 在matlab下設(shè)計(jì)標(biāo)準(zhǔn)響應(yīng)fir濾波器可使用firl函數(shù)。firl函數(shù)以經(jīng)典方法實(shí)現(xiàn)加窗線性相位fir濾波器設(shè)計(jì),它可以設(shè)計(jì)出標(biāo)準(zhǔn)的低通、帶通、高通和帶阻濾波器。firl函數(shù)的用法為: b=firl(n,wn,/ftype/,window) 各個(gè)參數(shù)的含義如下: b濾波器系數(shù)。對(duì)于一個(gè)n階的fir濾波器,其n+1個(gè)濾波器系數(shù)可表示為:b(z)=b(

23、1)+b(2)z1+b(n+1)zn。n濾波器階數(shù)。 wn截止頻率,0wn1,wn=1對(duì)應(yīng)于采樣頻率的一半。當(dāng)設(shè)計(jì)帶通和帶阻濾波器時(shí),wn=w1 w2,w1w2。ftype當(dāng)指定ftype時(shí),可設(shè)計(jì)高通和帶阻濾波器。ftype=high時(shí),設(shè)計(jì)高通fir濾波器;ftype=stop時(shí)設(shè)計(jì)帶阻fir濾波器。低通和帶通fir濾波器無需輸入ftype參數(shù)。 window窗函數(shù)。窗函數(shù)的長(zhǎng)度應(yīng)等于fir濾波器系數(shù)個(gè)數(shù),即階數(shù)n+1。 (2)窗函數(shù)的使用 在matlab下,這些窗函數(shù)分別為: 1矩形窗:w=boxcar(n),產(chǎn)生一個(gè)n點(diǎn)的矩形窗函數(shù)。 2三角窗:w=triang(n),產(chǎn)生一個(gè)n點(diǎn)的三

24、角窗函數(shù)。 3巴特利特窗:w=bartlett(n),產(chǎn)生一個(gè)n點(diǎn)的巴特利特窗函數(shù)。 4漢明窗:w=hamming(n),產(chǎn)生一個(gè)n點(diǎn)的漢明窗函數(shù)。 5漢寧窗:w=hanning(n),產(chǎn)生一個(gè)n點(diǎn)的漢寧窗函數(shù)。6布萊克曼窗:w=blackman(n),產(chǎn)生一個(gè)n點(diǎn)的布萊克曼窗函數(shù)。 7凱澤窗:w=kaiser(n,beta),產(chǎn)生一個(gè)n點(diǎn)的凱澤窗數(shù)。8契比雪夫窗:w=chebwin(n,r)產(chǎn)生一個(gè)n點(diǎn)的契比雪夫窗函數(shù)。下列程序可演示常用窗函數(shù)及其頻譜特性n=31;n=0:1:(n-1);%矩形窗w_box=boxcar(n);hbox,w=freqz(w_box,1);subplot(4,

25、2,1);stem(n,w_box);xlabel(n);ylabel(矩形窗);subplot(4,2,2);plot(w/pi,20*log10(abs(hbox)/abs(hbox(1);ylabel(矩形窗頻譜);%三角窗w_tri=triang(n);htri,w=freqz(w_tri,1);subplot(4,2,3);stem(n,w_tri);xlabel(n);ylabel(三角窗);subplot(4,2,4);plot(w/pi,20*log10(abs(htri)/abs(htri(1);ylabel(三角窗頻譜);%漢寧窗w_han=hanning(n);hhan,

26、w=freqz(w_han,1);subplot(4,2,5);stem(n,w_han);xlabel(n);ylabel(漢寧窗);subplot(4,2,6);plot(w/pi,20*log10(abs(hhan)/abs(hhan(1);ylabel(漢寧窗頻譜);%漢明窗w_ham=hamming(n);hham,w=freqz(w_ham,1);subplot(4,2,7);stem(n,w_ham);xlabel(n);ylabel(漢明窗);subplot(4,2,8);plot(w/pi,20*log10(abs(hham)/abs(hham(1);ylabel(漢明窗頻譜

27、);運(yùn)行得到:下列程序可實(shí)現(xiàn)一個(gè)有限沖激響應(yīng)(fir)數(shù)字濾波器的設(shè)計(jì)% 通帶邊緣頻率:wp1=0.45*pi,wp2=0.65*pi,通帶峰值起伏:rp=40dbwp1=0.45*pi;wp2=0.65*pi;ws1=0.3*pi;ws2=0.75*pi;rp=1;rs=40;width=min(wp1-ws1),(ws2-wp2);n=ceil(11*pi/width)+1;n=0:1:(n-1); a=(n-1)/2; m=n-a+eps;w1=(wp1+ws1)/2;wh=(ws2+wp2)/2;hd=(sin(wh*m)-sin(w1*m)./(pi*m);.w_bla=(black

28、man(n);h=hd.*w_bla;h,w=freqz(h,1);subplot(2,1,1); stem(n,h);ylabel(h(n); title(脈沖響應(yīng));subplot(2,1,2); plot(w/pi,20*log10(abs(h)/max(h);xlabel(頻率); ylabel(幅頻響應(yīng)); title(濾波器頻響特性);運(yùn)行得到:4 綜合應(yīng)用舉例4.1 語音信號(hào)處理語音信號(hào)處理綜合運(yùn)用了數(shù)字信號(hào)處理的理論知識(shí),對(duì)信號(hào)進(jìn)行計(jì)算及頻譜分析,設(shè)計(jì)濾波器,并對(duì)含噪信號(hào)進(jìn)行濾波。具體分為以下步驟:(1)語音信號(hào)的采集:利用windows下的錄音機(jī),錄制一段話音。然后在matl

29、ab軟件平臺(tái)下,利用函數(shù)wavread對(duì)語音信號(hào)進(jìn)行采樣,播放語音信號(hào),并繪制原始語音信號(hào);(2)對(duì)原始信號(hào)加入噪聲:對(duì)原始語音信號(hào)加入s=sin(2*pi*f*ts*n)的噪聲,采樣后可知fs = 16000,選擇f = 2500,播放加入噪聲信號(hào)的語音信號(hào),并繪制噪聲信號(hào)和含噪語音信號(hào);(3)頻譜分析:分別對(duì)原始語音信號(hào),噪聲信號(hào)和含噪聲的語音信號(hào)進(jìn)行頻譜分析,并繪出各頻譜圖;(4)設(shè)計(jì)濾波器:計(jì)算濾波器的性能指標(biāo),設(shè)計(jì)濾波器,繪制濾波器的特性曲線;(5)濾波器濾波:用自己設(shè)計(jì)的濾波器對(duì)采集的信號(hào)進(jìn)行濾波,得出濾波后信號(hào)的時(shí)域波形和頻譜,并對(duì)濾波前后的信號(hào)進(jìn)行對(duì)比,分析信號(hào)的變化,并回放語

30、音信號(hào),感覺濾波前后的聲音有變化。(6) 對(duì)原始信號(hào)進(jìn)行整數(shù)倍抽取,比較抽取前后的頻譜圖(7)對(duì)原始信號(hào)進(jìn)行整數(shù)倍內(nèi)插,比較原始信號(hào)頻譜,內(nèi)插零值時(shí)的頻譜和濾波后的頻譜圖4.2 電話撥號(hào)音的合成與識(shí)別雙音多頻 dtmf( dual tone multi-frequency )信號(hào),是用兩個(gè)特定的單音頻率信號(hào)的組合來代表數(shù)字或功能。在 dtmf 電話機(jī)中有 16 個(gè)按鍵,其中 10 個(gè)數(shù)字鍵 0 9 , 6 個(gè)功能鍵 * 、 # 、 a 、 b 、 c 、 d 。其中 12 個(gè)按鍵是我們比較熟悉的按鍵,另外由第 4 列確定的按鍵作為保留,作為功能鍵留為今后他用。 根據(jù) ccitt 建議,國際上采

31、用 697hz 、 770hz 、 852hz 、 94lhz 低頻群及 1209hz 、 1336hz 、 1477hz 、 1633hz 高頻群。從低頻群和高頻群任意各抽出一種頻率進(jìn)行組合,共有 16 種組合,代表 16 種不同的數(shù)字鍵或功能,每個(gè)按鍵唯一地由一組行頻和列頻組成,如下表所示。利用 matlab 軟件能夠利用矩陣不同的基頻合成 0 9 不同按鍵的撥號(hào)音,并能夠?qū)Σ煌膿芴?hào)音加以正確的識(shí)別,實(shí)現(xiàn)由撥號(hào)音解析出電話號(hào)碼的過程。進(jìn)一步利用matlab 中的圖形用戶界面gui 做出簡(jiǎn)單的圖形操作界面。從而實(shí)現(xiàn)對(duì)電話撥號(hào)音系統(tǒng)的簡(jiǎn)單的實(shí)驗(yàn)仿真。具體實(shí)現(xiàn)步驟如下:(1)圖形電話撥號(hào)面板的

32、制作 利用 gui 圖形用戶界面設(shè)計(jì)工具制作電話撥號(hào)面板,把 dtmf 信號(hào)和電話機(jī)的鍵盤矩陣對(duì)應(yīng)起來。其中選用我們熟悉的 10 個(gè)數(shù)字鍵 0 9 , 2 個(gè)功能鍵“ * ”、“”,另外為了方針方便,添加信號(hào)識(shí)別鍵和復(fù)位鍵。每個(gè)按鍵可用 ( push button )添加。 最終利用 gui 圖形用戶界面設(shè)計(jì)工具生成的圖形電話撥號(hào)面板用于撥號(hào)音的合成產(chǎn)生部分,如下圖所示。這里將其保存為untitle.fig文件。 (2)dtmf 信號(hào)的產(chǎn)生合成現(xiàn)在將對(duì)上節(jié)制作的圖形電話撥號(hào)面板上的各控件單位的動(dòng)作和變化進(jìn)行設(shè)置,即對(duì)untitle.m 文件進(jìn)行編輯。其主要的功能是使對(duì)應(yīng)的按鍵,按照表中的對(duì)應(yīng)關(guān)

33、系產(chǎn)生相應(yīng)的撥號(hào)音,完成對(duì)應(yīng)行頻及列頻的疊加輸出。此外,對(duì)于圖形界面的需要,還要使按鍵的號(hào)碼數(shù)字顯示在撥號(hào)顯示窗口中。 鑒于 ccitt 對(duì) dtmf 信號(hào)規(guī)定的指標(biāo),這里每個(gè)數(shù)字信號(hào)取 1000 個(gè)采樣點(diǎn)模擬按鍵信號(hào),并且每?jī)蓚€(gè)數(shù)字之間用 100 個(gè) 0 來表示間隔來模擬靜音。以便區(qū)別連續(xù)的兩個(gè)按鍵信號(hào)。間隔的靜音信號(hào)也是在按鍵時(shí)產(chǎn)生的。 以按鍵 0 為例,簡(jiǎn)單介紹撥號(hào)音產(chǎn)生的過程: % 按鍵 0 的響應(yīng)函數(shù) function varargout = pushbutton0_callback(h, eventdata, handles, varargin) n=1:1000; % 每個(gè)數(shù)字

34、1000 個(gè)采樣點(diǎn)表示 d0=sin(0.7217*n)+sin(1.0247*n); % 對(duì)應(yīng)行頻列頻疊加 n0=strcat(get(handles.edit1,string),0); % 獲取數(shù)字號(hào)碼 set(handles.edit1,string,n0); % 顯示號(hào)碼 space=zeros(1,100); %100 個(gè) 0 模擬靜音信號(hào) global num phone=num,d0; num=phone,space; % 存儲(chǔ)連續(xù)的撥號(hào)音信號(hào) wavplay(d0,8192); % 產(chǎn)生撥號(hào)音 程序解釋: num 為定義的全局變量,用于存儲(chǔ)連續(xù)的撥號(hào)音( dtmf )信號(hào),包括

35、數(shù)字信號(hào)音以及靜音信號(hào)。 d0=sin(0.7217*n)+sin(1.0247*n) 中的行頻與列頻是由表 1 中 0 鍵對(duì)應(yīng)的, 計(jì)算得出,已知聲音取樣頻率 則取樣后,對(duì)于保留的兩個(gè)功能鍵“ * ”、“”,按照現(xiàn)行鍵盤式撥號(hào)電話的習(xí)慣,將“ * ”作為刪除鍵,“”作為確認(rèn)鍵?!?* ”刪除鍵的作用是將前面撥錯(cuò)的號(hào)碼刪除退回,表現(xiàn)為將顯示窗口已經(jīng)顯示的錯(cuò)誤號(hào)碼退回一位數(shù)字,并且將連續(xù)撥號(hào)音信號(hào)的存儲(chǔ)單元 num 中退回一位撥號(hào)音信號(hào)和靜音信號(hào)。刪除可以進(jìn)行連續(xù)的操作。“”確認(rèn)鍵的作用是將前面撥過的號(hào)碼進(jìn)行確認(rèn)保留,意味著此時(shí)連續(xù)撥號(hào)音信號(hào)的存儲(chǔ)單元 num 中的信號(hào)即為最后用于識(shí)別的連續(xù)撥號(hào)

36、音 dtmf 信號(hào),并在顯示窗口中顯示“”號(hào)作為標(biāo)記。 % 刪除鍵的響應(yīng)函數(shù) function varargout = pushbuttonback_callback(h, eventdata, handles, varargin) n=1:1000; num=get(handles.edit1,string); l=length(num); n11=strrep(num,num,num(1:l-1); %去掉末尾號(hào)碼在面板上的顯示 d11=sin(0.7217*n)+sin(0.9273*n); set(handles.edit1,string,n11); global num l=length(num); num=num(1:l-1100); %刪除末尾號(hào)碼在撥號(hào)音信號(hào)中的存儲(chǔ) wavplay(d11,8192); (3)dtmf 信號(hào)的檢測(cè)識(shí)別要實(shí)現(xiàn)電話撥號(hào)音( dtmf )信號(hào)的檢測(cè)識(shí)別,可以通過直接計(jì)算付里葉變換得到輸入信號(hào)的組成頻率。這里采用 fft 算法對(duì)信號(hào)進(jìn)行解碼分析。首先對(duì)接收到的數(shù)字信號(hào)作 fft 分析,計(jì)算出其幅頻譜,進(jìn)而得到功率譜,組成輸入信號(hào)的頻率必定對(duì)應(yīng)功率譜的峰值。對(duì)于連續(xù)的雙音多頻( dtmf )信號(hào),需要把有效的數(shù)字撥號(hào)信號(hào)從靜音間隔信號(hào)中分割提取出來,然后再用 fft 算法對(duì)信號(hào)進(jìn)行解碼分析。 4.3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論