How to filter a signal with a transfer function?
102 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ana Gabriela Guedes
il 26 Mag 2021
Commentato: Star Strider
il 27 Mag 2021
Hi!
I have a discrete signal (a vector with many values) I want to filter using a low pass filter but I only have the tranfer function in the form. How can I do this since the common filter functions dont use transforms?
0 Commenti
Risposta accettata
Star Strider
il 26 Mag 2021
The easiest approach is to first let the Control System Toolbox solve it, then realise it as a discrete filter using the numerator and denominator vectors —
z = tf('z');
H = (1-z^-6)^2 / (1-z^-1)^2
Num = H.Numerator
Den = H.Denominator
figure
freqz(Num{:}, Den{:}, 2^16)
Use ‘Num{:}’ and ‘Den{:}’ with filtfilt to filter the signal.
Remember that it will be necessary to define a sampling interval, ‘Ts’ where ‘Ts=1/Fs’ where ‘Fs’ is the sampling frequency.
.
2 Commenti
Star Strider
il 27 Mag 2021
No, use the filtfilt function to filter ‘x’.
Assuming that the sampling interval or sampling frequency is defined in the first tf call:
Fs = 1000; % Define Sampling Frequency
Ts = 1/Fs;
z = tf('z',Ts);
H = (1-z^-6)^2 / (1-z^-1)^2
Num = H.Numerator
Den = H.Denominator
figure
freqz(Num{:}, Den{:}, 2^16, Fs)
x = [-233....-667]
x_filtered = filtfilt(Num{:}, Den{:}, x)
and go from there.
.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Digital Filtering in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!