filter_main.c
来自「直接型IIR滤波器实现源代码」· C语言 代码 · 共 40 行
C
40 行
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
void filter(b,a,m,n,x,len,px,py);
main()
{int i,k,m,n,len,nblk;
double b[5]={0.001836,0.007344,0.011016,0.007344,0.001836};
double a[5]={1.0,-3.0544,3.8291,-2.2925,0.55075};
double px[5]={0.0,0.0,.0,0.0,0.0};
double py[5]={0.0,0.0,.0,0.0,0.0};
double x[25],data[100];
FILE *fp;
m=4;
n=4;
len=25;
nblk=4;
x[0]=1.0;
for(k=1;k<len;k++)
{x[k]=0.0;}
for(i=0;i<nblk;i++)
{filter(b,a,m,n,x,len,px,py);
for(k=0;k<len;k++)
{data[i*len+k]=x[k];
x[k]=0.0;
}
}
printf("Unit Impulse Response\n");
for(i=0;i<16;i++)
{printf(" %10.7lf",data[i]);
if(i%4==3)printf("\n");
}
if((fp=fopen("filter.dat","w"))==NULL)
{printf("cannot open the file ‘filter.dat'! \n");
exit(0);
}
for(i=0;i<100;i++)
{fprintf(fp,"%2d %lf\n",i,data[i]);}
fclose(fp);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?