fir.c

来自「C语言写的一个FIR滤波器实现算法」· C语言 代码 · 共 49 行

C
49
字号
#include <stdio.h>

#define length 256

int input[length],output[length];

static int filter(int xin[],int xout[],int n, int h[]);

static void dataIO(void);

static int h[37]={ -78,-152,-210,-173,18,355,737,983,903,413,-374,
-1139,-1443,-910,582,2792,5154,6963,7640,6963,5154,2792,582,-910,
-1443,-1139,-374,413,903,983,737,355,18,-173,-210,-152,-78};
/*Q15*/

static int x1[length+37];
/*低通滤波定点子程序*/

static int filter(int indata[],int outdata[],int n,int h[])
{
	int i,j;
	long sum;
	
	for(i=0;i<length;i++) x1[n+i-1]=indata[i];
	
	for(i=0;i<(n-1);i++) x1[n-i-2]=indata[length-i-1];
	
	for(i=0;i<length;i++)
	{
		sum=0;
		for(j=0;j<n;j++) sum+=(long)h[j]*x1[i-j+n-1];
		outdata[i]=sum>>15;
	}
	return 1;
}
void main()
{ 
   while(1)
   {
	dataIO();
	filter(input,output,19,h);
   }
}
static void dataIO()
{
	/*do data I/O*/
	return;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?