Sunday, October 16, 2011

FIR EQIRIPPLE (OPTIMAL METHOD)

%LPF
clc
clear
close all
samp=2000;
n=0:1/samp:1;
x=cos(2*pi*100*n)+cos(2*pi*500*n)+cos(2*pi*700*n);
ap=0.5;%ap=-20*log10(1-dp)
as=80;%as=-20*log10(ds)
dp=1-10^(-ap/20);
ds=10^(-as/20);
[n,fo,mo,w] = firpmord( [300 400], [1 0], [dp ds], samp );
b = firpm(n,fo,mo,w);
[h,o]=freqz(b,1,256);
figure
plot(o/pi, 20*log10(abs(h)));
y=filter(b,1,x);
figure
subplot 211, plot(abs(fft(x)));
subplot 212, plot(abs(fft(y)));


%HPF
clc
clear
close all
samp=2000;
n=0:1/samp:1;
x=cos(2*pi*100*n)+cos(2*pi*500*n)+cos(2*pi*700*n);
ap=0.5;%ap=-20*log10(1-dp)
as=80;%as=-20*log10(ds)
dp=1-10^(-ap/20);
ds=10^(-as/20);
[n,fo,mo,w] = firpmord( [300 400], [0 1], [ds dp], samp );
b = firpm(n,fo,mo,w);
[h,o]=freqz(b,1,256);
figure
plot(o/pi, 20*log10(abs(h)));
y=filter(b,1,x);
figure
subplot 211, plot(abs(fft(x)));
subplot 212, plot(abs(fft(y)));


%BPF
clc
clear
close all
samp=2000;
n=0:1/samp:1;
x=cos(2*pi*100*n)+cos(2*pi*500*n)+cos(2*pi*700*n);
ap=0.5;%ap=-20*log10(1-dp)
as=80;%as=-20*log10(ds)
dp=1-10^(-ap/20);
ds=10^(-as/20);
[n,fo,mo,w] = firpmord( [300 400 550 650], [0 1 0], [ds dp ds], samp );
b = firpm(n,fo,mo,w);
[h,o]=freqz(b,1,256);
figure
plot(o/pi, 20*log10(abs(h)));
y=filter(b,1,x);
figure
subplot 211, plot(abs(fft(x)));
subplot 212, plot(abs(fft(y)));



%BSF
clc
clear
close all
samp=2000;
n=0:1/samp:1;
x=cos(2*pi*100*n)+cos(2*pi*500*n)+cos(2*pi*700*n);
ap=0.5;%ap=-20*log10(1-dp)
as=80;%as=-20*log10(ds)
dp=1-10^(-ap/20);
ds=10^(-as/20);
[n,fo,mo,w] = firpmord( [300 400 550 650], [1 0 1], [dp ds dp], samp );
b = firpm(n,fo,mo,w);
[h,o]=freqz(b,1,256);
figure
plot(o/pi, 20*log10(abs(h)));
y=filter(b,1,x);
figure
subplot 211, plot(abs(fft(x)));
subplot 212, plot(abs(fft(y)));

No comments: