How to filter? (Kalman, Narrow Bandpass , Low Pass)
7 ビュー (過去 30 日間)
表示 古いコメント
Hello,
I have a signal which I need to filter them with three filters.
採用された回答
Star Strider
2016 年 1 月 25 日
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 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Find more on Filter Analysis 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!