📄 fir.c
字号:
#include <stdio.h>
#define length 256
int input[length],output[256];
void filter(int xin[],int xout[],int n, int h[]);
static void dataIO(void);
static int h[81]={ 20, 15, 6, -7 ,-20, -33, -40, -36, -20, 8, 44, 79, 100, 98, 64, 0, -83, -166, -221, -226, -166 ,-40, 131, 306, 437, 474, 382, 156, -175, -544, -858, -1013, -916, -511, 207, 1183, 2307, 3426, 4379, 5018, 5244, 5018, 4379, 3426, 2307, 1183, 207, -511, -916 ,-1013, -858, -544 ,-175, 156, 382, 474, 437, 306, 131, -40, -166, -226, -221, -166, -83, 0, 64, 98, 100, 79, 44, 8, -20, -36, -40, -33, -20 ,-7, 6, 15, 20};
/*Q15*/
static int x1[256+81];
/*低通滤波定点子程序*/
void 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<length;i++)
{
sum=0;
for(j=0;j<n;j++) sum+=(long)h[j]*x1[i-j+n-1];
outdata[i]=sum>>15;
}
for(i=0;i<length;i++)x1[n-i-2]=indata[length-i-1];
}
void main()
{
// int indata[256],outdata[256];
while(1)
{
dataIO();
dataIO();
filter(input,output,81,h);
}
}
static void dataIO()
{
/*do data I/O*/
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -