GNU Octave: esempi di Digital Signal Processing

                     Ing. Andrea Spadaccini
                 a.spadaccini...
Sommario




         Elaborazioni nel dominio del tempo
         Esempio di analisi in frequenza




Ing. Andrea Spadacci...
Suddivisione in trame                 Funzioni finestra             Ricampionamento                  Cross-correlazione



...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




La funzio...
Suddivisione in trame                 Funzioni finestra         Ricampionamento                  Cross-correlazione




buf...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




buffer: E...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




Funzioni ...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




Plot dell...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




Ricampion...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




Esempio d...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




Cross-cor...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




Cross-cor...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




Esempio: ...
Suddivisione in trame                 Funzioni finestra   Ricampionamento                  Cross-correlazione




Esempio: ...
FFT di una cosinusoide




                                                  Parte II

                             Esempi...
FFT di una cosinusoide




Trasformata di Fourier di un coseno
  Un pizzico di teoria (di nuovo?)
  Trasformata di Fourier...
FFT di una cosinusoide




Primi passi

  La funzione fft
  Prende in input un vettore (o una matrice), e restituisce un v...
FFT di una cosinusoide




Il giusto ordine


  La funzione fftswitch
  Manipola il risultato di fft in modo da avvicinare...
FFT di una cosinusoide




Le giuste proporzioni

  L’asse delle frequenze
  Ciascun elemento del vettore FFT non rapprese...
Riferimenti


  Sito ufficiale di GNU Octave
  http://www.octave.org

  Documentazione
  John W. Eaton et al. GNU Octave Man...
Licenza

  Licenza Creative Commons
  Questo lavoro ` rilasciato sotto licenza Creative Commons
                 e
  Attri...
Upcoming SlideShare
Loading in...5
×

GNU Octave: esempi di Digital Signal Processing

2,854

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,854
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
51
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

GNU Octave: esempi di Digital Signal Processing

  1. 1. GNU Octave: esempi di Digital Signal Processing Ing. Andrea Spadaccini a.spadaccini@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Universit` di Catania a 20 Maggio 2009
  2. 2. Sommario Elaborazioni nel dominio del tempo Esempio di analisi in frequenza Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  3. 3. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Parte I Elaborazioni nel dominio del tempo Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  4. 4. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione La funzione buffer Suddivisione in trame Spesso, per elaborare un segnale pu` essere utile suddividerlo in trame, o eventualmente sovrapponendo parte del segnale. In GNU Octave, questo si ottiene con la funzione buffer, presente nel package Signal Processing. Sintassi di buffer buffer(signal, frame-size, overlap) signal il segnale da suddividere in trame frame-size dimensione della trama overlap numero di campioni della trama precedente da riportare (o da saltare, se negativo) Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  5. 5. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione buffer: Esempio >> s = 1:20; >> b = buffer(s, 4) b = 1 5 9 13 17 2 6 10 14 18 3 7 11 15 19 4 8 12 16 20 >> b = buffer(s, 4, 1) b = 0 3 6 9 12 15 18 1 4 7 10 13 16 19 2 5 8 11 14 17 20 3 6 9 12 15 18 0 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  6. 6. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione buffer: Esempio con overlap negativo >> s = 1:20; >> b = buffer(s, 4, -1) b = 1 6 11 16 2 7 12 17 3 8 13 18 4 9 14 19 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  7. 7. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Funzioni finestra Scopo Per evitare problemi come la perdita spettrale (spectral leakage) a volte si ricorre all’applicazioni di finestre differenti dalla semplice finestra rettangolare. Esempi di finestra Entrambe le funzioni richiedono come parametro solo il numero di punti. Hamming Hann (o Hanning) Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  8. 8. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Plot delle due finestre >> figure; >> subplot(311); >> plot(hamming(100)); >> subplot(312); >> plot(hanning(100)); >> subplot(313); >> plot(hamming(100) - hanning(100)); Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  9. 9. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Ricampionamento (resampling) Scopo L’idea alla base del ricampionamento (resampling) ` quella di variare la e frequenza di campionamento di un segnale, generalmente sottocampionandolo per elaborazioni successive. La funzione resample Sintassi: y = resample(x, p, q) x ` il segnale da ricampionare e p e q costituiscono il numero p/q, ovvero il fattore da utilizzare per variare la frequenza di campionamento. Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  10. 10. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Esempio di ricampionamento >> Fs = 100; >> Fo = 4; >> Ts = 1 / Fs; >> t = 0 : Ts : 1 - Ts; >> y = sin(2 * pi * Fo * t); >> plot(t, y) >> rs_y = resample(y, 1, 2); >> new_t = 0 : 2 * Ts : 1 - Ts >> figure >> subplot(211) >> plot(t, y) >> subplot(212) >> plot(new_t, rs_y); Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  11. 11. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Cross-correlazione (I) Un pizzico di teoria Autocorrelazione di due segnali discreti x ed y al variare dell’intervallo (lag) k: N−k   1   xi yi−k k ≥ 0 Rxy (k) = N −k (1) i=1    Ryx (−k) k ≤0 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  12. 12. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Cross-correlazione (II) La funzione xcorr La funzione xcorr consente di computare la cross-correlazione di due segnali. Sintassi: [R, lag] = xcorr(X[, Y] [, maxlag] [, scale]). X ` il primo segnale e Y, se presente, ` il secondo segnale e maxlag, se presente, imposta l’intervallo di variazione di lag a [−maxlag:maxlag] (altrimenti maxlag = max(length(X), length(Y)) - 1) scale, se presente, definisce la tipologia di normalizzazione della somma. Utilizzare ’coeff’ per normalizzare con Rxy (0) (ovvero il massimo). Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  13. 13. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Esempio: periodo di un segnale periodico (I) Autocorrelazione e segnali periodici Nel caso di segnali reali periodici (infiniti!), il lag del primo massimo positivo dell’autocorrelazione corrisponde al periodo del segnale. Implementeremo qualcosa di simile, anche se non possiamo generare segnali periodici. >> T = 10; % periodo desiderato: 10 secondi >> Fs = 1000; >> Ts = 1 / Fs; >> t = 1 : Ts : 100 - Ts; >> y = sin(2 * pi * (1/T) * t); >> [R, lag] = xcorr(y); Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  14. 14. Suddivisione in trame Funzioni finestra Ricampionamento Cross-correlazione Esempio: periodo di un segnale periodico (II) >> mid = ceil(length(R) / 2); >> [min_val, min_idx] = min(R(mid:end)); >> [max_val, max_idx] = max(R(mid + min_idx:end)); >> idx = mid + min_idx + max_idx; >> lag(idx) * Ts ans = 9.9910 Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  15. 15. FFT di una cosinusoide Parte II Esempio di analisi in frequenza Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  16. 16. FFT di una cosinusoide Trasformata di Fourier di un coseno Un pizzico di teoria (di nuovo?) Trasformata di Fourier di un coseno: 1 1 F [cos(2πf0 t)] = δ(f + f0 ) + δ(f − f0 ) 2 2 FT, DFT, FFT La normale Trasformata di Fourier (FT) si applica a segnali continui. La DFT (Discrete Fourier Transform) ` la FT per segnali discreti. e La FFT (Fast Fourier Transform) ` un’implementazione (veloce!) di e DFT. Variante pi` utilizzata: FFTW (Fastest Fourier Transform in u the West). Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  17. 17. FFT di una cosinusoide Primi passi La funzione fft Prende in input un vettore (o una matrice), e restituisce un vettore contenente il risultato dell’esecuzione dell’algoritmo FFT. >> Fs = 100; >> Ts = 1 / Fs; >> F0 = 4; >> t = 0 : Ts : 1 - Ts; >> y = sin(2*pi*F0*t); >> plot(t, y); >> Fy = fft(f); >> plot(abs(Fy)); % difficile da comprendere Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  18. 18. FFT di una cosinusoide Il giusto ordine La funzione fftswitch Manipola il risultato di fft in modo da avvicinare le frequenze basse al centro del vettore (in sostanza effettua il flipping delle due met` del a risultato di fft) >> Fy = abs(fftswitch(Fy)); >> plot(Fy) >> stem(Fy) % tipo di grafico pi` indicativo u Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  19. 19. FFT di una cosinusoide Le giuste proporzioni L’asse delle frequenze Ciascun elemento del vettore FFT non rappresenta una frequenza, ma un insieme (bin) di frequenze. Dobbiamo generare un asse delle frequenze in funzione della frequenza di campionamento. >> n = length(Fy); >> f = -n/2 : n/2 - 1; >> f = f * (Fs / n); >> Fy = Fy / n; % normalizzazione valori FFT >> stem(f, Fy) % tipo di grafico pi` indicativo u >> xlabel(’Frequency bins (Hz)’) Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  20. 20. Riferimenti Sito ufficiale di GNU Octave http://www.octave.org Documentazione John W. Eaton et al. GNU Octave Manual - http://www.gnu.org/software/octave/doc/interpreter/ http://en.wikipedia.org/wiki/Window function http://blinkdagger.com/matlab/matlab-introductory-fft-tutorial http://fftw.org Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  21. 21. Licenza Licenza Creative Commons Questo lavoro ` rilasciato sotto licenza Creative Commons e Attribution-Share Alike 2.5 Italy (http://creativecommons.org/licenses/by-sa/2.5/it/) Significato della licenza La presentazione ` liberamente scaricabile e redistribuibile per e qualsiasi fine ` E necessario citare l’autore ` E necessario redistribuire secondo gli stessi termini eventuali lavori derivati da questa presentazione Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania a GNU Octave: esempi di Digital Signal Processing
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×