1.1. Tujuan
a. Memahami prnsip keunaan filter adaptif
b. Memahami cara kerja filter dalam menghilangkan noise
c. Mengetahui cara membersihkan sinyal yang bercampur derau
d. Mengetahui cara mencampurkan sinyal
Filter merupakan suatu sistem yang mempunyai fungsi transfer tertentu untuk
meloloskan sinyal masukan pada frekuensi - frekuensi tertentu dan menyaring /
memblokir / melemahkan sinyal masuka n pada frekuensi-frekuensi yang lain.
Filter diklasifikasikan :
a. Filter analog dan Filter digital
Filter analog : sinyal masukan berupa sinyal analog, pada filter analog dapat
dibagi menjadi dua yaitu:
- Filter pasif : filter yang hanya disusun komponen tahanan, induktor dan
kapasitor
- Filter aktif : filter yang disusun komponen op amp atau transistor
ditambah tahanan, induktor, dan kapasitor
b. Filter digital : sinyal masukan berupa sinyal diskrit, dibedakan menjadi dua
yaitu:
- Fixed Filter
- Adaptive Filter
Dua jenis Aloritma adaptif: Least mean Square(LMS) dan Recursive
least Square (RLS). LMS aloritma didasarkan pada pencarian gradien
tipe untuk melacak karakterstik sinyal waktu bervariasi. Algoritma RLS
menyediakan konvergensi yang lebih cepat dan pelacakan yang lebih
baik dari statistik sinyal varian waktu dari LMS aloritma, tetapi
komputsi yang lebih kompleks.
Berdasarkan respon impuls, filter digital terbagi menjadi:
- FIR (Finite Impulse Response)
- IIR (Infinite Impulse Response )
[suara,fs,nbits]=wavread('flicker.wav');
maxsuara=max([abs(max(suara)) abs(min(suara))] );
suaranorm=(1/maxsuara).*suara;
maxsuaranorm=max([abs(max(suaranorm)) abs(min(suaranorm))]);
px=0.5*mean(suaranorm.^2,1);
[noise,fs,nbits]=wavread('bismillah.wav')
maxNoise = max([abs(max(noise)) abs(min(noise))] );;
noisenorm = (1/maxNoise).*noise;
maxNoisenorm = max([abs(max(noisenorm)) abs(min(noisenorm))]);
pn1=0.5*mean(noisenorm.^2,1);
x=sqrt(px/(pn1*snr));
noiseData = x.*noisenorm;
suarapnoise=suaranorm + noiseData;
maxsuarapnoise = max([abs(max(suarapnoise))
abs(min(suarapnoise))] );
pn2=0.5*mean(noiseData.^2,1);
snr2=(px/pn2);
snrdb2=10*log10(px/pn2);
%suarapnoise=awgn(suara,snr,'measured');
suarapnoisen=awgn(suarapnoise,0.99);
maxsuarapnoisen = max([abs(max(suarapnoisen))
abs(min(suarapnoisen))]);
wavwrite(suarapnoisen,fs,nbits,'suara_23_mobil_10dB.wav')
daya_suara_bersih = px;
daya_suara_noisy = 0.5*mean(suarapnoise.^2,1);
daya_noise= 0.5*mean(noiseData.^2,1);
daya_suara_noisy_norm = 0.5*mean(suarapnoisen.^2,1);
subplot(3,1,1); plot(suara);
subplot(3,1,2); plot(filen);
subplot(3,1,3); plot(suarapnoisen);
sound(suarapnoisen,fs)
%menghasilkan suara bersih dan noise
c. Proses Filter
1. Normalized LMS
a. Buka aplikasi matlab
b. Ketikkan scrift dibawah ini:
% filter normalized LMS
[x,fs,nbits] = wavread('suara_23_mobil_10dB');
[z,fs,nbits] = wavread('flicker.wav');
d = z(1:size(x))
nord1 = 20
beta = 0.8
a0 = 0
X=convmtx(x,nord1)
[M,N] = size(X)
% a0 = a0(:).';
y(1) = a0*X(1).';
E(1) = d(1) - y(1);
DEN=X(1,:)*X(1,:)' + 0.0001
A(1,:) = a0 + beta/DEN*E(1)*conj(X(1,:))
if M>1
for k=2:M-nord1+1;
y(k) = A(k-1,:)*X(k,:).'
E(k) = d(k) - y(k)
DEN=X(k,:)*X(k,:)' + 0.0001
A(k,:) = A(k-1,:) + beta/DEN*E(k)*conj(X(k,:))
end
end
daya_noisyfilter = 0.5*mean(x.^2,1)
daya_hslfilter = 0.5*mean(y.^2,2)
wavwrite(y,'Hasil_filter_NormalizedLMS_10dB.wav')
c. Variasi nilai orde dan β sesuai jurnal
1.5. Hasil dan Analisa
a. Membuat rekaman suara asli.
1. Variasi Sample Rate (Frekuensi Sampling)
Hasil
Kapasitas
Sample Sample Perhitungan
Durasi Daya Penyimpanan
Rate Encoding kapasitas
(kb)
8000 Line 32 6s 0.017 396 1536000
16000 3s 0.0078 484 1536000
44100 2s 0.6416 990 2822400
Sinyal SNR = 0
Script program SNR = 5
Sinyal SNR = 0
Script program SNR = 10
% filter LMS
% filter LMS
[x,nbits] = wavread('suara_23_mobil_10dB');
[d,nbits] = wavread ('bismillah.wav');
nord1 =10;
mu = 0.1;
a0 = 0;
% d = wavread(sourceSLCFile);
X=convmtx(x,nord1);
[M,N] = size(X);
% a0 = a0(:).';
y(1) = a0*X(1).';
E(1) = d(1) - y(1);
A(1,:) = a0 + mu*E(1)*conj(X(1,:));
if M>1
for k=2:M-nord1+1;
y(k) = A(k-1,:)*X(k,:).';
E(k) = d(k) - y(k);
A(k,:) = A(k-1,:) + mu*E(k)*conj(X(k,:));
end;
end;
S_bn = d(1:size(x))-x;
nr= size (S_bn);
sum_S =0.0;
for i=1:nr
sum_S= abs (S_bn(i))+ sum_S;
end
S_bf = d(1:size(y))-y.';
nf= size (S_bf);
sum_F = 0.0;
for i=1:nf
sum_F= abs (S_bf(i))+ sum_F;
end
Pd = mean (d.^2); %d = daya sinyal bersih
Px = mean (x.^2); % rusak
Py = mean (y.^2); % hasil filter
d = z(1:size(x))
nord1 = 20
beta = 0.8
a0 = 0
X=convmtx(x,nord1)
[M,N] = size(X)
% a0 = a0(:).';
y(1) = a0*X(1).';
E(1) = d(1) - y(1);
DEN=X(1,:)*X(1,:)' + 0.0001
A(1,:) = a0 + beta/DEN*E(1)*conj(X(1,:))
if M>1
for k=2:M-nord1+1;
y(k) = A(k-1,:)*X(k,:).'
E(k) = d(k) - y(k)
DEN=X(k,:)*X(k,:)' + 0.0001
A(k,:) = A(k-1,:) + beta/DEN*E(k)*conj(X(k,:))
end
end
daya_noisyfilter = 0.5*mean(x.^2,1)
daya_hslfilter = 0.5*mean(y.^2,2)
wavwrite(y,'Hasil_filter_NormalizedLMS_10dB.wav')