View Full Version : [matlab] domanda banale: FFT e filtraggio
salve a tutti, mi servirebbe una mano...
ho un segnale di una misurazione importato in matlab...
è un array di 200000 campioni campionato a 80kHz
devo fare la fft e filtrare il segnale per eliminare almeno in parte il rumore... come posso fare?
inizialmente facevo così:
filtrato=fft(segnale, 200000);
ho poi provato a seguire l'help di matlab, ma il risultato non è ottimale
come mi consigliare di fare? inoltre per filtrare?!
ciao, innanzitutto grazie mille
ho fatto come dici, ma onestamente non con ottimi risultati...
http://img296.imageshack.us/img296/9539/filtraggioeu3.th.jpg (http://img296.imageshack.us/my.php?image=filtraggioeu3.jpg)
per farmi capire meglio, ecco tutto
il primo plot è il mio segnale acquisito
il secondo è un dettaglio preso dai campioni tra 10000 e 20000 del primo, per farti vedere il tipo di rumore che dovrei eliminare
il terzo è invece il plot(abs(fft(segnale)))
il terzo, è simmetrico rispetto al centro e presenta un picco iniziale e qualcosa all'altezza dei campioni tra 82000 e 84000 (ed il quarto plot è appunto questa piccola porzione ingrandita del terzo)
ora... ho anche provato a fare un filtro come dici tu, ho lanciato fdatool() e mi ha aperto il tool per creare i filtri
ho selezionato lowpass, fir equiripple
ho modificato le frequenze, impostando Fs a 80000(banda della scheda di acquisizione) Fpass a 34000(frequenza di campionamento del sensore di acquisizione) Fstop 100 campioni dopo....
poi? come faccio a salvarlo nella workspace e a poterlo utilizzare?
grazie mille in anticipo
serbring
19-07-2009, 10:02
riesumo questo thread che mi interessa. Ho un segnale campionato a 200Hz. Ne calcolo la fft, la grafico e poi ottengo un grafico simmetrico alla frequenza fc/2. Io posso tranquillamente trascurare la parte del grafico che và da fc/2 a fc, giusto?
serbring
20-07-2009, 15:37
avrei un altra domanda da porre, cosa mi fà in pratica la funzione fftshit? Da qualche parte ho letto che trasforma la fft centrandomela, ma a cosa mi può servire questa cosa? Una frequenza negativa a cosa mi corrisponde?
avrei un altra domanda da porre, cosa mi fà in pratica la funzione fftshit? Da qualche parte ho letto che trasforma la fft centrandomela, ma a cosa mi può servire questa cosa? Una frequenza negativa a cosa mi corrisponde?
Se non ricordo male dalla FFT che ottiene i primi metà campioni sono la metà destra del periodo e gli ultimi la metà sinistra, con fftshift ottieni quindi un grafico più comprensibile dato che hai a sinistra la metà sinistra del periodo e a destra la metà destra del periodo. Dove per periodo intendo la funzione perdiodica in frequenza che ottiene facendo la fft del segnale (dalla fft si ottengono infiniti campioni ma solo N sono distinti quindi Matlab ti mostra solo un periodo per intenderci)
serbring
22-07-2009, 16:09
credo di aver capito.
Ti ringrazio
serbring
13-08-2009, 21:15
ho un'altra domanda sulla DFT: non riesco a capire la differenza che si ha tra le due FRF nell'immagine presente a questo link:
http://www.megaportal.it/imghost/2009/08/13/2211271250194287.bmp
In pratica sono le FRF del segnale u(t)=cos(2*pigreco*5*t) finestrate con una finestra rettangolare , dove a sx ho la FRF finestrata continua, mentre a dx ho la FRF finestrata discreta. Come mai nella discreta non ci sono i piccoli picchi presenti nella continua?
serbring
14-08-2009, 10:56
allora :)
la finestratura nel dominio del tempo equivale alla convoluzione delle rispettive risposte in frequenza nel dominio della frequenza. in particolare, convoluisci due delta a omega = 2pigreco5 e sua controparte negativa, con un sinc(), ovvero lo spettro della finestra rettangolare. per segnali a tempo continuo, quindi, ottieni in frequenza i due sinc centrati rispettivamente in 2pigreco5 e sua controparte negativa (proprietà di campionamento della delta di dirac): questo sarebbe il primo spettro, quello a sinistra. la dft equivale a campionare in modo opportuno lo spettro continuo, e per questo motivo vedi solo le due delta, cioè perchè il campionamento lo hai solo per certe frequenze che non ti fanno vedere "bene" come sia lo spettro reale. questo problema infatti è un problema di risoluzione della DFT, se infatti facessi una DFT a risoluzione più elevata (maggior numero di punti) il campionamento dello spettro continuo sarebbe più fitto e riusciresti ad apprezzare meglio l'andamento che sarebbe più vicino allo spettro "vero" del segnale tempo continuo. Spero di essere stato chiaro, magari c'è qualche svarione teorico perchè rispondo così "a braccio", però il succo è questo. ciao :)
capito tutto ma se aumentassi la risoluzione poi non andrebbe bene perchè becco delle oscillazioni che non sono desiderate, giusto?
Ho un altra domanda, per evitare l'effetto del leakage devo acquisire un numero intero di periodi, quindi nel caso di acquisizioni ad alta frequenza, nel quale faccio fatica a stoppare l'acquisizione ad un numero intero di periodi, posso tagliare il segnale per raggiungere tale fine?
serbring
14-08-2009, 14:31
1) sinceramente, non mi ricordo se aumentare la risoluzione può portare problemi di questo tipo :)
2) si, credo proprio di si.
grazie mille antonio
serbring
18-08-2009, 09:36
ho un altra domanda...La finestratura è un procedimento automatico fatto dal software di acquisizione vero? Te lo chiedo perchè ho già fatto altre volte acquisizioni di segnali e non mi era mai stata chiesto come finestrare il segnale. Visto che per non avere leakage devo finestrare un numero intero di periodi, se non avessi un segnale periodico come cambia la questione?
serbring
19-08-2009, 20:32
quale software di acquisizione stai usando? in genere la finestratura se non ti dice nulla è rettangolare quindi poi puoi benissimo troncare i campioni per arrivare ad un numero intero di periodi.
ho usato un software della lms international.
Inoltre se non avessi un segnale periodico sai come viene gestita la finestratura?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.