pakopako
11-05-2017, 17:34
Buonasera, ho un segnale di accelerazione che registra su un file i valori lungo i 3 assi ogni 10ms, quindi la frequenza di campionamento dovrebbe essere 100Hz.
Ciò che vorrei chiedervi e se qualcuno potrebbe indicarmi come è possibile filtrare questo segnale.
Poichè l'accelerometro mi da picchi molto alti in determinate situazioni, ma che costituiscono solo una piccola parte del segnale (questi sono quelli che mi interessano principalmente), io necessito di smussare e quindi filtrare tutti i valori di accelerazione che sono compresi diciamo tra 1m/s^2 e -1m/s^2.
Ora, ho fatto la trasformata di Fourier di questo segnale attraverso il seguente codice:
L = length(segnale);
f = Fs*(0 : (L/2)) /L; %%Viene creato il dominio di Frequenza.
Y = fft(segnale); %%Viene applicata la trasformata di Fourier
P2 = abs(Y/L);
P1 = P2(1:floor(L/2)+1);
P1(2:end-1) = 2*P1(2:end-1);
dOut = P1;
plot(f,dOut)
title('Single-Sided Amplitude Spectrum of Data(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')
Quindi io vado ad analizzare tutto ciò che ricade tra 0 e 50Hz, in accordo al Teorema di Nyquist, per l'aliasing del segnale.
A seguito di questa trasformata, come posso capire quale parte del mio segnale rappresenta il rumore, e quale parte invece i dati che non voglio "toccare"?
E una volta determinata la frequenza in cui attenuare il rumore come è possibile creare un filtro che mi consenta di poter successivamente integrare il segnale?
Link delle foto della trasformata di Fourier, e del Segnale Originale.
http://imgur.com/e9Zn5kG
http://imgur.com/k3TJiZa
Ciò che vorrei chiedervi e se qualcuno potrebbe indicarmi come è possibile filtrare questo segnale.
Poichè l'accelerometro mi da picchi molto alti in determinate situazioni, ma che costituiscono solo una piccola parte del segnale (questi sono quelli che mi interessano principalmente), io necessito di smussare e quindi filtrare tutti i valori di accelerazione che sono compresi diciamo tra 1m/s^2 e -1m/s^2.
Ora, ho fatto la trasformata di Fourier di questo segnale attraverso il seguente codice:
L = length(segnale);
f = Fs*(0 : (L/2)) /L; %%Viene creato il dominio di Frequenza.
Y = fft(segnale); %%Viene applicata la trasformata di Fourier
P2 = abs(Y/L);
P1 = P2(1:floor(L/2)+1);
P1(2:end-1) = 2*P1(2:end-1);
dOut = P1;
plot(f,dOut)
title('Single-Sided Amplitude Spectrum of Data(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')
Quindi io vado ad analizzare tutto ciò che ricade tra 0 e 50Hz, in accordo al Teorema di Nyquist, per l'aliasing del segnale.
A seguito di questa trasformata, come posso capire quale parte del mio segnale rappresenta il rumore, e quale parte invece i dati che non voglio "toccare"?
E una volta determinata la frequenza in cui attenuare il rumore come è possibile creare un filtro che mi consenta di poter successivamente integrare il segnale?
Link delle foto della trasformata di Fourier, e del Segnale Originale.
http://imgur.com/e9Zn5kG
http://imgur.com/k3TJiZa