信號實驗報告( 離散傅里葉變換及其快速算法及IIR數(shù)字濾波器的設(shè)計)_第1頁
信號實驗報告( 離散傅里葉變換及其快速算法及IIR數(shù)字濾波器的設(shè)計)_第2頁
信號實驗報告( 離散傅里葉變換及其快速算法及IIR數(shù)字濾波器的設(shè)計)_第3頁
信號實驗報告( 離散傅里葉變換及其快速算法及IIR數(shù)字濾波器的設(shè)計)_第4頁
信號實驗報告( 離散傅里葉變換及其快速算法及IIR數(shù)字濾波器的設(shè)計)_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第頁信號實驗一離散傅里葉變換及其快速算法實驗?zāi)康恼莆沼嬎阈蛄械碾x散傅里葉變換(FFT)的方法;掌握實現(xiàn)時間抽取快速傅里葉變換(FFT)編程方法;加深對DFT與序列的傅里葉變換和Z變換之間的關(guān)系的理解;復(fù)習復(fù)數(shù)序列的運算方法。程序設(shè)計框圖1、碼位倒置程序框圖2、蝶形圖運算程序框圖實驗程序?qū)嶒灣绦虻脑创a如下:#include"math.h"#include"stdio.h"/*子函數(shù)部分*/voidswap(float*a,float*b)//交換變量子函數(shù){ floatT; T=*a; *a=*b; *b=T;}voidfft(floatA[],floatB[],unsignedM)//數(shù)組A為序列的實部,數(shù)組B為序列的虛部{ unsignedlongN,I,J,K,L,LE,LE1,P,Q,R; floatWr,Wi,W1r,W1i,WTr,WTi,theta,Tr,Ti; N=1<<M; J=0; for(I=0;I<N-1;I++) { if(J>I) { swap(&A[I],&A[J]); swap(&B[I],&B[J]); } K=N>>1; while(K>=2&&J>=K) { J-=K; K>>=1; } J+=K; } for(L=1;L<=M;L++) { LE=1<<L; LE1=LE/2; Wr=1.0; Wi=0.0; theta=(-1)*3.1415926536/LE1; W1r=cos(theta); W1i=sin(theta); for(R=0;R<LE1;R++) { for(P=R;P<N-1;P+=LE) { Q=P+LE1; //基本蝶形圖的復(fù)數(shù)運算 Tr=Wr*A[Q]-Wi*B[Q]; Ti=Wr*B[Q]+Wi*A[Q]; A[Q]=A[P]-Tr; B[Q]=B[P]-Ti; A[P]+=Tr; B[P]+=Ti; } WTr=Wr; WTi=Wi; Wr=WTr*W1r-WTi*W1i; Wi=WTr*W1i+WTi*W1r; } } return;}/*主函數(shù)部分*/voidmain(){ floatA[20],B[20]; chart1,t2,file_name[20]; intM,N,i,iiff; FILE*fp; /*************************************數(shù)據(jù)讀取部分************************************/ printf("請輸入文件名:");//輸入數(shù)據(jù)文件名 scanf("%s",file_name); printf("FFT變換還是IFFT變換?(FFT:1,IFFT:-1):");//輸入變換方式,1為FFT,-1為IFFT scanf("%d",&iiff); while(iiff!=1&&iiff!=-1)//檢錯:檢驗上一步的輸入是否有錯,有錯則重新輸入 { printf("輸入錯誤,請重新輸入!"); printf("FFTorIFFT?(FFT:1,IFFT:-1):"); scanf("%d",&iiff); } fp=fopen(file_name,"r");//打開文件并讀入數(shù)據(jù) fscanf(fp,"%d",&M); N=pow(2,M);//計算序列總數(shù) for(i=0;i<N;i++)//讀取文件中的數(shù)據(jù) { fscanf(fp,"%f%c%c%f",&A[i],&t1,&t2,&B[i]); if(iiff==-1)//根據(jù)FFT或IFFT修正B B[i]=B[i]*-1; if(t2!='j')//檢錯:檢驗讀取格式是否有錯 { printf("輸入格式錯誤\n"); break; } if(t1=='+')//判斷虛部的正負號 B[i]=B[i]; elseif(t1=='-') B[i]=-B[i]; }/****************************************變換部分****************************************/ fft(A,B,M);//FFT變換/**************************************數(shù)據(jù)輸出部分**************************************/ fp=fopen("fft_result.txt","w");//輸出結(jié)果 if(iiff==-1) fprintf(fp,"IFFT變換的輸出結(jié)果是:\n"); else fprintf(fp,"FFT變換的輸出結(jié)果是:\n"); for(i=0;i<N;i++) { if(iiff==-1) //根據(jù)FFT或IFFT修正B { B[i]=B[i]*-1/N; A[i]=A[i]/N; } if(B[i]>=0)//修正虛部的輸出格式 fprintf(fp,"%f+j%f\n",A[i],B[i]); elseif(B[i]<0) fprintf(fp,"%f-j%f\n",A[i],-B[i]); elseif(B[i]==0) fprintf(fp,"%f\n",A[i]); } fclose(fp);}程序運行結(jié)果檢驗1、對序列進行FFT變換輸入文件fft_input.txt:21+j02+j0-1+j04+j0控制臺輸入:請輸入文件名:fft_input.txtFFT變換還是IFFT變換?(FFT:1,IFFT:-1):1輸出文件fft_result.txt:FFT變換的輸出結(jié)果是:6.00000+j0.000002.00000+j2.00000-6.00000+j0.000002.00000+j-2.00000運行結(jié)果分析: 程序運行輸出結(jié)果與計算結(jié)果相同,表示傅里葉正變換(FFT)成功。 2、對序列進行IFFT變換輸入文件ifft_input.txt: 2 6+j0 2+j2 -6+j0 2-j2控制臺輸入: 請輸入文件名:ifft_input.txt FFT變換還是IFFT變換?(FFT:1,IFFT:-1):-1輸出文件fft_result.txt: IFFT變換的輸出結(jié)果是: 1.000000+j0.000000 2.000000-j0.000000 -1.000000+j0.000000 4.000000+j0.000000運行結(jié)果分析: 程序運行輸出結(jié)果與計算結(jié)果相同,表示傅里葉正變換(FFT)成功。

信號實驗二IIR數(shù)字濾波器的設(shè)計實驗?zāi)康恼莆赵O(shè)計IIR數(shù)字濾波器的沖激響應(yīng)不變法;掌握設(shè)計IIR數(shù)字濾波器的雙線性變換法掌握IIR數(shù)字濾波器的實現(xiàn)方法。濾波器設(shè)計過程用雙線性變換法設(shè)計一個IIR低通數(shù)字濾波器,數(shù)字濾波器的設(shè)計指標是取采樣時間,進行預(yù)畸變將上述數(shù)字濾波器的設(shè)計指標變換為模擬濾波器的設(shè)計指標,即采用巴特沃思型逼近形式,因此,設(shè)計的模擬濾波器應(yīng)滿足可得,模擬濾波器的系統(tǒng)函數(shù)為采用雙線性變換法,得數(shù)字濾波器的系統(tǒng)函數(shù)其中 可采用級聯(lián)結(jié)構(gòu)實現(xiàn)該濾波器。實驗程序?qū)嶒灣绦虻脑创a如下:#include"math.h"#include"stdio.h"/*子函數(shù)部分*/voidIIRDF(floatA[],unsignedlongN)//A為待濾波序列,M為序列長度{ unsignedlongn; //賦初值x[0]為x(0),x[1]為x(-1),x[2]為x(-2),同理y1,y2,y floatx[3]={0,0,0},y1[3]={0,0,0},y2[3]={0,0,0},y[3]={0,0,0}; for(n=0;n<N;n++) { x[0]=A[n]; //第一級 y1[0]=1.31432*y1[1]-0.71489*y1[2]+0.08338*x[0]+0.16676*x[1]+0.08338*x[2]; x[2]=x[1]; x[1]=x[0]; //第二級 y2[0]=1.0541*y2[1]-0.37534*y2[2]+0.08338*y1[0]+0.16676*y1[1]+0.08338*y1[2]; y1[2]=y1[1]; y1[1]=y1[0]; //第三級 y[0]=0.94592*y[1]-0.23422*y[2]+0.08338*y2[0]+0.16676*y2[1]+0.08338*y2[2]; y2[2]=y2[1]; y2[1]=y2[0]; y[2]=y[1]; y[1]=y[0]; A[n]=y[0]; }}/*主函數(shù)部分*/voidmain(){ intn,N; floatTs,T; floatx[3][100],x0[3][100]; FILE*fp,*fp1,*fp2,*fp3;/***********************************數(shù)據(jù)輸入部分***********************************/ Ts=0.00125;//輸入序列采樣時間Ts T=0.08;//輸入序列采樣總時間 for(n=0;Ts*n<=T;n++) //生成測試序列 { x[0][n]=4*sin(100*3.1415926*Ts*n);//生成序列1 x0[0][n]=x[0][n]; x[1][n]=4*sin(200*3.1415926*Ts*n);//生成序列2 x0[1][n]=x[1][n]; x[2][n]=4*sin(400*3.1415926*Ts*n);//生成序列3 x0[2][n]=x[2][n]; } N=n;//記錄序列總長度/***********************************IIR濾波部分************************************/ IIRDF(x[0],N);//序列1濾波 IIRDF(x[1],N);//序列2濾波 IIRDF(x[2],N);//序列3濾波/***********************************結(jié)果輸出部分***********************************/ fp1=fopen("x(t)=4sin(100πt).txt","w");//打開輸出文件 fp2=fopen("x(t)=4sin(200πt).txt","w"); fp3=fopen("x(t)=4sin(400πt).txt","w"); fprintf(fp1,"x(t)=4sin(100πt)的IIR濾波的輸出結(jié)果是:\n");//序列1的結(jié)果輸出 for(n=0;n<N;n++) { fprintf(fp1,"%10f%10f\n",x0[0][n],x[0][n]); } fprintf(fp2,"x(t)=4sin(200πt)的IIR濾波的輸出結(jié)果是:\n");//序列2的結(jié)果輸出 for(n=0;n<N;n++) { fprintf(fp2,"%10f%10f\n",x0[1][n],x[1][n]); } fprintf(fp3,"x(t)=4sin(400πt)的IIR濾波的輸出結(jié)果是:\n");//序列3的結(jié)果輸出 for(n=0;n<N;n++) { fprintf(fp3,"%10f%10f\n",x0[2][n],x[2][n]); } fclose(fp1);//關(guān)閉文件 fclose(fp2); fclose(fp3);}程序運行結(jié)果檢驗檢驗數(shù)據(jù)輸入將下列分別位于通帶、過渡帶和阻帶的三個模擬信號數(shù)字式中,為采樣間隔,為記錄時間長度。然后將得到的三個序列、、作為激勵信號分別輸入到所設(shè)計數(shù)字濾波器的輸入端,計算輸出端的響應(yīng)信號、和,觀察序列幅度變化。程序運行結(jié)果程序結(jié)果分別輸出到文件x(t)=4sin(100πt).txt、x(t)=4sin(200πt).txt、x(t)=4sin(400πt).txt中,輸出結(jié)果見附錄一。結(jié)果分析使用matlab對運行結(jié)果作圖分析(程序見附錄二),結(jié)果如下對輸出結(jié)果分析發(fā)現(xiàn),對處于帶通范圍內(nèi)的序列x(t)=4sin(100πt)的采樣結(jié)果經(jīng)過濾波器濾波之后,幅值基本沒有發(fā)生變化,對處于過渡帶范圍內(nèi)的序列x(t)=4sin(200πt)的采樣結(jié)果經(jīng)過濾波器濾波之后,幅值大幅減小,對處于帶阻范圍內(nèi)的序列x(t)=4sin(200πt)的采樣結(jié)果進過濾波器濾波之后,幅值基本為零。說明我們設(shè)計的濾波器工作正常。附錄一IIR濾波輸出結(jié)果序列x(t)=4sin(100πt)序列x(t)=4sin(200πt)序列x(t)=4sin(400πt)濾波前濾波后濾波前濾波后濾波前濾波后0000001.5307340.0008872.8284270.0016440.0023192.8284270.00990440.0175900.0215973.6955180.0537242.8284270.090329-40.09256440.19021900.296509-0.0000010.2419483.6955180.498033-2.8284270.69906440.4307882.8284271.034063-41.2539040.0000010.5525391.5307341.778526-2.8284281.750245-40.52525202.604401-0.0000011.872052-0.0000020.367739-1.5307333.2963432.8284261.38239140.160862-2.8284273.61574740.3218610.000002-0.02986-3.6955183.3842282.828428-0.92806-4-0.16206-42.5503290.000001-1.79539-0.000003-0.1979-3.6955181.214164-2.828426-1.821654-0.13584-2.828428-0.39611-4-0.945750.000003-0.03535-1.530735-1.98372-2.8284290.414599-40.03747-0.000001-3.25623-0.0000021.556292-0.0000040.0695881.530733-3.989482.8284261.86675540.0762672.828426-4.067741.1717750.0000040.0549723.695518-3.495082.828429-0.15127-40.0062524-2.382820.000002-1.37177-0.000005-0.035273.695519-0.92036-2.828425-1.811934-0.039092.8284280.660368-4-1.231050.000005-0.021811.5307352.120863-2.8284290.034567-4-0.012380.0000013.24821-0.0000031.260962-0.000006-0.00502-1.5307323.8816312.8284251.74978140.013906-2.8284263.93220841.2285690.0000060.026185-3.6955183.3943662.8284290.006567-40.012807-42.3474040.000003-1.20516-0.000007-0.00622-3.6955190.945806-2.828425-1.705874-0.00566-2.828429-0.60165-4-1.210760.0000070.001329-1.530735-2.06193-2.82843-0.01455-4-0.00587-0.000002-3.21275-0.0000041.181933-0.000008-0.012991.530732-3.877182.8284241.6810514-0.001212.828426-3.9517141.1947450.0000080.0120173.695517-3.423182.828430.01125-40.0054-2.371330.000004-1.17483-0.000009-0.006353.695519-0.95665-2.828424-1.669354-0.000252.8284290.604501-4-1.184450.0000090.0085311.5307362.073425-2.828431-0.00608-4-0.000270.0000023.225829-0.0000051.174258-0.00001-0.01078-1.5307313.8861422.8284241.6649064-0.00231-2.8284253.95414141.1790130.000010.008993-3.6955173.4199672.8284310.002115-40.001811-42.365370.000005-1.17559-0.000011-0.00838-3.6955190.951115-2.828423-1.663824-0.00064-2.828429-0.60752-4-1.176630.0000110.009472-1.530736-2.07343-2.8284310.000235-40.001246-0.000003-3.22368-0.0000061.176972-0.000012-0.009461.530731-3.883312.8284231.6639594-0.001662.828425-3.9519641.1758280.0000120.0089053.695517-3.419122.828432-0.00139-40.001234-2.365820.000006-1.17792-0.000013-0.009083.695519-0.95231-2.828423-1.664384-0.001152.8284290.60627-4-1.17570.0000130.0093091.5307372.072645-2.8284320.0018

溫馨提示

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

評論

0/150

提交評論