Signal filtering and FFT
Mostra commenti meno recenti
Hello,
I have a real time vibration data for 3.0599 seconds sampled at 9600 Hz.
I need to compute the FFT of the signal and find the peaks.
My frequency of interest is 0 to 600 Hz. I used low pass filter to filter the signal,
Fs = 9600;
Fn = Fs/2;
Wp = 600/Fn;
Ws = 601/Fn;
Rp = 10;
Rs = 50;
[n,Ws] = cheb2ord(Wp,Ws,Rp,Rs);
[c,b,a] = cheby2(n,Rs,Ws);
[soslp,glp] = zp2sos(c,b,a);
figure;
freqz(soslp, 2^16, Fs)
fAW1 = filtfilt(soslp, glp, AW1);
figure;
plot(f1,fAW1)
But I am not satisfied with the FFT results that I am getting from my filtered signal.
Is the procedure I am adopting correct? If not, what am I supposed to do to improve the result?
Thanks in advance.
3 Commenti
Star Strider
il 11 Apr 2019
‘Is the procedure I am adopting correct?’
It’s impossible to determine that with the information you posted. Your code appears to be correct. If you use the freqz function with your filter, you can see if it is performing as you want it to.
Note that you apparently have a significant amount of broadband noise, and no frequency-selective filter can eliminate that. You would have to use wavelet denoising, and there is no certainty that even it would do everything you want.
vanrapa
il 12 Apr 2019
Star Strider
il 12 Apr 2019
My pleasure.
Risposte (0)
Categorie
Scopri di più su Applications in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!