信號與系統(tǒng)課程設計報告--循環(huán)卷積和離散卷積的計算機計算_第1頁
已閱讀1頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)字信號處理</b></p><p>  學院 學院</p><p><b>  班級 </b></p><p><b>  學號 </b></p><p><b>  姓名 </b><

2、;/p><p><b>  目錄</b></p><p><b>  一 設計概述</b></p><p>  1 設計題目………………………………………………3</p><p>  2 設計目的………………………………………………3</p><p>  3 具體步驟………………

3、………………………………3</p><p>  4 實現(xiàn)方法………………………………………………4</p><p>  二 設計目標…………………………………………………4</p><p><b>  三 設計內(nèi)容</b></p><p>  1 原理學習………………………………………………4</p>&l

4、t;p>  1.1循環(huán)卷積…………………………………………..5</p><p>  1.2離散卷積…………………………………………..5</p><p>  2 程序流程圖……………………………………………6</p><p>  3 c語言編程與計算</p><p>  3.1 c語言程序………………………………………...7<

5、/p><p>  3.2計算結果…………………………………………..8</p><p><b>  4 驗證計算結果</b></p><p>  4.1 驗算循環(huán)卷積……………………………………9</p><p>  4.2 驗算離散卷積……………………………………9</p><p>  四 體會與感

6、想……………………………………………..10</p><p>  五 參考文獻………………………………………………..10</p><p><b>  一 設計概述</b></p><p>  設計題目: 循環(huán)卷積和離散卷積的計算機計算</p><p>  設計目的:1、自學C語言以及鞏固信號與系統(tǒng)離散卷積與循環(huán)卷積的內(nèi)

7、容;</p><p>  2、培養(yǎng)獨立思考以及靈活應用所學知識的能力;</p><p>  3、培養(yǎng)和掌握正確的設計思想和認真負責的設計態(tài)度;</p><p>  4、自行檢驗與調試出精確、簡便、實用、可靠的設計方法。</p><p>  具體步驟:①仔細分析設計題目、目的及內(nèi)容;</p><p>  ②分析離散卷積與

8、循環(huán)卷積的特點與異同;</p><p>  ③分析計算步驟并畫出流程圖;</p><p>  ④用C語言進行編程并用VC6.0進行演算;</p><p>  ⑤自行計算進行驗算;</p><p> ?、薹治鼋Y果并分享體會</p><p>  運用軟件:office word2003 VC6.0</p>

9、<p>  實現(xiàn)方法: 通過學習課本及參閱相關書籍以及網(wǎng)絡,從理論上分析離散卷積和循環(huán)卷積的特點;學習用Word設計程序流程圖,C語言編程進行計算,并驗證計算結果。</p><p><b>  二 設計目標</b></p><p>  設有兩離散序列和,則兩序列的循環(huán)卷積和離散卷積分別為:</p><p>  畫出計算此兩卷積的程序框

10、圖,并用C語言編寫計算程序,計算出結果。</p><p>  學生用C語言編程,分析計算結果。</p><p><b>  三 設計內(nèi)容</b></p><p>  離散卷積和循環(huán)卷積的計算機計算</p><p><b>  1 原理學習</b></p><p>  卷積關

11、系最重要的一種情況,就是在信號與線性系統(tǒng)或數(shù)字信號處理中的卷積定理。利用該定理,可以將時間域或空間域中的卷積運算等價為頻率域的相乘運算,從而利用FFT等快速算法,實現(xiàn)有效的計算,節(jié)省運算代價。</p><p><b>  1.1 循環(huán)卷積</b></p><p>  循環(huán)卷積比起線性卷積,在運算速度上有很大的優(yōu)越性,它可以采用快速傅里葉變換(FFT)技術,若能利用循

12、環(huán)卷積求線性卷積,會帶來很大的方便。一般情況下,n≧N時x[n]*v[n]并不等于零,x[n]*v[n]的N點DFT和這些值不一致。因此,有必要定義一種卷積運算,使得n=0,1,…,N-1之外的卷積信號x[n]*v[n]等于零,這就引出循環(huán)卷積的概念。離散卷積和循環(huán)卷積之間的唯一區(qū)別是:用折疊位移(模N)信號代替了離散卷積式中的折疊位移信號。</p><p>  對于循環(huán)卷積來說,不僅要知道這兩組數(shù)而且要確定N值

13、。</p><p><b>  1.2離散卷積</b></p><p>  信號與線性系統(tǒng)中,定義x[n],v[n],其卷積為 計算離散卷積時,首先將x[n],v[n]中的離散時間序號n改為i,得到信號x[i],v[i],下一步確定v[n-i]和乘積x[i]v[n-i]。信號v[n-i]是信號v[i]的反折和平移,通過對x[i]v[n-i]中的i求和即可計算出來,式中

14、i取一定范圍的的整數(shù)。</p><p>  計算離散卷積時需要用戶輸入x[n]和v[m]的值,這樣便可以得到所要求的離散卷積的值</p><p>  3 c語言編程與計算</p><p>  3.1 c語言程序</p><p>  #include<stdio.h></p><p>  #include

15、<stdlib.h></p><p>  void discreat();</p><p>  void circle(); </p><p>  void main()</p><p><b>  {int i;</b></p><p>  printf("歡迎使用卷積計

16、算程序\n");</p><p>  printf("請進行選擇,輸入1進行循環(huán)卷積計算,輸入2進行離散卷積計算:");</p><p>  scanf("%d",&i);</p><p>  printf("\n");</p><p>  while(i!=1&a

17、mp;&i!=2)</p><p>  {printf("輸入錯誤,請重新選擇:");</p><p>  scanf("%d",&i);</p><p><b>  }</b></p><p><b>  if(i=1)</b></p&

18、gt;<p><b>  circle();</b></p><p><b>  else</b></p><p>  discreat(),i--;</p><p><b>  if(i=1)</b></p><p>  discreat();</p>

19、;<p><b>  else</b></p><p><b>  circle();</b></p><p>  printf("感謝使用\n");</p><p>  system("pause");</p><p><b>  }

20、</b></p><p>  void circle()</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p><b>  i=j=0;</b></p><p><b>  i

21、nt t;</b></p><p>  float a[100],b[100],c[200];</p><p>  printf("現(xiàn)在計算循環(huán)卷積y\n");</p><p>  printf("請輸入N的值\n");</p><p>  scanf("%d",&

22、;t);</p><p>  printf("請輸入x[n]\n");</p><p>  for(i=0;i<=t-1;i++)</p><p>  scanf("%f",&a[i]);</p><p>  printf("請輸入v[m]\n");</p>

23、<p>  for(i=0;i<=t-1;i++)</p><p>  scanf("%f",&b[i]);</p><p>  for(j=0;j<=t-1;j++)c[j]=0;</p><p>  for(j=0;j<=t-1;j++)</p><p>  for(i=0;i&

24、lt;=t-1;i++)</p><p>  if((j-i)>=0)</p><p>  c[j]+=a[i]*b[j-i];</p><p>  else if((j-i)<0)</p><p>  c[j]+=a[i]*b[j-i+t];</p><p>  printf("循環(huán)卷積y[n]

25、為\n");</p><p>  for(j=0;j<=t-1;j++)</p><p>  printf("y[%d]=%f\n",j,c[j]);</p><p><b>  }</b></p><p>  void discreat()</p><p> 

26、 {int n,m,k,q;</p><p>  n=m=k=q=0;gg</p><p>  static float x[100],y[100],z[200]; </p><p>  printf("計算離散卷積y\n");</p><p>  printf("請輸入

27、x[n]的長度\n");</p><p>  scanf("%d",&n);</p><p>  printf("請輸入v[m]的長度\n");</p><p>  scanf("%d",&m);</p><p>  printf("請輸入x[n]

28、\n");</p><p>  for(k=0;k<=n-1;k++)</p><p>  scanf("%f",&x[k]);</p><p>  printf("請輸入v[m]\n");</p><p>  for(k=0;k<=m-1;k++)</p>

29、<p>  scanf("%f",&y[k]);</p><p>  for(q=0;q<=m+n-2;q++)</p><p>  for(k=0;k<=n-1;k++)</p><p>  if((q-k)>=0)</p><p>  z[q]+=x[k]*y[q-k];</p

30、><p>  printf("離散卷積y[n]為\n");</p><p>  for(q=0;q<=m+n-2;q++)</p><p>  printf("y[%d]=%f\n",q,z[q]);</p><p>  printf("其余值均為0\n");</p>

31、<p><b>  }</b></p><p><b>  3.2計算結果</b></p><p><b>  4 驗證計算結果</b></p><p>  4.1 驗算循環(huán)卷積</p><p>  =x[0]v[0]+x[1]v[2]+x[2]v[1]=11,

32、n=0</p><p>  y[n]=x[n] ③v[m] =x[0]v[1]+x[1]v[0]+x[2]v[2]=11, n=1</p><p>  =x[0]v[2]+x[1]v[1]+x[2]v[0]=14, n=2</p><p>  4.2 驗算離散卷積</p><p><b>  陣列方法:</b><

33、;/p><p>  1 2 3</p><p>  3 2 1</p><p>  3 2 1</p><p><b>  6 4</b></p><p><b>  9</b></p><p&g

34、t;  3 8 14</p><p>  y[0]=3,n=0</p><p>  y[1]=8, n=1</p><p>  y[n]=x[n]*v[n]= y[2]=14, n=2</p><p>  y[3]=8,n=3</p><p>  y[4]=3,n=4</p><p

35、><b>  其他為0</b></p><p>  驗算結果與編程計算結果一致。</p><p><b>  四 體會與感想</b></p><p>  本次課設花了不少心思,主要在細節(jié)問題上不能夠做到一步到位,所以在檢查過程中耗費了不少時間。同時對于C語言的學習,沒有做到穩(wěn)固。所以導致以前學的很多知識都已經(jīng)忘記,不

36、得不又拾起以前的課本。但至少這一次課設讓我溫習了以前的知識也懂得了知識需要時時刻刻去溫習。免得以前的知識白學了,當然,在成功后還是蠻有成就感的。又是一個自己做的成果,很滿足。</p><p><b>  五 參考書目</b></p><p>  1.Fundamentals of Signals and Systems -Using the Web and MATLA

溫馨提示

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

評論

0/150

提交評論