フィルターのクリア

how to filter a signal

66 ビュー (過去 30 日間)
rohith bharadwaj
rohith bharadwaj 2017 年 9 月 9 日
コメント済み: Star Strider 2021 年 2 月 3 日
I have a signal and I filtered the signal using a cheby1 filter. the frequencies of the signal range from 0.058 to 349Hz. I had to remove frequencies above 0.7Hz. after filtering the signal again when I find the frequencies I'm getting frequencies above 0.7Hz.

採用された回答

Star Strider
Star Strider 2017 年 9 月 9 日
I showed you how to correctly design a filter here. If you want to design a filter to remove all frequencies above 0.7 Hz, design a lowpass filter, specify the passband frequency as 0.7/Fn and the stopband at 0.72/Fn. Use a Chebyshev Type II filter for this, instead of a Type I, since you now want a relatively flat passband.
  9 件のコメント
Wietse van Geel
Wietse van Geel 2021 年 2 月 3 日
編集済み: Wietse van Geel 2021 年 2 月 3 日
EDIT: found your previous post in the link! I'll try that first
Thank you for this helpful post. I'm designing a filter for the first time, and find it quite challenging.
Could you clarify the above answer by explaining how the last part, ending with:
[soslp,glp] = zp2sos(z,p,k);
can be implemented as a filter?
This part works fine for me:
[b,a] = cheby2(1,0.5,0.7/325,'low');
fil=filter(b,a,y);
And playing around with the numbers and plotting the results give some idea of what happens.
Best,
Wietse
Star Strider
Star Strider 2021 年 2 月 3 日
Wietse van Geel — My pleasure!
I have switched over to elliptic filters, since they are much more computationally efficient and generally perform much better. The code would now be:
Fs = 650
Fn = Fs/2; % Nyquist Frequency (Hz)
Wp = 0.7/Fn; % Passband Frequency (Normalised)
Ws = 0.72/Fn; % Stopband Frequency (Normalised)
Rp = 1; % Passband Ripple (dB)
Rs = 50; % Stopband Ripple (dB)
[n,Wp] = ellipord(Wp,Ws,Rp,Rs); % Filter Order
[z,p,k] = ellip(n,Rp,Rs,Wp,'low'); % Filter Design
[soslp,glp] = zp2sos(z,p,k); % Convert To Second-Order-Section For Stability
figure(5)
freqz(soslp, 2^16, Fs) % Filter Bode Plot
Use the filtfilt function to do the actual filtering:
fil = filtfilt(soslp,glp,y); % Filter Signal
.

サインインしてコメントする。

その他の回答 (1 件)

kani mozhi
kani mozhi 2018 年 9 月 10 日
hi... i m wrk in bci data competition iii dataset 1.which filter have to use and please give the matlab code.. i m new in this area

カテゴリ

Help Center および File ExchangeFilter Design についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by