GNU Octave: esempi di Digital Signal Processing

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

No comments yet

Post a comment

    Login or Signup to post a comment
    Edit your comment Cancel

    Favorites, Groups & Events

    GNU Octave: esempi di Digital Signal Processing - Presentation Transcript

    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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

    + Andrea SpadacciniAndrea Spadaccini, 10 months ago

     

    1275 views

    About this presentation

    © All Rights Reserved

    • Downloads 10
    • Total Views 1275
      • 1275 on SlideShare
    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint