Apply Chebyshev filter to sea surface temperature (SST) data

2 ビュー (過去 30 日間)
RAKTIMA DEY
RAKTIMA DEY 2019 年 7 月 9 日
回答済み: Star Strider 2019 年 7 月 10 日
I want to apply 13 year low pass chebyshev filter to the time series of SST data, I found a matlab function.
[b,a] = cheby1(n,Rp,Wp), returns the transfer function coefficients of an nth-order lowpass digital Chebyshev Type I filter with normalized passband edge frequency Wp and Rp decibels of peak-to-peak passband ripple.
I do not understand what should be the inputs for my problem. I have no knowledge of signal processing. What does n, Rp, Wp mean in this context?

回答 (1 件)

Star Strider
Star Strider 2019 年 7 月 10 日
I do not understand what should be the inputs for my problem.’
There are several different filter types. The Chebyshev design is a good choice, although the elliptical design (that I use here) is more efficient with equally narrow transition regions, so I would use an elliptical filter.
For a lowpass filter, you need to sampling frequency, and the sampling interval (1/sampling frequency) must be constant. If it is not, you will need to use the Signal Processing Toolbox resample function to interpolate your data to constant sampling intervals.
A prototype filter assuming a sampling interval of 1 sample/day is:
Ts = 1/365.25; % Sampling Interval (Years)
Fs = 1/Ts; % Sampling Frequency (Cycles/Year)
Fn = Fs/2; % Nyquist Frequency (Cycles/Year)
Wp = (1/13)/Fn; % Passband Frequency (Cycles/Year) Normalised
Ws = Wp*1.1; % Stopband Frequency (Normalised)
Rp = 1; % Passband Ripple (dB)
Rs = 50; % Stopband Ripple Or Attenuation (dB)
[n,Wp] = ellipord(Wp,Ws,Rp,Rs); % Filter Order
[z,p,k] = ellip(n,Rp,Rs,Wp); % Filter Design (Zero-Pole-Gain)
[sos, g] = zp2sos(z,p,k); % Second-Order-Section For Stability
figure
freqz(sos, 2^14, Fs)
set(subplot(2,1,1), 'XLim',[0 1])
set(subplot(2,1,2), 'XLim',[0 1])
Then use the filtfilt function to filter your signal. Note that the frequency uints for this filter are cycles/year, not Hz.
The passband and stopband ripple values are arbitrary. The values I use here are essentially standard, and give good filter performance.
This will get you started, as will the MATLAB documentation. If you are going to be doing signal processing, you likely need to take a course in it, since you will need to understand the assumptions and design decisions that enter into it.

Community Treasure Hunt

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

Start Hunting!

Translated by