frame2(); //验证FFT N=256; fs=250;
chouyang(N,fs,fc);
for(i=250;i for(sumT=0,sumF=0,i=0;i<256;i++)sumT=sumT+x[i].r*x[i].r;//求时域能量 window2(\函数图形显示\xy2(RED);//画xy轴。 plotgri2(BLUE,BLUE,x,256);//宏函数工具方式,注意x是形式上的宏参数,它指明后面函数的自变量。 getch(); frame2(); fft(x,256,1); for(i=0;i<256;i++) Y[i]=abs(x[i]); window2(\函数图形显示\xy2(RED);//画xy轴。 plotgri2(BLUE,BLUE,Y,256);//宏函数工具方式,注意x是形式上的宏参数,它指明后面函数的自变量。 getch(); frame2(); for(sumF=0,i=0;i<256;i++)sumF=sumF+x[i].r*x[i].r+x[i].i*x[i].i; printf(\时域能量和=%f,频域能量和=%f\\n\aa=50*N/fs; //aa:50HZ处对应的点; down=floor(aa);//向下取整 X50=Y[down]; EX50=pow(abs(X50),2)*2/N; printf(\ printf(\运算%f\\n\ getchar(); } 训练十三 数字滤波器制作 1﹑设一阶数字滤波器的系统函数为: 1?0.2z?1H(z)?1?0.4z?1 系统输入为以下三种数字序列: (1)矩形序列: (2)三角序列: (3)正弦序列: 2﹑设二阶数字滤波器的系统函数为: z?1H(z)?1?1.5z?1?0.5z?2 其输入为单位阶跃信号 3、编写通用数字滤波器函数工具。 通用数字滤波器函数工具程序: void IIRT(COMPLEX input[],COMPLEX output[],double a[],double b[],int N,int Ne)//N为数据 点数,Ne为0状态最大负输入,a[]为Y输出的系数,b[]为x输入的系数; { int i,n; for(n=0;n } } else output[n]=output[n]+a[i]*output[(n-i)]; } for(i=0;i if(n else output[n]=output[n]+b[i]*input[(n-i)]; } 源程序: // 13yy.cpp : Defines the entry point for the console application. // #include \ #include\#include\double Y[40]; void plotgri2(COLORREF gridcolor,COLORREF linecolor,double p[],int N) { int i; HPEN pen1=CreatePen(PS_SOLID,1,gridcolor),oldpen=(HPEN)SelectObject(win3.hdc,pen1); HPEN pen2=CreatePen(PS_SOLID,1,linecolor); for(i=0;i void f1(double a0,double b0,double b1,double X[],int N)//通用一阶数字滤波器函数工具 { int n; for(n=0;n void f2(double a0,double a1,double b0,double b1,double b2,double X[],int N)//通用二阶数字滤
相关推荐: