www.pudn.com > FIR.rar > main.c


 
 
#include  
 
 
 
 
main() 
{ 
int i,j,n,n2,band,wn; 
double fl,fh,fs,freq; 
double h[100]; 
char fname[40]; 
FILE *fp; 
 
printf("select one of the four types for FIR digittal filter\n"); 
printf(" 1 --lowpass;   2 -- highpass\n"); 
printf(" 2 --bandpass; 4 -- bandstop\n"); 
scanf("%d",&band); 
printf("input the filter order n\n"); 
scanf("%d",&n); 
printf("input low cutoff frequrncy fl\n"); 
scanf("%lf",&fl); 
fh=0.0; 
if(band>=3) 
{ 
printf("input high cutoff frequency fh\n"); 
scanf("%lf",&fh); 
} 
 
printf("input sample frequency fh\n"); 
scanf("%lf",&fs); 
 
printf("select window \n"); 
printf(" 1 -- retangular;  2 -- tapered rectangular\n"); 
printf(" 3 --triangular;    4 -- Hanning\n"); 
printf(" 5 -- Hamming ;   6 -- Blackman\n"); 
printf(" 7 -- Kaiser\n"); 
scanf("%d",&wn); 
 
fl=fl/fs; 
fh=fh/fs; 
firwin(n, band, fl, fh,  wn,  h ); 
printf("FIR digital filter \n"); 
printf(" *  *   *  impiluse response  *   *   *\n\n"); 
 
n2=n/2; 
for(i=0;i<=n2;i++) 
{ 
j=n-i; 
printf(" h(%2d) = %12.8lf = h(%2d) \n",i,h[i],j); 
} 
}