




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名: 易楊 專業(yè)班級(jí): 電信0802 指導(dǎo)教師: 陳德軍 工作單位: 信息工程學(xué)院 題 目:基于重疊相加法圓周卷積的實(shí)現(xiàn)初始條件: 具備數(shù)字信號(hào)處理的理論知識(shí);具備Matlab編程能力;分析重疊相加法的圓周卷積的原理;提供編程所需要的計(jì)算機(jī)一臺(tái)要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說(shuō)明書(shū)撰寫(xiě)等具體要求)1、獨(dú)立編寫(xiě)程序?qū)崿F(xiàn)基于重疊相加法的圓周卷積2、用Matlab驗(yàn)證程序結(jié)果,并分析重疊相加法的圓周卷積的原理3、完成符合學(xué)校要求的設(shè)計(jì)說(shuō)明書(shū)時(shí)間安排:一周,其中3天程序設(shè)計(jì),2天程序調(diào)試指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日目錄摘
2、要I1 軟件基礎(chǔ)11.1 MATLAB介紹11.2 MATLAB的應(yīng)用22 理論基礎(chǔ)32.1 圓周卷積原理32.2重疊相加法43 程序設(shè)計(jì)63.1 程序設(shè)計(jì)思路63.2程序設(shè)計(jì)流程圖73.3方案比較84 程序代碼95 程序運(yùn)行結(jié)果與分析11心得體會(huì)12參考文獻(xiàn)13摘要MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡(jiǎn)稱,是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,主要用于算法開(kāi)發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算等領(lǐng)域。本次課程設(shè)計(jì)將通過(guò)MATLAB軟件進(jìn)行重疊相加法圓周卷積的設(shè)計(jì),并對(duì)其具體過(guò)程進(jìn)行分析。關(guān)鍵詞:MATLAB 重疊相加法 圓周卷積1 軟件基礎(chǔ)1.1 MAT
3、LAB介紹MATLAB是由美國(guó)mathworks公司發(fā)布的主要面對(duì)科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境。它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語(yǔ)言(如C、Fortran)的編輯模式,代表了當(dāng)今國(guó)際科學(xué)計(jì)算軟件的先進(jìn)水平。Matlab和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。MATLAB可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)
4、算法、創(chuàng)建用戶界面、連接MATLAB開(kāi)發(fā)工作界面、連接其他編程語(yǔ)言的程序等,主要應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)處理與通訊、圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用MATLAB來(lái)解算問(wèn)題要比用C,F(xiàn)ORTRAN等語(yǔ)言完成相同的事情簡(jiǎn)捷得多,并且MATLAB也吸收了像Maple等軟件的優(yōu)點(diǎn),使MATLAB成為一個(gè)強(qiáng)大的數(shù)學(xué)軟件。在新的版本中也加入了對(duì)C,F(xiàn)ORTRAN,C+ ,JAVA的支持??梢灾苯诱{(diào)用,用戶也可以將自己編寫(xiě)的實(shí)用程序?qū)氲組ATLAB函數(shù)庫(kù)中方便自己以后調(diào)用,此外許多的MATLAB愛(ài)好者
5、都編寫(xiě)了一些經(jīng)典的程序,用戶可以直接進(jìn)行下載就可以使用。MATLAB具有以下特點(diǎn):1.高效的數(shù)值計(jì)算及符號(hào)計(jì)算功能,能使用戶從繁雜的數(shù)學(xué)運(yùn)算分析中解脫出來(lái);2.具有完備的圖形處理功能,實(shí)現(xiàn)計(jì)算結(jié)果和編程的可視化;3.友好的用戶界面及接近數(shù)學(xué)表達(dá)式的自然化語(yǔ)言,使學(xué)者易于學(xué)習(xí)和掌握;4.功能豐富的應(yīng)用工具箱,為用戶提供了大量方便實(shí)用的處理工具。1.2 MATLAB的應(yīng)用MATLAB 產(chǎn)品族可以用來(lái)進(jìn)行以下各種工作: 數(shù)值分析 數(shù)值和符號(hào)計(jì)算 工程與科學(xué)繪圖 控制系統(tǒng)的設(shè)計(jì)與仿真 數(shù)字圖像處理 技術(shù) 數(shù)字信號(hào)處理 技術(shù) 通訊系統(tǒng)設(shè)計(jì)與仿真 財(cái)務(wù)與金融工程 MATLAB 的應(yīng)用范圍非常廣,包括信號(hào)和
6、圖像處理、通訊、控制系統(tǒng)設(shè)計(jì)、測(cè)試和測(cè)量、財(cái)務(wù)建模和分析以及計(jì)算生物學(xué)等眾多應(yīng)用領(lǐng)域。附加的工具箱(單獨(dú)提供的專用 MATLAB 函數(shù)集)擴(kuò)展了 MATLAB 環(huán)境,以解決這些應(yīng)用領(lǐng)域內(nèi)特定類型的問(wèn)題。2 理論基礎(chǔ)2.1 圓周卷積原理對(duì)兩個(gè)N點(diǎn)序列和,除了可以做線性卷積外,還有一種很重要的卷積運(yùn)算,就是圓周卷積。令則圓周卷積結(jié)果長(zhǎng)度不變,為N。由上式可以得出圓周卷積與周期卷積的關(guān)系,就是有限長(zhǎng)序列圓周卷積結(jié)果的周期延拓,等于它們周期延拓后的周期卷積。也就是說(shuō),周期卷積的主值序列,是各周期序列主值序列的圓周卷積。圓周卷積的實(shí)現(xiàn)步驟如下:補(bǔ)零:按要求使兩序列補(bǔ)零后均為N點(diǎn)周期延拓:將一個(gè)序列按M點(diǎn)
7、延拓為周期序列翻褶:將延拓后的周期序列翻褶取主值序列:對(duì)翻褶后的周期序列取主值 圓周移位:對(duì)此主值序列做圓周移位(n)相乘:每次移位后的序列與另一序列相乘相加:將諸m點(diǎn)(m=0,1m-1)的乘積值相加,即為移位n點(diǎn)后的y(n)值(n=0,1n-1)若、分別是長(zhǎng)度為N、M的序列則與線性卷積至多M+N-1個(gè)非零值,如果L<M+N-1則周期延拓時(shí)必然會(huì)有一部分非零值發(fā)生混疊;只有當(dāng)L>M+N-1時(shí),周期延拓才不會(huì)發(fā)生混疊。之所以討論用圓周卷積來(lái)計(jì)算線性卷積的條件,是因?yàn)閳A周卷積可在頻域下利用DFT求得,從而可采用DFT的快速算法FFT來(lái)計(jì)算,這樣就可以利用FFT來(lái)計(jì)算線性卷積,大大提高運(yùn)
8、算效率。2.2重疊相加法在實(shí)際應(yīng)用中利用FFT來(lái)計(jì)算兩個(gè)序列的圓周卷積從而實(shí)現(xiàn)計(jì)算其線性卷積,但是常遇到的問(wèn)題是參加卷積的兩個(gè)序列的長(zhǎng)度相差較大,這樣長(zhǎng)度小的序列就需要補(bǔ)很多的零點(diǎn),這樣就需要打的存儲(chǔ)量,運(yùn)算時(shí)間也會(huì)變長(zhǎng)。所以常用到的解決方法有兩種,其中一種就是重疊相加法。 h(n)長(zhǎng)度為N,x(n)長(zhǎng)度為無(wú)限長(zhǎng), x(n)取M點(diǎn),且與N盡量接近 x(n)與h(n)的卷積為重疊相加法的卷積示意圖如下:重疊相加法的步驟如下(1)將h(n)補(bǔ)零延長(zhǎng)到L =M+ N -1,并計(jì)算長(zhǎng)為L(zhǎng)的FFT,得到 H(k)。(2)分別將xk(n)補(bǔ)零延長(zhǎng)到L =M+ N -1,并計(jì)算長(zhǎng)為L(zhǎng)的FFT,得到 Xk(k
9、)(3)計(jì)算,并求長(zhǎng)為L(zhǎng)的反變換,即(4)將yk(n)的重疊部分相加,最后得到結(jié)果為3 程序設(shè)計(jì)由以上原理可以設(shè)計(jì)程序利用FFT算法來(lái)實(shí)現(xiàn)基于重疊相加法的圓周卷積。3.1 程序設(shè)計(jì)思路函數(shù)juanji(x1,x2,L)的設(shè)計(jì):(1) x1(n)進(jìn)行N點(diǎn)快速傅里葉變換得X1k(2) x2(n)進(jìn)行N點(diǎn)快速傅里葉變換得X2k(3) 進(jìn)行頻域相乘Yk=X1k*X2k(4) 對(duì)Yk進(jìn)行反變換得到時(shí)域卷積結(jié)果y(n)函數(shù)chongdie(x,h,N)的設(shè)計(jì):方案1:(1)首先取長(zhǎng)序列x(n)進(jìn)行分段的長(zhǎng)度N,以使其分段后的長(zhǎng)度與較短的相近(2)確定圓周卷積的周期L(3)填充序列使得循環(huán)中對(duì)序列的索引不會(huì)
10、超出范圍(4)確定分段數(shù)K(5)對(duì)序列進(jìn)行分段調(diào)用juanji()函數(shù)計(jì)算圓周卷積(6)各段重疊相加(7)取出實(shí)際的輸出序列方案2:(1)首先取圓周卷積的周期L(即進(jìn)行L點(diǎn)的快速傅里葉變換)(2)計(jì)算每一分段的大小N(3)填充序列使得循環(huán)中對(duì)序列的索引不會(huì)超出范圍(4)計(jì)算分段數(shù)K(5)對(duì)序列進(jìn)行分段調(diào)用juanji()函數(shù)計(jì)算圓周卷積(6)各段重疊相加(7)取出實(shí)際的輸出序列3.2程序設(shè)計(jì)流程圖整體程序包含主程序與卷積函數(shù)、重疊相加函數(shù)兩大部分。函數(shù)juanji()流程圖如下開(kāi)始對(duì)x1(n)進(jìn)行FFT運(yùn)算對(duì)x(2)進(jìn)行FFT運(yùn)算頻域相乘:Yk=X1k*X2k對(duì)Yk進(jìn)行反變換得到時(shí)域結(jié)果y(n
11、)結(jié)束 此函數(shù)用于對(duì)X1和X2兩序列進(jìn)行快速傅里葉變換后進(jìn)行乘積,之后再進(jìn)行反變換后恢復(fù)到時(shí)域結(jié)果。chongdie(x,h,N)函數(shù)流程圖如下:方案1: 方案2:開(kāi)始x(n)按長(zhǎng)度N進(jìn)行分段確定圓周卷積的周期L將序列按要求填充確定分段數(shù)K調(diào)用函數(shù)juanji()將各段處理的結(jié)果重疊相加輸出最終結(jié)果結(jié)束開(kāi)始取圓周卷積的周期L計(jì)算每一分段的大小N將序列按要求填充計(jì)算分段數(shù)K調(diào)用函數(shù)juanji()將各段處理的結(jié)果重疊相加輸出最終結(jié)果結(jié)束3.3方案比較方案1和方案2的區(qū)別在于:在方案1中由已知的長(zhǎng)序列x(n)分段大小N、短序列長(zhǎng)度M依據(jù)公式計(jì)算LN+M-1圓周卷積周期L。而在方案2中由已知的圓周卷
12、積周期L、短序列長(zhǎng)度M依據(jù)公式計(jì)算長(zhǎng)序列x(n)的分段大小。比較這兩種方案可以知道,方案1中如果L直接取L=N+M-1,則L的值不一定是2的n次方,而接下來(lái)的要進(jìn)行的L點(diǎn)快速傅里葉變換中,L的值需要為2的n次方才能正確計(jì)算。所以方案1的必須要求取恰當(dāng)?shù)腘值以使L點(diǎn)滿足要求。方案2中可以直接取L為恰當(dāng)?shù)闹祻亩鴿M足快速傅里葉變換的要求,所以方案2比方案1的適用范圍更大。4 程序代碼主程序:x1=1,2,3,4,5,5,4,3,2,1;x2=1,0,1;L=8;y=chongdie(x1,x2,L);s=1:10;subplot(2,2,1);stem(s,x1)r=1:3;subplot(2,2,
13、2);stem(r,x2)u=1:13;subplot(2,2,3);stem(u,y)函數(shù)juanji():function y=juanji(x1,x2,L)if length(x1)>L %如果x1長(zhǎng)度大于L則產(chǎn)生錯(cuò)誤 error('L must not be less than length of x1');end if length(x2)>L %如果x2長(zhǎng)度大于L則產(chǎn)生錯(cuò)誤 error('L must not be less than length of x2');end X1k=fft(x1,L); %對(duì)x1進(jìn)行L點(diǎn)FFT計(jì)算X2k=f
14、ft(x2,L); %對(duì)x2進(jìn)行L點(diǎn)FFT計(jì)算Yk=X1k.*X2k; %頻域相乘 y=ifft(Yk); %反變換得卷積結(jié)果if (all(imag(x1)=0)&(all(imag(x2)=0) y=real(y);end函數(shù)chongdie():方案1:functiony=chongdie(x,h,N)Lenx=length(x); %取x(n)的長(zhǎng)度M=length(h); %取h(n)的長(zhǎng)度L=N+M-1; %計(jì)算圓周卷積的周期L使其不發(fā)生混疊x=x,zeros(1,N-1); %填充序列使得循環(huán)中對(duì)序列的索引不會(huì)超出圍K=floor(Lenx/N);y=zeros(1,Le
15、nx+L-1); %確定分段數(shù)Kfor i=0:1:K ix=i*N; x_seg=x(ix+1:ix+N); %將x(n)分段 y_seg=juanji(x_seg,h,L); %調(diào)用函數(shù)juanji()計(jì)算圓周卷積 y(ix+1:ix+L)=y(ix+1:ix+L)+y_seg(1:L); %各段重疊相加endy=y(1:Lenx+M-1); %取出實(shí)際的輸出序列方案2:functiony=chongdie(x,h,L)Lenx=length(x); %取x(n)的長(zhǎng)度M=length(h); %取h(n)的長(zhǎng)度N=L-M+1; %計(jì)算分段大小Nx=x,zeros(1,N-1); %填充序
16、列使得循環(huán)中對(duì)序列的索引不會(huì)超出圍K=floor(Lenx/N); %確定分段數(shù)Ky=zeros(1,Lenx+L-1);for i=0:1:K ix=i*N; x_seg=x(ix+1:ix+N); %將x(n)分段 y_seg=juanji(x_seg,h,L); %調(diào)用函數(shù)juanji()計(jì)算圓周卷積 y(ix+1:ix+L)=y(ix+1:ix+L)+y_seg(1:L); %各段重疊相加endy=y(1:Lenx+M); %取出實(shí)際的輸出序列5 程序運(yùn)行結(jié)果與分析輸入序列和周期Lx1=1,2,3,4,5,5,4,3,2,1;x2=1,0,1;L=8;運(yùn)算結(jié)果:124689986421
17、由程序運(yùn)行結(jié)果與線性卷積結(jié)果比較可以知道程序計(jì)算結(jié)果正確的。心得體會(huì)作為電子信息工程系的學(xué)生,數(shù)字信號(hào)處理這門(mén)課程是其他很多課程的基礎(chǔ),所以學(xué)好數(shù)字信號(hào)處理這門(mén)課是非常重要的。而MATLAB這款軟件對(duì)數(shù)字信號(hào)處理的建模、編程、分析、實(shí)現(xiàn)有極大的幫助作用,所以我們應(yīng)該掌握使用MATLAB編程來(lái)實(shí)現(xiàn)對(duì)數(shù)字信號(hào)的分析處理。此次我得到的課設(shè)題目是:基于重疊相加法圓周卷積的實(shí)現(xiàn)。拿到課設(shè)題目后,我仔細(xì)研究了與題目相關(guān)的原理,包括線性卷積、周期卷積、圓周卷積、重疊相加法、離散傅里葉變換DFT、快速傅里葉變換FFT等原理知識(shí),弄清楚了它們之間的關(guān)系。通過(guò)這次課程設(shè)計(jì),我不僅順利完成課程設(shè)計(jì)的要求,而且在課程
18、設(shè)計(jì)過(guò)程中通過(guò)對(duì)相關(guān)原理的回顧,對(duì)各相關(guān)原理之間的關(guān)系有了脫胎換骨般的認(rèn)識(shí),也意識(shí)到此前學(xué)到的理論知識(shí)是多么的淺薄。在和同組同學(xué)一起討論基于重疊相加法的圓周卷積原理后,我開(kāi)始了利用MATLAB來(lái)實(shí)現(xiàn)這個(gè)功能。在編寫(xiě)程序的過(guò)程中,我查閱了很多有關(guān)MATLAB的編程知識(shí),通過(guò)整合所查閱到的編程知識(shí),結(jié)合先前研究的基于重疊相加法的圓周卷積原理,我設(shè)計(jì)了具有此功能的MATLAB函數(shù)。在設(shè)計(jì)時(shí)我遇到了不少的問(wèn)題,剛開(kāi)始時(shí)我先設(shè)定分段長(zhǎng)度N,然后由N來(lái)求卷積周期L。但是在程序運(yùn)行過(guò)程中我發(fā)現(xiàn)算法具有很大的局限性。通過(guò)仔細(xì)揣摩這其中的問(wèn)題,原來(lái)是我忽略了FFT運(yùn)算的條件。所以我制定了第二個(gè)方案,先設(shè)定卷積的周期L,然后由L來(lái)求分段長(zhǎng)度N,這樣程序的適用范圍就擴(kuò)大了。為了提高程序的適用性,我不斷的對(duì)程序進(jìn)行修改和測(cè)試,以求能夠達(dá)到更好的效果,這個(gè)過(guò)程讓我體會(huì)到了編程解決問(wèn)題的樂(lè)趣。 通過(guò)本次課程設(shè)計(jì),我對(duì)書(shū)本知識(shí)有了更深刻的理
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 影響化學(xué)反應(yīng)速率的因素教案 (一)
- 企業(yè)培訓(xùn)課件pop海報(bào)
- Photoshop平面設(shè)計(jì)基礎(chǔ) 課件 任務(wù)6.2 珠寶雜志封面
- 英語(yǔ) 九年級(jí)全冊(cè)
- 餐飲店品牌形象保護(hù)與侵權(quán)糾紛處理合同范本
- 海鮮餐廳經(jīng)營(yíng)權(quán)轉(zhuǎn)讓協(xié)議
- 環(huán)保產(chǎn)業(yè)現(xiàn)場(chǎng)安全評(píng)估咨詢服務(wù)協(xié)議
- 成都離婚協(xié)議書(shū)起草與共同財(cái)產(chǎn)分割及債務(wù)分擔(dān)策略
- 企事業(yè)單位內(nèi)部停車場(chǎng)租賃與員工福利合同
- 勞務(wù)派遣考勤考核方案
- 鍛壓設(shè)備安裝工程施工及驗(yàn)收規(guī)范
- 磨煤機(jī)檢修培訓(xùn)課件
- 瑞安市工業(yè)固廢與污泥無(wú)害化處置及資源化利用項(xiàng)目階段性竣工環(huán)境保護(hù)驗(yàn)收?qǐng)?bào)告
- 檢驗(yàn)科對(duì)急診凝血標(biāo)本質(zhì)量不合格原因分析品管圈魚(yú)骨圖柏拉圖
- 中草藥的種植技術(shù)
- 關(guān)于中學(xué)生課余生活的調(diào)研報(bào)告
- 全國(guó)普通高等學(xué)校畢業(yè)生就業(yè)協(xié)議書(shū)
- 皖2015s209 混凝土砌塊式排水檢查井
- 2023火力發(fā)電廠熱工開(kāi)關(guān)量和模擬量控制系統(tǒng)設(shè)計(jì)規(guī)程
- 史記《孔子世家》原文
- 妊娠高血壓綜合征眼底病變
評(píng)論
0/150
提交評(píng)論