#include <math.h>
#define beta 0.01
#define N 21
#define NS 40
#define Fs 8000 //sampling frequency 8000Hz
#define pi 3.1415926
#define DESIRED 2*cos(2*pi*T*1000/Fs) //frequency 1000Hz
#define NOISE sin(2*pi*T*1000/Fs) //frequency 1000Hz
main()
{
long I,T;
double D,Y,E;
double W[N+1]={0.0};
double X[N+1]={0.0};
FILE *desired, *Y_out, *error;
desired=fopen("DESIRED.txt", "w++");
Y_out= fopen("Y_OUT.txt", "w++");
error=fopen("ERROR.txt","w++");
for (T=0;T<NS;T++)
{
X[0] = NOISE;
D = DESIRED;
Y=0;
for (I=0;I<=N;I++)
Y+=W[I]*X[I]; //calculate filter output Y_out
E=D- Y;
for (I=N;I>=0;I--)
{
W[I]=W[I]+(beta*E*X[I]); //update filter coefficiency W
if (I!=0) X[I]=X[I-1];
}
fprintf(desired, "\n%10g %10f",(float)T/Fs, D);
fprintf(Y_out, "\n%10g %10f",(float)T/Fs, Y);
fprintf(error, "\n%10g %10f",(float)T/Fs, E);
}
fclose(desired);
fclose(Y_out);
fclose(error);
}









