欢迎来到天天文库
浏览记录
ID:35635549
大小:183.50 KB
页数:7页
时间:2019-04-04
《信号分析与处理上机试验报告 》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、信号分析与处理上机试验报告电气化0501李科200502020209实验一快速傅利叶变换的软件实现1.设计程序源代码如下所示:#include"stdio.h"#include"math.h"#include"conio.h"/*清屏命令clrscr()需加载的预处理函数*/#defineswap(a,b)temp=(a);(a)=(b);(b)=temp/*宏定义的交换函数*//*快速傅利叶变换程序,数组A、B分别是带变换序列的实部和虚部ap是变换的类别,ap=1是做FFT;ap=-1是做IFFT*/voidfft(floatA[],fl
2、oatB[],unsignedM,intap){unsignedlongN,I,J,K,L,LE,LE1,P,Q,R;inti;floatWr,Wi,W1r,W1i,WTr,WTi,theta,Tr,Ti,temp;N=pow(2,M);/*N=2M是序列的总长度*/J=0;for(I=0;II){swap(A[I],A[J]);swap(B[I],B[J]);}K=N>>1;/*即k=k/2*/while(K>=2&&J>=K){J-=K;K>>=1;}J+=K;}for(L=1;L<=M;L
3、++)/*外层循环由级数L控制,执行M次*/{LE=1<4、形运算*/{Q=P+LE1;Tr=Wr*A[Q]-Wi*B[Q];Ti=Wr*B[Q]+Wi*A[Q];/*Tr、Ti是的实部和虚部*/A[P]+=Tr;/*即*/B[P]+=Ti;}A[Q]=A[P]-Tr;/*即*/B[Q]=B[P]-Ti;WTr=Wr;/*Wr、Wi是的实部和虚部*/WTi=Wi;/*下面用和差化积公式求的实虚部Wr、Wi*/Wr=WTr*W1r-WTi*W1i;/**/Wi=WTr*W1i+WTi*W1i;/**/}}if(ap==-1){/*ap=-1是做IFFT,应使变换后的序列除以N*/for(i=0;i5、;i++){A[i]/=N;B[i]/=N;}}return;}main(){inti,t,ap;floatA[100],B[100];unsignedM;clrscr();/*清屏*/printf("pleaseinputbianhuanleibie(FFT:1orIFFT:-1):");scanf("%d",&ap);/*输入序列变换的类别*/printf("pleaseinputjishuM:");/*M是级数*/scanf("%d",&M);t=pow(2,M);for(i=0;i6、seinputx(%d):(ReIm)",i);scanf("%f%f",&A[i],&B[i]);/*输入离散序列的实、虚部*/}fft(A,B,M,ap);/*进行FFT(或IFFT)*/printf("*************Result**************");for(i=0;i7、):1pleaseinputjishuM:2pleaseinputx(0):(ReIm)10pleaseinputx(1):(ReIm)20pleaseinputx(2):(ReIm)-10pleaseinputx(3):(ReIm)40*************Result**************X(0):6.00000+j0.00000X(1):2.00000+j2.00000X(2):-6.00000+j0.00000X(3):2.00000+j-2.00000这与例题计算结果相同,表示快速傅利叶正变换成功。2.2将上述做IFFT8、得:pleaseinputbianhuanleibie(FFT:1orIFFT:-1):-1pleaseinputjishuM:2pleaseinputx(0):(ReIm)60
4、形运算*/{Q=P+LE1;Tr=Wr*A[Q]-Wi*B[Q];Ti=Wr*B[Q]+Wi*A[Q];/*Tr、Ti是的实部和虚部*/A[P]+=Tr;/*即*/B[P]+=Ti;}A[Q]=A[P]-Tr;/*即*/B[Q]=B[P]-Ti;WTr=Wr;/*Wr、Wi是的实部和虚部*/WTi=Wi;/*下面用和差化积公式求的实虚部Wr、Wi*/Wr=WTr*W1r-WTi*W1i;/**/Wi=WTr*W1i+WTi*W1i;/**/}}if(ap==-1){/*ap=-1是做IFFT,应使变换后的序列除以N*/for(i=0;i5、;i++){A[i]/=N;B[i]/=N;}}return;}main(){inti,t,ap;floatA[100],B[100];unsignedM;clrscr();/*清屏*/printf("pleaseinputbianhuanleibie(FFT:1orIFFT:-1):");scanf("%d",&ap);/*输入序列变换的类别*/printf("pleaseinputjishuM:");/*M是级数*/scanf("%d",&M);t=pow(2,M);for(i=0;i6、seinputx(%d):(ReIm)",i);scanf("%f%f",&A[i],&B[i]);/*输入离散序列的实、虚部*/}fft(A,B,M,ap);/*进行FFT(或IFFT)*/printf("*************Result**************");for(i=0;i7、):1pleaseinputjishuM:2pleaseinputx(0):(ReIm)10pleaseinputx(1):(ReIm)20pleaseinputx(2):(ReIm)-10pleaseinputx(3):(ReIm)40*************Result**************X(0):6.00000+j0.00000X(1):2.00000+j2.00000X(2):-6.00000+j0.00000X(3):2.00000+j-2.00000这与例题计算结果相同,表示快速傅利叶正变换成功。2.2将上述做IFFT8、得:pleaseinputbianhuanleibie(FFT:1orIFFT:-1):-1pleaseinputjishuM:2pleaseinputx(0):(ReIm)60
5、;i++){A[i]/=N;B[i]/=N;}}return;}main(){inti,t,ap;floatA[100],B[100];unsignedM;clrscr();/*清屏*/printf("pleaseinputbianhuanleibie(FFT:1orIFFT:-1):");scanf("%d",&ap);/*输入序列变换的类别*/printf("pleaseinputjishuM:");/*M是级数*/scanf("%d",&M);t=pow(2,M);for(i=0;i6、seinputx(%d):(ReIm)",i);scanf("%f%f",&A[i],&B[i]);/*输入离散序列的实、虚部*/}fft(A,B,M,ap);/*进行FFT(或IFFT)*/printf("*************Result**************");for(i=0;i7、):1pleaseinputjishuM:2pleaseinputx(0):(ReIm)10pleaseinputx(1):(ReIm)20pleaseinputx(2):(ReIm)-10pleaseinputx(3):(ReIm)40*************Result**************X(0):6.00000+j0.00000X(1):2.00000+j2.00000X(2):-6.00000+j0.00000X(3):2.00000+j-2.00000这与例题计算结果相同,表示快速傅利叶正变换成功。2.2将上述做IFFT8、得:pleaseinputbianhuanleibie(FFT:1orIFFT:-1):-1pleaseinputjishuM:2pleaseinputx(0):(ReIm)60
6、seinputx(%d):(ReIm)",i);scanf("%f%f",&A[i],&B[i]);/*输入离散序列的实、虚部*/}fft(A,B,M,ap);/*进行FFT(或IFFT)*/printf("*************Result**************");for(i=0;i7、):1pleaseinputjishuM:2pleaseinputx(0):(ReIm)10pleaseinputx(1):(ReIm)20pleaseinputx(2):(ReIm)-10pleaseinputx(3):(ReIm)40*************Result**************X(0):6.00000+j0.00000X(1):2.00000+j2.00000X(2):-6.00000+j0.00000X(3):2.00000+j-2.00000这与例题计算结果相同,表示快速傅利叶正变换成功。2.2将上述做IFFT8、得:pleaseinputbianhuanleibie(FFT:1orIFFT:-1):-1pleaseinputjishuM:2pleaseinputx(0):(ReIm)60
7、):1pleaseinputjishuM:2pleaseinputx(0):(ReIm)10pleaseinputx(1):(ReIm)20pleaseinputx(2):(ReIm)-10pleaseinputx(3):(ReIm)40*************Result**************X(0):6.00000+j0.00000X(1):2.00000+j2.00000X(2):-6.00000+j0.00000X(3):2.00000+j-2.00000这与例题计算结果相同,表示快速傅利叶正变换成功。2.2将上述做IFFT
8、得:pleaseinputbianhuanleibie(FFT:1orIFFT:-1):-1pleaseinputjishuM:2pleaseinputx(0):(ReIm)60
此文档下载收益归作者所有