/*低通滤波浮点子程序*/
void filter(int xin[ ],int xout[ ],int n,float h[ ])
{
int i,j;
float sum;
for(i=0;i<length;i++) x1[n+i-1]=xin;
for (i=0;i<length;i++)
{
sum=0.0;
for(j=0;j<n;j++) sum+=h[j]*x1[i-j+n-1];
xout=(int)sum;
}
for(i=0;i<(n-1);i++) x1[n-i-2]=xin[length-1-i];
}
/*低通滤波定点子程序*/
void filter(int xin[ ],int xout[ ],int n,int h[ ])
{
int i,j;
long sum;
for(i=0;i<length;i++) x1[n+i-1]=xin;
for (i=0;i<length;i++)
{
sum=0;
for(j=0;j<n;j++) sum+=(long)h[j]*x1[i-j+n-1];
xout=sum>>15;
}
for(i=0;i<(n-1);i++) x1[n-i-2]=xin[length-i-1];
} |