2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計任務(wù)書</b></p><p>  題 目:基于重疊相加法圓周卷積的實現(xiàn)</p><p><b>  初始條件:</b></p><p>  具備數(shù)字信號處理的理論知識;</p><p>  具備Matlab編程能力;</p><p&g

2、t;  分析重疊相加法的圓周卷積的原理;</p><p>  提供編程所需要的計算機一臺</p><p>  要求完成的主要任務(wù):(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)</p><p>  1、獨立編寫程序?qū)崿F(xiàn)基于重疊相加法的圓周卷積</p><p>  2、用Matlab驗證程序結(jié)果,并分析重疊相加法的圓周卷積的原理&

3、lt;/p><p>  3、完成符合學校要求的設(shè)計說明書</p><p><b>  時間安排:</b></p><p>  一周,其中3天程序設(shè)計,2天程序調(diào)試</p><p>  指導教師簽名: 年 月 日</p><p>  系主任(或責任

4、教師)簽名: 年 月 日</p><p><b>  目錄</b></p><p><b>  摘要I</b></p><p><b>  1 軟件基礎(chǔ)1</b></p><p>  1.1 MATLAB介紹1</p><

5、;p>  1.2 MATLAB的應用2</p><p><b>  2 理論基礎(chǔ)3</b></p><p>  2.1 圓周卷積原理3</p><p>  2.2重疊相加法4</p><p><b>  3 程序設(shè)計6</b></p><p>  3.1 程序

6、設(shè)計思路6</p><p>  3.2程序設(shè)計流程圖7</p><p><b>  3.3方案比較8</b></p><p><b>  4 程序代碼9</b></p><p>  5 程序運行結(jié)果與分析11</p><p><b>  心得體會12&l

7、t;/b></p><p><b>  參考文獻13</b></p><p><b>  摘要</b></p><p>  MATLAB是矩陣實驗室(Matrix Laboratory)的簡稱,是美國MathWorks公司出品的商業(yè)數(shù)學軟件,主要用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算等領(lǐng)域。本次課程設(shè)計將通

8、過MATLAB軟件進行重疊相加法圓周卷積的設(shè)計,并對其具體過程進行分析。</p><p>  關(guān)鍵詞:MATLAB 重疊相加法 圓周卷積1 軟件基礎(chǔ)</p><p>  1.1 MATLAB介紹</p><p>  MATLAB是由美國mathworks公司發(fā)布的主要面對科學計算、可視化以及交互式程序設(shè)計的高科技計算環(huán)境。它將數(shù)值分析、矩陣計算、科學數(shù)據(jù)可視化以及非

9、線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學研究、工程設(shè)計以及必須進行有效數(shù)值計算的眾多科學領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。</p><p>  Matlab和Mathematica、Maple并稱為三大數(shù)學軟件。它在數(shù)學類科技應用軟件中在數(shù)值計算方面首屈一指。MAT

10、LAB可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接MATLAB開發(fā)工作界面、連接其他編程語言的程序等,主要應用于工程計算、控制設(shè)計、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。</p><p>  MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達式與數(shù)學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,F(xiàn)ORTRAN等語言完成相同的事情簡捷得多,并且MATLAB也吸

11、收了像Maple等軟件的優(yōu)點,使MATLAB成為一個強大的數(shù)學軟件。在新的版本中也加入了對C,F(xiàn)ORTRAN,C++ ,JAVA的支持??梢灾苯诱{(diào)用,用戶也可以將自己編寫的實用程序?qū)氲組ATLAB函數(shù)庫中方便自己以后調(diào)用,此外許多的MATLAB愛好者都編寫了一些經(jīng)典的程序,用戶可以直接進行下載就可以使用。</p><p>  MATLAB具有以下特點:</p><p>  1.高效的數(shù)值

12、計算及符號計算功能,能使用戶從繁雜的數(shù)學運算分析中解脫出來;</p><p>  2.具有完備的圖形處理功能,實現(xiàn)計算結(jié)果和編程的可視化;</p><p>  3.友好的用戶界面及接近數(shù)學表達式的自然化語言,使學者易于學習和掌握;</p><p>  4.功能豐富的應用工具箱,為用戶提供了大量方便實用的處理工具。</p><p>  1.2

13、MATLAB的應用</p><p>  MATLAB 產(chǎn)品族可以用來進行以下各種工作:   </p><p><b>  ● 數(shù)值分析   </b></p><p>  ● 數(shù)值和符號計算   </p><p>  ● 工程與科學繪圖   </p><p>  ● 控制系統(tǒng)的設(shè)計與仿真   <

14、;/p><p>  ● 數(shù)字圖像處理 技術(shù)   </p><p>  ● 數(shù)字信號處理 技術(shù)   </p><p>  ● 通訊系統(tǒng)設(shè)計與仿真 </p><p>  ● 財務(wù)與金融工程   </p><p>  MATLAB 的應用范圍非常廣,包括信號和圖像處理、通訊、控制系統(tǒng)設(shè)計、測試和測量、財務(wù)建模和分析以及計算生物學

15、等眾多應用領(lǐng)域。附加的工具箱(單獨提供的專用 MATLAB 函數(shù)集)擴展了 MATLAB 環(huán)境,以解決這些應用領(lǐng)域內(nèi)特定類型的問題。2 理論基礎(chǔ)</p><p>  2.1 圓周卷積原理</p><p>  對兩個N點序列和,除了可以做線性卷積外,還有一種很重要的卷積運算,就是圓周卷積。</p><p><b>  令</b></p>

16、;<p>  則圓周卷積結(jié)果長度不變,為N。</p><p>  由上式可以得出圓周卷積與周期卷積的關(guān)系,就是有限長序列圓周卷積結(jié)果的周期延拓,等于它們周期延拓后的周期卷積。也就是說,周期卷積的主值序列,是各周期序列主值序列的圓周卷積。</p><p>  圓周卷積的實現(xiàn)步驟如下:</p><p>  若、分別是長度為N、M的序列則與線性卷積至多M+N

17、-1個非零值,如果L<M+N-1則周期延拓時必然會有一部分非零值發(fā)生混疊;只有當L>M+N-1時,周期延拓才不會發(fā)生混疊。</p><p>  之所以討論用圓周卷積來計算線性卷積的條件,是因為圓周卷積可在頻域下利用DFT求得,從而可采用DFT的快速算法FFT來計算,這樣就可以利用FFT來計算線性卷積,大大提高運算效率。</p><p><b>  2.2重疊相加法&l

18、t;/b></p><p>  在實際應用中利用FFT來計算兩個序列的圓周卷積從而實現(xiàn)計算其線性卷積,但是常遇到的問題是參加卷積的兩個序列的長度相差較大,這樣長度小的序列就需要補很多的零點,這樣就需要打的存儲量,運算時間也會變長。所以常用到的解決方法有兩種,其中一種就是重疊相加法。</p><p>  h(n)長度為N,x(n)長度為無限長,</p><p>

19、  x(n)取M點,且與N盡量接近</p><p>  重疊相加法的卷積示意圖如下:</p><p>  重疊相加法的步驟如下</p><p> ?。?)將h(n)補零延長到L =M+ N -1,并計算長為L的FFT,得到 H(k)。</p><p>  (2)分別將xk(n)補零延長到L =M+ N -1,并計算長為L的FFT,得到 Xk(

20、k)</p><p> ?。?)計算,并求長為L的反變換,即</p><p> ?。?)將yk(n)的重疊部分相加,最后得到結(jié)果為</p><p><b>  3 程序設(shè)計</b></p><p>  由以上原理可以設(shè)計程序利用FFT算法來實現(xiàn)基于重疊相加法的圓周卷積。</p><p>  3.1

21、 程序設(shè)計思路</p><p>  函數(shù)juanji(x1,x2,L)的設(shè)計:</p><p>  x1(n)進行N點快速傅里葉變換得X1k</p><p>  x2(n)進行N點快速傅里葉變換得X2k</p><p>  進行頻域相乘Yk=X1k*X2k</p><p>  對Yk進行反變換得到時域卷積結(jié)果y(n)&

22、lt;/p><p>  函數(shù)chongdie(x,h,N)的設(shè)計:</p><p><b>  方案1:</b></p><p> ?。?)首先取長序列x(n)進行分段的長度N,以使其分段后的長度與較短的相近</p><p> ?。?)確定圓周卷積的周期L</p><p> ?。?)填充序列使得循環(huán)中

23、對序列的索引不會超出范圍</p><p><b>  (4)確定分段數(shù)K</b></p><p> ?。?)對序列進行分段調(diào)用juanji()函數(shù)計算圓周卷積</p><p><b> ?。?)各段重疊相加</b></p><p>  (7)取出實際的輸出序列</p><p>

24、;<b>  方案2:</b></p><p> ?。?)首先取圓周卷積的周期L(即進行L點的快速傅里葉變換)</p><p> ?。?)計算每一分段的大小N</p><p> ?。?)填充序列使得循環(huán)中對序列的索引不會超出范圍</p><p><b> ?。?)計算分段數(shù)K</b></p&g

25、t;<p> ?。?)對序列進行分段調(diào)用juanji()函數(shù)計算圓周卷積</p><p><b> ?。?)各段重疊相加</b></p><p>  (7)取出實際的輸出序列</p><p>  3.2程序設(shè)計流程圖</p><p>  整體程序包含主程序與卷積函數(shù)、重疊相加函數(shù)兩大部分。函數(shù)juanji

26、()流程圖如下</p><p>  此函數(shù)用于對X1和X2兩序列進行快速傅里葉變換后進行乘積,之后再進行反變換后恢復到時域結(jié)果。</p><p>  chongdie(x,h,N)函數(shù)流程圖如下:</p><p>  方案1: 方案2:</p><p><b>  3.3方案比較&

27、lt;/b></p><p>  方案1和方案2的區(qū)別在于:在方案1中由已知的長序列x(n)分段大小N、短序列長度M依據(jù)公式計算LN+M-1圓周卷積周期L。而在方案2中由已知的圓周卷積周期L、短序列長度M依據(jù)公式計算長序列x(n)的分段大小。</p><p>  比較這兩種方案可以知道,方案1中如果L直接取L=N+M-1,則L的值不一定是2的n次方,而接下來的要進行的L點快速傅里葉變

28、換中,L的值需要為2的n次方才能正確計算。所以方案1的必須要求取恰當?shù)腘值以使L點滿足要求。方案2中可以直接取L為恰當?shù)闹祻亩鴿M足快速傅里葉變換的要求,所以方案2比方案1的適用范圍更大。</p><p><b>  4 程序代碼</b></p><p><b>  主程序:</b></p><p>  x1=[1,2,3,

29、4,5,5,4,3,2,1];</p><p>  x2=[1,0,1];</p><p><b>  L=8;</b></p><p>  y=chongdie(x1,x2,L);</p><p>  s=1:10;subplot(2,2,1);</p><p>  stem(s,x1)<

30、/p><p>  r=1:3;subplot(2,2,2);</p><p>  stem(r,x2)</p><p>  u=1:13;subplot(2,2,3);</p><p><b>  stem(u,y)</b></p><p>  函數(shù)juanji():</p><p

31、>  function y=juanji(x1,x2,L)</p><p>  if length(x1)>L %如果x1長度大于L則產(chǎn)生錯誤 </p><p>  error('L must not be less than length of x1');</p><p><b>  end &l

32、t;/b></p><p>  if length(x2)>L %如果x2長度大于L則產(chǎn)生錯誤</p><p>  error('L must not be less than length of x2');</p><p><b>  end </b></p><p

33、>  X1k=fft(x1,L); %對x1進行L點FFT計算</p><p>  X2k=fft(x2,L); %對x2進行L點FFT計算</p><p>  Yk=X1k.*X2k; %頻域相乘 </p><p>  y=ifft(Yk);

34、 %反變換得卷積結(jié)果</p><p>  if (all(imag(x1)==0))&(all(imag(x2)==0))</p><p>  y=real(y);</p><p><b>  end</b></p><p>  函數(shù)chongdie():</p><p>&

35、lt;b>  方案1:</b></p><p>  function[y]=chongdie(x,h,N)</p><p>  Lenx=length(x); %取x(n)的長度</p><p>  M=length(h); %取h(n)的長度</p><p>  

36、L=N+M-1; %計算圓周卷積的周期L使其不發(fā)生混疊</p><p>  x=[x,zeros(1,N-1)]; %填充序列使得循環(huán)中對序列的索引不會超出圍</p><p>  K=floor(Lenx/N);</p><p>  y=zeros(1,Lenx+L-1); %確定分段數(shù)K&l

37、t;/p><p>  for i=0:1:K</p><p>  ix=i*N; </p><p>  x_seg=x(ix+1:ix+N); %將x(n)分段</p><p>  y_seg=juanji(x_seg,h,L); %調(diào)用函數(shù)juanji()計算圓周卷積</p>&

38、lt;p>  y(ix+1:ix+L)=y(ix+1:ix+L)+y_seg(1:L); %各段重疊相加</p><p><b>  end</b></p><p>  y=y(1:Lenx+M-1); %取出實際的輸出序列</p><p><b>  方案2:</b></p>

39、;<p>  function[y]=chongdie(x,h,L)</p><p>  Lenx=length(x); %取x(n)的長度</p><p>  M=length(h); %取h(n)的長度</p><p>  N=L-M+1;

40、 %計算分段大小N</p><p>  x=[x,zeros(1,N-1)]; %填充序列使得循環(huán)中對序列的索引不會超出圍</p><p>  K=floor(Lenx/N); %確定分段數(shù)K</p><p>  y=zeros(1,Lenx

41、+L-1);</p><p>  for i=0:1:K</p><p><b>  ix=i*N;</b></p><p>  x_seg=x(ix+1:ix+N); %將x(n)分段</p><p>  y_seg=juanji(x_seg,h,L);

42、 %調(diào)用函數(shù)juanji()計算圓周卷積</p><p>  y(ix+1:ix+L)=y(ix+1:ix+L)+y_seg(1:L); %各段重疊相加</p><p><b>  end</b></p><p>  y=y(1:Lenx+M); %取出實際的輸出序列</p>

43、<p>  5 程序運行結(jié)果與分析</p><p><b>  輸入序列和周期L</b></p><p>  x1=[1,2,3,4,5,5,4,3,2,1];</p><p>  x2=[1,0,1];</p><p><b>  L=8;</b></p><p&

44、gt;  運算結(jié)果:124689986421</p><p>  由程序運行結(jié)果與線性卷積結(jié)果比較可以知道程序計算結(jié)果正確的。</p><p><b>  心得體會</b></p><p>  作為電子信息工程系的學生,數(shù)字信號處理這門課程是其他很多課程的基礎(chǔ),所以學好數(shù)字信號處理這門課是非常重要的。而MATLAB這款軟件

45、對數(shù)字信號處理的建模、編程、分析、實現(xiàn)有極大的幫助作用,所以我們應該掌握使用MATLAB編程來實現(xiàn)對數(shù)字信號的分析處理。</p><p>  此次我得到的課設(shè)題目是:基于重疊相加法圓周卷積的實現(xiàn)。拿到課設(shè)題目后,我仔細研究了與題目相關(guān)的原理,包括線性卷積、周期卷積、圓周卷積、重疊相加法、離散傅里葉變換DFT、快速傅里葉變換FFT等原理知識,弄清楚了它們之間的關(guān)系。通過這次課程設(shè)計,我不僅順利完成課程設(shè)計的要求,而

46、且在課程設(shè)計過程中通過對相關(guān)原理的回顧,對各相關(guān)原理之間的關(guān)系有了脫胎換骨般的認識,也意識到此前學到的理論知識是多么的淺薄。</p><p>  在和同組同學一起討論基于重疊相加法的圓周卷積原理后,我開始了利用MATLAB來實現(xiàn)這個功能。在編寫程序的過程中,我查閱了很多有關(guān)MATLAB的編程知識,通過整合所查閱到的編程知識,結(jié)合先前研究的基于重疊相加法的圓周卷積原理,我設(shè)計了具有此功能的MATLAB函數(shù)。在設(shè)計時

47、我遇到了不少的問題,剛開始時我先設(shè)定分段長度N,然后由N來求卷積周期L。但是在程序運行過程中我發(fā)現(xiàn)算法具有很大的局限性。通過仔細揣摩這其中的問題,原來是我忽略了FFT運算的條件。所以我制定了第二個方案,先設(shè)定卷積的周期L,然后由L來求分段長度N,這樣程序的適用范圍就擴大了。為了提高程序的適用性,我不斷的對程序進行修改和測試,以求能夠達到更好的效果,這個過程讓我體會到了編程解決問題的樂趣。</p><p>  通過

48、本次課程設(shè)計,我對書本知識有了更深刻的理解,并應用課本的理論知識,結(jié)合相關(guān)軟件,設(shè)計解決問題的算法。從而提高了由知識轉(zhuǎn)換為技能的能力,提高了自己的實踐能力。通過與同學的互相溝通,不僅使各自的知識得到了擴充,而且從中得到了很多的啟示,這次課程設(shè)計讓人受益匪淺。</p><p><b>  參考文獻</b></p><p>  【1】《數(shù)字信號處理》,劉泉、闕大順、郭志強

49、編著,電子工業(yè)出版社,2009</p><p>  【2】《信號與系統(tǒng)》,劉泉,江雪梅編著,高等教育出版社,2006</p><p>  【3】《MATLAB從入門到精通》,周建興、豈興明等編,人民郵電出版社,2008</p><p>  【4】《MATLAB實用教程》,徐金明、張孟喜、丁濤編,清華大學出版社,2007</p><p>  【

溫馨提示

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

評論

0/150

提交評論