的自变量。 getch(); frame2(); dft(X,x,N,1); for(i=0;i void chouyang(double fc) //对方波信号进行抽样 { int i,T=2; double dt=1.0/(1.0*fc); double t=0; N=fc*T; for(i=0;i void chouyang2(double fs) { int i,f1=100,f2=200,f3=300; for(i=0;i x[i]=COMPLEX(1*sin(2*M_PI*f1*i/fs)+2*sin(2*M_PI*f2*i/fs)+3*sin(2*M_PI*f3*i/fs),0); } } void plotgri2(COLORREF gridcolor,COLORREF linecolor,COMPLEX 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 moveto2(i,0); lineto2(i,p[i].r); } } double fangbo(double t)//一个周期方波 { int h=1; if(t>=0&&t<=2)return t<=h?1.0:0.0; else if(t>2||t<0) return 0.0; else return 0.0; } //通用IIR滤波器 void IIRT(COMPLEX input[],COMPLEX output[],double a[],double b[],int N,int Ne)//N为数据点数,Ne为0状态最大负输入 { int i,n; for(n=0;n 训练十五 线性卷积计算 自定数组: 信号复数组 x[32]={1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0}; 系统复数组 h[32]={3,0,2,0,1,0}; 信号数据实际长度为15,系统数据实际长度为3, 15+3-1=17,所以要做32的FFT,故两数组长度都声明为32。 for(i=0;i<15;i++)x2[i]=COMPLEX(i+1,0); for(i=15;i<32;i++)x2[i]=COMPLEX(0,0); for(i=0;i<3;i++)h2[i]=COMPLEX(3-i,0); for(i=3;i<32;i++)h2[i]=COMPLEX(0,0); 直接计算 程序: //3.用FFT实现一个长的数据序列的卷积。 printf(\个信号数据代表长序列,用一次FFT实现数据序列的卷积\\n\ //信号复数组 x[32]={1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0}; //系统复数组 h[32]={3,0,2,0,1,0}; //信号数据实际长度为15,系统数据实际长度为3,
相关推荐: