How to filter? (Kalman, Narrow Bandpass , Low Pass)
8 views (last 30 days)
Show older comments
Hello,
I have a signal which I need to filter them with three filters.
2 Comments
Star Strider
on 24 Jan 2016
I’m not certain what you’re doing or what your objective is. I would instead use two serial cascaded digital filters, the first a bandpass filter with a low-frequency cutoff of 0.5-1.5 Hz and a high-frequency cutoff of 30 Hz, then the notch (narrow bandstop) filter with a normalised frequency of 1. A Chebyshev Type II design would likely be best.
Give that a go and see if it does what you want.
Accepted Answer
Star Strider
on 25 Jan 2016
Filter design, implementation, and plots:
D = load('Xaris load.mat');
t = D.t;
Xs_ddot = D.Xs_ddot;
Xu_ddot = D.Xu_ddot;
Ts = mean(diff(t)); % Sampling Interval
Fs = 1/Ts; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
Wp = [3 25]/Fn; % Normalised Paassband
Ws = Wp .* [0.2 1.1]; % Normalised Stopband
Rp = 1; % Passband Ripple
Rs = 30; % Stopband Ripple
[n, Wn] = buttord(Wp,Ws,Rp,Rs); % Bandpass Filter Design
[b,a] = butter(n,Wn,'bandpass'); % Choose Butterworth
[bp_sos,bp_g] = tf2sos(b,a); % Use SOS For Stability
Rs = 10;
Rp = 20;
Ws = [9.95 10.05]/Fn;
n = 2;
[b,a] = cheby2(n,Rs,Ws,'stop'); % Bandstop (Notch) Filter Design
[bs_sos,bs_g] = tf2sos(b,a);
figure(1)
freqz(bp_sos,1024,Fs) % Bandpass Filter Bode Plot
figure(2)
freqz(bs_sos,1024,Fs) % Bandstop Filter Bode Plot
Xs_bp = filtfilt(bp_sos, bp_g, Xs_ddot); % Filter Signals
Xs_out = filtfilt(bs_sos, bs_g, Xs_bp);
Xu_bp = filtfilt(bp_sos, bp_g, Xu_ddot);
Xu_out = filtfilt(bs_sos, bs_g, Xu_bp);
figure(3)
subplot(2,1,1)
plot(t, Xs_ddot)
title('Unfiltered ‘Xs\_ddot’')
grid
subplot(2,1,2)
plot(t, Xs_out)
title('Filtered ‘Xs\_ddot’')
grid
figure(4)
subplot(2,1,1)
plot(t, Xu_ddot)
title('Unfiltered ‘Xu\_ddot’')
grid
subplot(2,1,2)
plot(t, Xu_out)
title('Filtered ‘Xu\_ddot’')
grid
0 Comments
More Answers (0)
See Also
Categories
Find more on Analog Filters in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!