Analisi di segnali in SciPy -...
Transcript of Analisi di segnali in SciPy -...
![Page 1: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/1.jpg)
Analisi di segnali in SciPy
Marco D. Santambrogio – [email protected] Cerina – [email protected] Del Sozzo – [email protected] Di Tucci – [email protected] Natale – [email protected] Rabozzi – [email protected] Scolari – [email protected]. aggiornata al 18 Novembre 2016
![Page 2: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/2.jpg)
SciPy
• SciPy è un modulo di Python orientato al calcolo scientifico
• I sotto-moduli di SciPy permettono di agire su diversi applicazioni, come interpolazione, integrazione, ottimizzazione, elaborazione di immagini, statistica, algebra lineare, analisi di segnali, …
• SciPy è disegnato per operare in modo efficiente su array NumPy, quindi conviene importare anche NumPy quando si usa SciPy
• La documentazione di ScyPy è disponibile a questo link:http://docs.scipy.org/doc/scipy/reference/
2
![Page 3: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/3.jpg)
Moduli SciPy
I principali moduli disponibili all’interno di SciPy sono:
3
Sotto-modulo Applicazione
scipy.cluster Quantizzazionevettoriale/Kmeansscipy.constants Costantifisicheematematichescipy.fftpack TrasformatadiFourierscipy.integrate Integrazionescipy.interpolate Interpolazionescipy.io Input&outputdidatiscipy.linalg Algebralinearescipy.ndimage Immaginin-dimensionali
![Page 4: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/4.jpg)
Moduli SciPy
Noi ci concentreremo solamente sull’elaborazione di segnali
4
Sotto-modulo Applicazione
scipy.odr Regressioneortogonalescipy.optimize Ottimizzazionescipy.signal Elaborazionedisegnaliscipy.sparse Matricisparsescipy.spatial Algoritmiestrutturedatispazialiscipy.special Funzionimatematichespecialiscipy.stats Statistica
![Page 5: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/5.jpg)
Filtri a tempo discreto
• I filtri a tempo discreto possono essere classificati in Finite Impulse Response (FIR) e Infinite Impulse Response (IIR)
• SciPy permette di usare entrambi I tipi di filtri tramite varie funzioni, come firwin, firwin2, iirdesign e iirfilter
• SciPy mette a dispozione anche altri tipi di filtri (mediano, Wiener, Hilbert, ecc.)
• Guardate la documentazione o usare help(signal) per vedere quali altri filtri sono a disposizione
5
![Page 6: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/6.jpg)
firwin
• La funzione firwin permette di creare un filtro basato sul metodo delle finestre
• In base agli argomenti dati alla funzione, è possibile ottenere diversi tipi di filtri (passa basso, passa banda, ecc.)
6
output=signal.firwin(numtaps,cutoff,width=None,window=‘hamming’,pass_zero=True,scale=True,nyq=1.0)
Lunghezzadelfiltro(numerodicoefficienti)
Frequenzeditagliofloatolista(banda)
Larghezzadellaregioneditransizione
Finestradausare
SeTrue,ilguadagnoallafrequenza0è1
SeTrue,Icoefficientisonoscalatiperottenere1comerisposta
infrequenzaadunacertafrequenza
FrequenzadiNyquist
NdarrayIcoefficientidel
filtroFIR
![Page 7: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/7.jpg)
freqz
• Una volta calcolati i coefficienti, la funzione freqz, calcola le risposte in frequenza di un filtro digitale
7
w,h=signal.freqz(b,a=1,worN=None,whole=0,plot=None)
Numeratoredelfiltrolineare
Numerodifrequenzedacomputareintornoalcerchio
unitarioDefault=512frequenze
Se0,lefrequenzesonocalcolateda0allafrequenzadiNyquist
SeTrue,da0a2𝜋
E’possibilepassareunafunzionechedisegnidirettamenteweh
w:lefrequenzenormalizzaacuièstatacomputatah(ndarray)h:larispostainfrequenza(ndarray)
Denominatoredelfiltrolineare
![Page 8: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/8.jpg)
Esempio filtro FIR usando la funzione firwin
8
Frequenzeditaglionormalizzate
![Page 9: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/9.jpg)
Applicare filtri sui dati
• Una volta generato un filtro FIR/IIR, è possibile applicarlo su dei dati che devono essere filtrati
• Le principali funzioni che si possono usare sono:• lfilter: filtra i dati su una dimensione applicando un filtro
FIR/IIR• filtfilt: applica un doppio filtro sui dati
9
![Page 10: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/10.jpg)
lfilter e filtfilt
10
output=signal.lfilter(b,a,x,axis=-1,zi=None)
b,a:vettoredeicoefficientidelnumeratore(denominatore) Datidiinput
Asselungoilqualeapplicareilfiltro
Condizioneinizialeperilritardodelfiltro
output=signal.filtfilt(b,a,x,axis=-1,padtype=‘odd’,padlen=None,method=‘pad’,irlen=None)
Datifiltrati
Datifiltrati
![Page 11: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/11.jpg)
Esempio di filtro sui dati
11
![Page 12: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/12.jpg)
Esempio di filtro sui dati
12
![Page 13: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/13.jpg)
Analisi spettrale
• SciPy fornisce funzioni per calcolare la densità spettrale
• Ad esempio, si può usare il metodo del periodogramma o il metodo di Welch
13
f,Pxx=signal.periodogram(x,fs=1.0,window=None,nfft=None,detrend=‘constant’,return_onesided=True,scaling=‘density’,axis=-1)
f,Pxx=signal.welch(x,fs=1.0,window=‘hanning’,nperseg=256,noverlap=None,nfft=None,detrend=‘constant’,return_onesided=True,scaling=‘density’,axis=-1)
x =serietemporaledeivalorimisurati
fs =requenzadicampionamento
f =ArraydifrequenzecampionatePxx =densitàspettraledix
![Page 14: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/14.jpg)
Esempio con metodo del periodogramma
14
Plotinscalalogaritmica
Punticasualisecondounadistribuzionenormalescale=deviazionestandardsize=shapedioutput
![Page 15: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/15.jpg)
Esempio con metodo di Welch
15
Plotinscalalogaritmica
Punticasualisecondounadistribuzionenormalescale=deviazionestandardsize=shapedioutput
![Page 16: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/16.jpg)
Altri filtri
• SciPy fornisce altri tipi di filtri che possono essere applicati ad immagini
• E’ possibile applicare filtri di covoluzione e correlazione:• Edge detection• Blur• …
16
![Page 17: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/17.jpg)
Esempio filtro su immagine
17
Ilmodulomiscforniscevariefunzionalitàcomeimmaginisucuiapplicarefiltri
ApplicaunaconvoluzioneaidueinputusandolatrasformatadiFourierveloce
![Page 18: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/18.jpg)
Accesso a file con NumPy e SciPy
• Anche NumPy e SciPy forniscono funzioni per agire su filehttp://docs.scipy.org/doc/numpy/reference/routines.io.html
• Le funzioni:np.load(nomeFile, …)
np.save(nomeFile, array, …)
servono per caricare e salvare un array NumPy su file .npy, .npz
18
![Page 19: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/19.jpg)
Accesso a file con NumPy e SciPy
• La funzione:np.savez(nomeFile, *args, **kwds)
permette di salvare più array NumPy sotto forma di un dizionario (file .npz)
• Le funzioni:np.loadtxt(nomeFile, …)
np.savetxt(nomeFile, array, …)
servono per caricare e salvare un array NumPy su file di testo
19
![Page 20: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/20.jpg)
Esempio accesso file con NumPy
20
![Page 21: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/21.jpg)
Esercizio 1
Dato il segnale ecg presente nel file ecg.txt, scrivere un programma Python che applica un filtro FIR sul segnale per eliminare i 50HzIl segnale ecg è stato campionato a 1KHzRappresentare sia un grafico della risposta in frequenza che del segnale prima e dopo il filtro
21
![Page 22: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/22.jpg)
Soluzione 1
22
![Page 23: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/23.jpg)
MATERIALE AGGIUNTIVO SUI FILTRI
23
![Page 24: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/24.jpg)
firwin2
• La funzione firwin2 permette di definire risposte in frequenza arbitrarie specificando una lista di frequenze e i loro relativi guadagni
24
output=signal.firwin2(numtaps,freq,gain,nfreqs=None,window=‘hamming’,nyq=1.0,antisymmetric=False)
Lunghezzadelfiltro(numerodicoefficienti)
Listadifrequenzecampione
ListadiguadagniFinestradausare Seilrisultanteimpulsoèsimmetrico
oantisimmetrico
FrequenzadiNyquist
NdarrayIcoefficientidel
filtroFIR
Dimensionedellameshdiinterpolazione
![Page 25: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/25.jpg)
Esempio filtro FIR usando la funzione firwin2
25
![Page 26: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/26.jpg)
Filtri IIR - iirfilter• SciPy fornisce due funzioni per I filtri IIR: iirdesign e iirfilter
• E’ possibile impostare il tipo di filtro da applicare
26
output=signal.iirfilter(N,Wn,rp=None,rs=None,btype=‘band’,analog=False,ftype=‘butter’,output=‘ba’)
Ordinedelfiltro
PerIfiltridiChebyshevoellittici,èl’oscillazione(ripple)massimanellabandapassante
PerIfiltridiChebyshevoellittici,èl’attenuazioneminima
nellabandaeliminata
TipodifiltroIIRdaprogettare:• Butterworth• ChebyshevI• ChebyshevII• Causer/elliptic• Bessel/Thomson
Tipodioutput:• Numeratore/denominatore(‘ba’)• Polo-zero(‘zpk’)• Sezionidisecondoordine(‘sos’)
Frequenzaangolare(perfiltrianalogici)Normalizzatatra0a1(perfiltridigitali)
Tipodifiltro:- bandpass- lowpass- highpass- bandstop
SeTrue,restituisceunfiltroanalogico,digitalealtrimenti
![Page 27: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/27.jpg)
Filtri IIR - iirdesign
27
output=signal.iirdesign(wp,ws,gpass,gstop,analog=False,ftype=‘ellip’,output=‘ba’)
wp ews sono,rispettivamente,lefrequenzepassaedeliminabanda
gpass egstop sono,rispettivamente,laperditamassimainbandapassanteelaminimaattenuazioneineliminabanda
Stessiargomentiiirfilter
![Page 28: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/28.jpg)
Esempio filtro IIR digitale
28
![Page 29: Analisi di segnali in SciPy - xph.necst.itxph.necst.it/2017/software/lessons/Lesson_3_PYNQ_part2.pdf · Frequenze di taglio float o lista (banda) Larghezza della regione di transizione](https://reader031.fdocument.pub/reader031/viewer/2022022115/5c6d001009d3f2f4358b84bd/html5/thumbnails/29.jpg)
Esempio filtro IIR analogico
29
freqs calcolalarispostainfrequenzadiunfiltroanalogico