谁能帮我写个FIR程序 急急急!

来源:百度知道 编辑:UC知道 时间:2024/05/22 22:15:00
我课设是在DSP上实现带通FIR滤波器,要求窗函数法、通带为100-3400Hz,哪个大哥大姐能帮我写个啊!!结合MATLAB设计也可以。
我要的是程序啊!哪个大哥大姐给写个!!

先用窗函数法算出滤波器系数,然后求输入信号序列和滤波器的卷积,求出的就是输出序列了。窗函数法源代码#include"math.h"
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;
double window();
beta=0.0;
if(wn==7)
{printf("input beta parameter if kaiser window(2<beta<10)\n");
scanf("%lf",&beta);
}
pi=4.0*atan(1.0);
if((n%2)==0)
{n2=n/2-1;
mid=1;
}
else
{n2=n/2;
mid=0;
}
delay=n/2.0;
wc1=2.0*pi*fln;
if(band>=3)wc2=2.0*pi*fhn;
switch(band)
{case 1:
{for(i=0;i<=n2;i++)
{s=i-delay;
h[i]=(sin(wc1*s)/(pi*s))*window(wn,n+1,beta);
h[n-i]=h[i];
}
if(mid==1)h[n/2]=wc1/pi;
break;
}
case 2:
{for(i=0;i<=n2;i++)
{s=i-delay;
h[i]=(sin(pi*s)-sin(wc1*s))/(pi*s);
h[i]=h[i]*window(wn,n+1,i,beta);
h[n-i]=h[i];
}
if(mid==1)h[n/2]=1.0-wc1/pi;
bre