數字信號處理實驗一離散卷積c語言編程
實驗一 離散卷積的C語言編程實驗 DSP實驗室 2005 實驗性質 綜合設計性實驗 實驗目的 1 了解和認識常用的各種信號; 2 掌握卷積的定義和計算方法; 3 掌握在計算機中生成以及繪制信號序列圖的方法。 實驗原理 離散時間系統中幾種常用信號序列: (1)單位沖激序列 實驗原理 (2)單位階躍序列 實驗原理 (3)矩形序列(門序列)RN(n) 實驗原理 (4)指數序列 實指數序列 復指數序列 實驗原理 (5)正弦序列 實驗原理 離散卷積運算,也稱之為卷積和運算,是求解離散時間系統輸出響應的一種重要和有效的方法。 定義為: 實驗內容 1、用C語言編程產生以下時間序列信號: ① x1(n)=n u(n) 0≤n≤31 ② x2(n)=an u(n) 0≤n≤31, 0<a<1 ③ x3(n)= RN(n) 0≤n≤31 ④ 產生自己欲實現的一個任意序列 (參考《數字信號處理實驗教程》69頁序列xa(n)=Ae-anTsin(w0nT)u(n), 0≤n≤31 )。 實驗內容 2、 用C語言編程實現 ① y1(n)=x1(n)*x3(n) ② y2(n)=x2(n)*x3(n) 并在顯示器上觀察到x1(n)、x3(n)和y1(n)、y2(n)四個相應序列。 實驗內容 3、 用C語言編程實現任意離散序列與門序列RN(n)的線性卷積。 設門序列是一個系統的單位采樣響應,求系統的輸出,其長度在256點以內。 實驗內容 *4 、要求用菜單操作實現序列輸入、顯示輸出,用數組和序列兩種顯示形式。 擴展實驗 1.在生成信號x2(n)=an u(n) 0≤n≤31, 0<a<1時,參數a取不同數值,繪制x2(n)序列圖,觀察并分析信號波形。 擴展實驗 1 的傅里葉變換為 編程繪制實現幅頻特性曲線( )。 擴展實驗 2.分析采樣序列的特性。 a.取采樣頻率=1kHz ,即T=1ms 。觀察所得采樣 的幅頻特性 。應當注意,實驗中所得頻譜是用序列 的傅氏變換公式求得的,所以在頻率度量上存在關系: 為數字頻率, 為模擬頻率。 b.改變采樣頻率, =300Hz ,觀察 的變化,并做記錄(打印曲線);進一步降低采樣頻率, =200Hz ,觀察頻譜混疊是否明顯存在,說明原因,并記錄(打印)這時的曲線。 實驗結果 實驗要求 1 實驗前,自己編制C語言程序。 2 實驗中,自己調試程序,并保存信號波形,分析屏幕繪制的各種信號是否正確,同時準備驗收時回答老師提出的各方面相關問題。 3 實驗后,撰寫實驗報告和心得體會。 4 參考《數字信號處理實驗教程》第四章(基礎理論實驗)。 實驗程序 #include #include #include #include "msp.h" void mcmpdft(complex x[],complex y[],int n,int isign) { /*---------------------------------------------------------------------- Routinue mcmpdft: Directly to Compute the DFT/IDFT of Complex Data x(n) By DFT definition; in chapter 3. If ISIGN=-1: For Forward Transform; ISIGN=1 : For Inverse Transform. in chapter 3 ----------------------------------------------------------------------*/ complex t,ts,z; float pi2; int m,k; pi2=8.*atan(1.); t.real=0.;t.imag=isign*pi2/n; ts.real=0.0; * * a=0.5 for(m=0;m