Filter data through a bandpass FIR

3 vues (au cours des 30 derniers jours)
Sam Hurrell
Sam Hurrell le 26 Juil 2022
I have multiple sets of data, all with the same timesteps, sample size of 4000, and sampling frequency (Fs) of 50MHz but different frequency based values. Each dataset has a different central frequency (Fc) from 2.4 - 0.6MHz, and has a bandpass filter (BP) of BP = [0.9*Fc 1.1*Fc]. I've tried a digital filter of:
df = bandpass(data(:,2),BP,Fs,'ImpulseResponse','fir');
This filter works for the first few datasets of higher frequencies, but stops when halfway through an error message says "Data length must be larger than 4362 samples". How can this be fixed without compromising the results, or is there a better filter to use?

Réponses (1)

Star Strider
Star Strider le 26 Juil 2022
That’s a problem with FIR filters, simply because in most instances they tend to be very long vectors.
Use an IIR filter instead:
df = bandpass(data(:,2),BP,Fs,'ImpulseResponse','iir');
This will design and implement a very efficient elliptic filter.
.

Catégories

En savoir plus sur Digital and Analog Filters dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by