Go to Menu Click Here
Go to Makefile Here
Go to Misc_fun.c function library Here
Go to win_lib.c function library Here
Go to coeff.dat Results Here


#include 
#include "../optimal/globDefs.h"

main()
{
real window[1000],hh[1000],coeff[1000],u_freq,l_freq,u_freq_sub,l_freq_sub;
real new_window[1000];
int i,N,s_freq,fil_typ,win_typ,ans;
logical odd;
FILE *out;
printf("Enter the number of coefficients\n");
scanf("%d",&N);
printf("Enter the lower and upper frequencies\n");
scanf("%lf%lf",&l_freq,&u_freq);
printf("Enter the sampling frequency\n");
scanf("%d",&s_freq);
printf("Do you want to quantize your coefficients select 1 for yes or 0 for no ?\n");
scanf("%d",&ans);
u_freq_sub = u_freq;
l_freq_sub = l_freq;
u_freq *= 3.1415927;
u_freq /= s_freq;
l_freq *= 3.1415927;
l_freq /= s_freq;
if ((out=fopen("coeff.dat","w"))== NULL) {
	 printf("Cannot open coeff.dat file\n");
	 exit(1);
 }
printf("Select the type of filter\n");
printf(" 0 - lowpass\n");
printf(" 1 - highpass\n");
printf(" 2 - bandpass\n");
printf(" 3 - bandstop\n");
scanf("%d",&fil_typ);
switch(fil_typ) {

case 0: 
	idealLowpass(N, u_freq, hh);
	fprintf(out,"Coefficients for the Lowpass Filter\n");
	printf("Coefficients for the Lowpass Filter\n");
	break;
case 1:
	idealHighpass(N, l_freq, hh);
	fprintf(out,"Coefficients for the Highpass Filter\n");
	printf("Coefficients for the Highpass Filter\n");
	break;
case 2:
	idealBandpass(N, l_freq, u_freq, hh);
	fprintf(out,"Coefficients for the Bandpass Filter\n");
	printf("Coefficients for the Bandpass Filter\n");
	break;
case 3:
	idealBandstop(N, l_freq, u_freq, hh);
	fprintf(out,"Coefficients for the Bandstop Filter\n");
	printf("Coefficients for the Bandstop Filter\n");
	break;
default:
	printf("Invalid number\n");
	exit(1);
	}
printf("\nSelect the type of window\n");
printf(" 0 - Hanning\n");
printf(" 1 - Hamming\n");
printf(" 2 - Blackman\n");
printf(" 3 - Triangular\n");
printf(" 4 - Rectangular\n");
scanf("%d",&win_typ);
switch (win_typ) {

case 0:
	hanningWindow(N,window);
	makeDataWindow(N,window,new_window);
	fprintf(out,"using the Hanning Window\n\n");
	printf("using the Hanning Window\n\n");
	break;
case 1:
	hammingWindow(N,window);
	makeDataWindow(N,window,new_window);
	fprintf(out,"using the Hamming Window\n\n");
	printf("using the Hamming Window\n\n");
	break;
case 2:
	blackmanWindow(N,window);
	makeDataWindow(N,window,new_window);
	fprintf(out,"using the Blackman Window\n\n");
	printf("using the Blackman Window\n\n");
	break;
case 3:
	triangularWindow(N,window);
	makeDataWindow(N,window,new_window);
	fprintf(out,"using the Triangular Window\n\n");
	printf("using the Triangular Window\n\n");
	break;
case 4:
	rectWindow(N,window);
	makeDataWindow(N,window,new_window);
	fprintf(out,"using the Rectangular Window\n\n");
	printf("using the Rectangular Window\n\n");
	break;
default:
	printf("Invalid Number\n");
	exit(1);
	}
odd = N%2;

for (i=0; i<=(N-1); i++)
{
	coeff[i] = new_window[i] * hh[i];
}
for (i=0; i<=(N-1); i++)
{
	printf("w[%d] = %lf\n",i,new_window[i]);
	fprintf(out,"w[%d] = %lf\n",i,new_window[i]);
}
printf("\n\n");
fprintf(out,"\n\n");
for (i=0; i<=(N-1); i++)
{
	printf("hh[%d] = %lf\n",i,hh[i]);
	fprintf(out,"hh[%d] = %lf\n",i,hh[i]);
}
printf("\n\n");
fprintf(out,"\n\n");
for (i=0; i<=(N-1); i++)
{
	printf("coeff[%d] = %lf\n",i,coeff[i]);
	fprintf(out,"coeff[%d] = %lf\n",i,coeff[i]);
}
printf("\n\n");
fprintf(out,"\n\n");
printf("The number of coefficients is: %d\n",N);
fprintf(out,"The number of coefficients is: %d\n",N);
printf("The Upper and lower frequencies are: %lf %lf\n",l_freq_sub,u_freq_sub);
fprintf(out,"The Upper and lower frequencies  Normalized are: %lf %lf\n",l_freq_sub,u_freq_sub);
printf("The Sampling frequency is: %d\n",s_freq);
fprintf(out,"The Sampling frequency is: %d\n",s_freq);

if (ans)
{
	quantize(N,odd,coeff);
	printf("\n\n");
	fprintf(out,"\n\n");
	if (odd)
	{
		for (i=0; i<=(N-1); i++)
		{
			printf("coeff[%d] = %d\n",i,(int)coeff[i]);
			fprintf(out,"coeff[%d] = %d\n",i,(int)coeff[i]);
		}
	}

}
}