Filter Design menggunakan Finite Impulse Response (FIR) Low Pass di MATLAB

komponen frekuensi= 5hz, 7Hz, 9Hz

Amplitudo= 1 2 3
Sample interval, dt= 8msec dan panjang signal 2 second

 FIR Low Pass (5hz)

Cut off fc= 6hz

Panjang filter= 13, 25, 49, 73

Aplikasikan filter yang anda design tersebut untuk mengambil hanya komponen signal dengan frekwensi yang paling rendah yaitu f1= 5Hz.

 



clear
clc

 

%Generate Signal
Fs= 1000; %Sampling Frequency
Ts= 1/Fs; %Sampling period or time step
dt= 0:Ts:2-Ts; %Signal Duration
f1= 5;
f2= 7;
f3= 9;

 %Y= A Sin (2pi f t + theta)

Y1= 1*sin(2*pi*f1*dt);

Y2= 2*sin(2*pi*f2*dt);

Y3= 3*sin(2*pi*f3*dt);

 Y4= Y1+Y2+Y3;

 

figure(1)
subplot(4,1,1)
plot(dt,Y1)
title('Signal 5Hz')
xlabel('Time')
ylabel('Amplitude')
subplot(4,1,2)
plot(dt,Y2,'g')
title('Signal 7Hz')
xlabel('Time')
ylabel('Amplitude')
subplot(4,1,3)
plot(dt,Y3,'b')
title('Signal 9Hz')
xlabel('Time')
ylabel('Amplitude')
subplot(4,1,4)
plot(dt,Y4,'r')
title('Composite Signal')
xlabel('Time')
ylabel('Amplitude')

Pada keterangan di atas didapatkan sinyal awal sebagai berikut:


%Fourier Transform

fs=1./dt;

N=length(t); %Sample

f=fs*(0:(N/2))/N;

yfft=fft(Y4).*dt;

 

%PLOT

cut=floor(length(f));

figure(2);

subplot(2,1,1);

plot(t,Y4,'r');

title('Composite Signal');

xlabel('Time');

ylabel('Amplitude');

subplot(2,1,2);

plot(f,abs(yfft(1:length(f))));

title('FFT Composite SIgnal');

xlabel('Frequency');

ylabel('Magnitude');

axis('tight');

xlim([0 cut]);





%Low Pas Filter

fh=6; %Cut-off Frequency

h13(1)=(2*fh);

h25(1)=(2*fh);

h49(1)=(2*fh);

h73(1)=(2*fh);

 

wh=2*pi*fh;

k1= 13; %Filter length

k2= 25;

k3= 49;

k4= 73;

 

h13(2:k1+1)=(2*fh).*sin(wh.*(1:k1).*dt)./(wh.*(1:k1).*dt);

h25(2:k2+1)=(2*fh).*sin(wh.*(1:k2).*dt)./(wh.*(1:k2).*dt);

h49(2:k3+1)=(2*fh).*sin(wh.*(1:k3).*dt)./(wh.*(1:k3).*dt);

h73(2:k4+1)=(2*fh).*sin(wh.*(1:k4).*dt)./(wh.*(1:k4).*dt);

 

ht13=dt*[h13(k1:-1:2) h13];

ht25=dt*[h25(k2:-1:2) h25];

ht49=dt*[h49(k3:-1:2) h49];

ht73=dt*[h73(k4:-1:2) h73];

 

dfr113=1/(length(ht13)*dt);

dfr125=1/(length(ht25)*dt);

dfr149=1/(length(ht49)*dt);

dfr173=1/(length(ht73)*dt);

 

fnyq=1/(2*dt);

fr113=(0:dfr113:fnyq);

fr125=(0:dfr125:fnyq);

fr149=(0:dfr149:fnyq);

fr173=(0:dfr173:fnyq);

 

cfr113=(1:length(fr113));

cfr125=(1:length(fr125));

cfr149=(1:length(fr149));

cfr173=(1:length(fr173));

 

fhlp13=fft(ht13);

fhlp25=fft(ht25);

fhlp49=fft(ht49);

fhlp73=fft(ht73);

 

fhlpc13=fhlp13(cfr113);

fhlpc25=fhlp25(cfr125);

fhlpc49=fhlp49(cfr149);

fhlpc73=fhlp73(cfr173);

 

%PLOT

figure(3);

subplot(2,2,1);

plot(fr113,abs(fhlpc13));

xlim([0 cut]);

title('LPF freq. domain k=13');

xlabel('Frequency');

ylabel('Magnitude');

subplot(2,2,2);

plot(fr125,abs(fhlpc25));

xlim([0 cut]);

title('LPF freq. domain k=25');

xlabel('Frequency');

ylabel('Magnitude');

subplot(2,2,3);

plot(fr149,abs(fhlpc49));

xlim([0 cut]);

title('LPF freq. domain k=49');

xlabel('Frequency');

ylabel('Magnitude');

subplot(2,2,4);

plot(fr173,abs(fhlpc73));

xlim([0 cut]);

title('LPF freq. domain k=73');

xlabel('Frequency');

ylabel('Magnitude');

 

kmin1=-1*k1;

kmin2=-1*k2;

kmin3=-1*k3;

kmin4=-1*k4;

tk13=kmin1+1:1:k1;

tk25=kmin2+1:1:k2;

tk49=kmin3+1:1:k3;

tk73=kmin4+1:1:k4;

 

%PLOT

figure(4);

subplot(2,2,1);

plot(tk13,ht13);

title('LPF time domain k=13');

xlabel('Time');

ylabel('Amplitude');

subplot(2,2,2);

plot(tk25,ht25);

title('LPF time domain k=25');

xlabel('Time');

ylabel('Amplitude');

subplot(2,2,3);

plot(tk49,ht49);

title('LPF time domain k=49');

xlabel('Time');

ylabel('Amplitude');

subplot(2,2,4);

plot(tk73,ht73);

title('LPF time domain k=73');

xlabel('Time');

ylabel('Amplitude');


% %apply to time series

ylpf13=conv(Y4,ht13);

ylpf25=conv(Y4,ht25);

ylpf49=conv(Y4,ht49);

ylpf73=conv(Y4,ht73);

 

yylpf13=ylpf13(k1:length(ylpf13)-k1);

yylpf25=ylpf25(k2:length(ylpf25)-k2);

yylpf49=ylpf49(k3:length(ylpf49)-k3);

yylpf73=ylpf73(k4:length(ylpf73)-k4);

 

figure(5)

subplot(4,1,1)

plot(t,Y4,'k');hold on

plot(t,yylpf13,'r');

title('Perbandingan sinyal asli dgn filter k=13')

xlabel('time')

ylabel('Amplitude');

hold off

subplot(4,1,2)

plot(t,Y4,'k');hold on

plot(t,yylpf25,'r');

title('Perbandingan sinyal asli dgn filter k=25');

xlabel('time');

ylabel('Amplitude');

hold off

subplot(4,1,3)

plot(t,Y4,'k');hold on

plot(t,yylpf49,'r');hold on

title('Perbandingan sinyal asli dgn filter k=49');

xlabel('time');

ylabel('Amplitude');

hold off

subplot(4,1,4)

plot(t,Y4,'k');hold on

plot(t,yylpf73,'r');

title('Perbandingan sinyal asli dgn filter k=73');

xlabel('time');

ylabel('Amplitude');

hold off


Komentar

Postingan Populer