How to filter? (Kalman, Narrow Bandpass , Low Pass)

6 views (last 30 days)
Bob
Bob on 24 Jan 2016
Edited: Bob on 30 Mar 2016
Hello,
I have a signal which I need to filter them with three filters.
  2 Comments
Bob
Bob on 25 Jan 2016
Thanks for your answer,
Could you provide me a code or an example since I don't know many things about filters?

Sign in to comment.

Accepted Answer

Star Strider
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

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!