Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

bandpass filter not working in matlab

Status
Not open for further replies.

fences

Junior Member level 3
Joined
Feb 7, 2011
Messages
25
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,453
I try to simulate a noisy signal and Filter it. the signal mix some low frequency signals and some random noise. my goal is to get 14.8Hz signal. my band-pass bandwidth is 14.7Hz to 14.9Hz.

Code:
function filteringTest

Hd = KaiserFilter;


Fs = 4000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 40000;                     % Length of signal
t = (0:L-1)*T;                % Time vector


r1 = 320;
r2 = 575;

y = 50*sin(2*pi*14.8*t) + r1*sin(2*pi*14.7*t) +  r2*sin(2*pi*15.1*t) + 10.1*rand(size(t));
yfilter = filter(Hd.Numerator,1,y);
plot(yfilter)



function Hd = KaiserFilter

Fs = 4000;  % Sampling Frequency

N    = 4096;     % Order
Fc1  = 14.7;     % First Cutoff Frequency
Fc2  = 14.9;     % Second Cutoff Frequency
flag = 'scale';  % Sampling Flag
Beta = 0.5;      % Window Parameter
% Create the window vector for the design algorithm.
win = kaiser(N+1, Beta);

% Calculate the coefficients using the FIR1 function.
b  = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);
Hd = dfilt.dffir(b);

my signal image is :
4.jpg

and filter result is :
5.jpg

when i try to increase Filter Order from 4096 to 32*4096 , i get this result :

6.jpg


why this filter do not work correct? do i chage my filtering method? what should i do to get 14.8Hz frequency signal?

thanks.
 

Did you test your filter on sinewaves at just one frequency? That should make it easier to check the response.

Can you find sample code of a bandpass filter? Start with that, then change it to suit your specs.

It looks like a big jump to change from 4096 to 32*4096. Did you try values in between?
 

Did you test your filter on sinewaves at just one frequency? That should make it easier to check the response.

Can you find sample code of a bandpass filter? Start with that, then change it to suit your specs.

It looks like a big jump to change from 4096 to 32*4096. Did you try values in between?

thank you. this is Kaiser bad-pass filter and it's work fine. the point is when 14.7Hz signal and 15.1hz signal amplitude growing up, this filter do not work properly. in this sample r1 ( amplitude of 14.7Hz ) and r2 ( amplitude of 15.1 Hz ) is too big than main Signal ( 14.8 Hz and it's amplitude is 50 ).
in other hand when my amplitude of my main signal is small than other noisy signal, bandpass filter do not able to filter noisy signal.
i looking how i can fix it?
 

There's nothing wrong with the filter. But you see that the second filter still passes part of the unwanted signals. Furthermore, you need to wait at least the threefold time for complete settling of the output signal. Finally there's a relation between the length of the impulse response (Fs*filter order) and the minimal achievable bandwidth.
 

There's nothing wrong with the filter. But you see that the second filter still passes part of the unwanted signals. Furthermore, you need to wait at least the threefold time for complete settling of the output signal. Finally there's a relation between the length of the impulse response (Fs*filter order) and the minimal achievable bandwidth.

thanks you, yes, filter is correct. but how can i get correct result? in second filter if i increase my signal samples data from 40000 to 100000, but filterign result not acceptable. filter result is too noisy yet.
is there any idea to design a filter that pass only 14.8Hz signal?
thanks
 

By filter specification, you don't have much attenuation for 14.7 Hz signal. The 32*4096 filter can achieve smaller bandwidth, but made it intentionally 0.2 Hz wide.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top