I'm looking for some ideas to filter a noisy signal. my sampling Condition is :
- Ferequency Sample Rate : 8000 Hz
- Number Of Signal Sample : 32000 Byte ( about 4 Seconds)
I want to extract 15.84 Hz ferequency from my signal. my filter bandwidth must be very narrow. like 0.01 Hz or less. ( bandpass filter : 15.83Hz to 15.85Hz )
what is your idea?
i wrote FIR Bandpass Filter ( hanning window ) in matlab. but is there any idea to extract exact 15.84 Hz better?
this is my matlab code :
function Hd = hannigfilter
% FIR Window Bandpass filter designed using the FIR1 function.
% All frequency values are in Hz.
Fs = 8000; % Sampling Frequency
N = 4 * 4096; % Order -> for accurate filtering
Fc1 = 15.83; % First Cutoff Frequency
Fc2 = 15.85; % Second Cutoff Frequency
flag = 'scale'; % Sampling Flag
% Create the window vector for the design algorithm.
win = hann(N+1);
% Calculate the coefficients using the FIR1 function.
b = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);
Hd = dfilt.dffir(b);
and:
band_passed_signal = filter(Hd.Numerator,1,mySignal);
thanks.