实际可运行的FIR滤波器系数设计的C语言程序
#include"math.h"
#include"stdio.h"
/*n:滤波器的阶数,n是奇数时可用来设计各种滤波器
band:滤波器类型1、2、3、4分别对应低通,高通,带通,带阻
fln:通带下边界频率
fhn:通带上边界频率
wn:窗函数的类型1-7分别对应
h:长度为n+1,存放滤波器的系数
fs:采样频率*/
void firwin(n,band,fln,fhn,wn,h)
int n,band,wn;
double fln,fhn,h[];
{
int i,n2,mid;
double s,pi,wc1,wc2,beta,delay,fs;
double window();//窗函数的计算
beta=0.0;
if(wn==7)//只有凯塞窗需要输入系数beta
{printf("input beta parameter of Kaiser window(2
scanf("%1f",&beta);
}
pi=4.0*atan(1.0);//pi=PI;
if((n%2)==0)/*如果阶数n是偶数*/
{n2=n/2+1;/**/
mid=1;//
}
else
{n2=n/2;//n是奇数,则窗口长度为偶数
mid=0;//
}
delay=n/2.0;<