数字滤波器的频率响应

分类: DSP |
代码实现:
void gain(double *b,double *a,int m,int
n,double *x,double *y,int len,int sign)
{
}
void main()
{
int i;
double
a[]={1.0,0.0,0.9},b[]={0.0,-0.1};
double f,x[300],y[300];
FILE *fp;
gain(b,a,1,2,x,y,300,1);
if((fp=fopen("gainam.dat","w"))==
NULL)
{
printf("cannot open file
'gainam.dat'!\n");
exit(0);
}
for(i=0;i<300;i++)
{
f = i*0.5/299;
fprintf(fp,"%lf
%lf\n",f,x[i]);
}
fclose(fp);
if((fp=fopen("fainph.dat","w"))==NULL)
{
printf("cannot open file
'gainph.dat'!\n");
exit(0);
}
for(i=0;i<300;i++)
{
fprintf(fp,"%lf
%lf\n",f,y[i]);
}
fclose(fp);
}
需要主要是,无论是幅频响应还是相频响应,它们的变量都是频率,代码中我们采用的是归一化的频率(0,0.5)之间,根据分辨率进行细分。实际频率可以不进行归一化。频率响应包括了幅频响应和相频响应,在具体分析时,往往需要分析幅频响应和相频响应。
前一篇:最小均方(LMS)自适应滤波算法
后一篇:窗函数设计FIR滤波器