Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Immacolata Ortosecco » 4.Approfondimento su convoluzione e correlazione


Complementi a operazioni non elementari su segnali nel dominio del tempo

  • Convoluzione $y[n]=\sum_{k=-\infty}^{\infty}x[k]h[n-k]$
  • Correlazione $y[n]=\sum_{k=-\infty}^{\infty}x[k]h[n+k]$

Complementi per la convoluzione

La convoluzione: calcolo analitico

Esempio di calcolo analitico dell’operazione di convoluzione $y[n]=\sum_{k=-\infty}^{\infty}x[k]h[n-k]$.

Assegnate la sequenza di input e la sequenza risposta all’impulso, occorre considerare le sequenze sull’indice k,la prima come x[k] e la sequenza h[n-k] come sequenza in k , foldata e shiftata di n, cioè h[-k +n] =h[-(k-n)].
Si procede poi alla somma dei prodotti dei campioni di posto omologo della sequenza input e della sequenza h foldata e shiftata.

In molti casi il calcolo della covoluzione comporta la valutazione di serie geometriche del tipo:

$\sum_{n=0}^{\infty}a^{n}=\frac{1}{1-a}$

con a<1

$\sum_{n=N_{1}}^{N_{2}}a^{n}=\frac{a^{N_{1}}-a^{N_{2}+1}}{1-a}$

con N2 ≥ N1

Un esempio molto significativo di calcolo analitico della covoluzione è l’ esempio 2.13 del capitolo 2 di Oppenheim – Schafer –Buck.

Convoluzione mediante calcolo matriciale con matlab

Esempio: assegnate x[n]= {1, 2, 3, 4}, di lunghezza M=4 e h[n]={1, 0, 2, 1}, anch’essa di lunghezza N=4, i campioni della convoluzione  y[n]=\sum_{k=-\infty}^{\infty}x[k]h[n-k] sono in totale 4+4-1, e si otterranno secondo lo schema che segue, che è alla base di un prodotto matriciale.

Occorre costruire una matrice C di M+N-1 righe e N colonne.

Fissato e visualizzato x[n], come su di un nastro, consideriamo h[-n ]come su un altro nastro scorrevole dove possa shiftare verso destra
Immaginare che ogni riga della matrice C si riempie con i valori di h[-n] ad ogni shift di h[-n] verso destra. Ogni volta che si fa uno shift si riempie una riga della matrice C. Si procede così fino a che non si esauriscono tutti i valori della sovrapposizione dei due segnali x[n] ed h[-n].

Convoluzione mediante calcolo matriciale con matlab (segue)

Quindi, la prima riga conterrà il primo elemento di h[-n], la seconda conterrà il primo e il secondo, la terza il primo il secondo e il terzo e così via.
\begin{array}{cccc}<br />
1 & 0 & 0 & 0\\0 & 1 & 0 & 0\\2 & 0 & 1 & 0\\1 & 2 & 0 & 1\\0 & 1 & 2 & 0\\0 & 0 & 1 & 2\\0 & 0 & 0 & 1\end{array}

Moltiplicando righe per colonne la matrice C per x[n]‘ (come vettore colonna) , si otterranno i campioni della convoluzione.
La matrice C è una matrice ‘circolante’ , infatti se guardata per colonne si vede che i valori shiftano verso il basso, spostandosi di un elemento alla volta, su ogni colonna, fino a collocare i campioni di h[n] sull’ultima colonna.
In Matlab si può generare la matrice C con una matrice di Toeplitz, dove però occorre dichiarare due vettori a e b. il primo conterrà tutti gli elementi di h[n] + tanti zeri per arrivare ad un numero di righe pari M+N-1. Per il secondo vettore è necessario solo il primo elemento di h[n] ed i successivi elementi saranno tanti zeri quanti sono gli elementi di x[n] -1.

Prodotto matriciale in matlab per la convoluzione

C=toeplitz([1 0 2 1 0 0 0],[1 0 0 0 ])

C =

1 0 0 0
0 1 0 0
2 0 1 0
1 2 0 1
0 1 2 0
0 0 1 2
0 0 0 1

xn=[1 2 3 4];

Prodotto matriciale in matlab per la convoluzione (segue)

convoluzione=C*xn’

convoluzione =

1
2
5
9
8
11
4

Verificare il risultato con la function conv di matlab.

La function conv(a,b) di matlab dà in sostanza i coefficienti del polinomio prodotto di due polinomi i cui coefficienti sono rappresentati dai valori di a e b.

Un’applicazione della convoluzione

Convolvere un segnale sinusoidale rumoroso con un segnale rettangolare produce un effetto di attenuazione del rumore. Vengono attenuate le variazioni rapide del segnale e conservate quelle lente. Vedremo poi, questo comportamento nel dominio delle frequenze, come un’azione di filtraggio.
Adesso osserviamo l’effetto qualitativo su un segnale sinusoidale con rumore. Il segnale sinusoidale ha tre cicli su 128 campioni, f=3/128.


Un’applicazione della convoluzione (segue)

Risultato della convoluzione tra segnale sinusoidale con rumore

yn=sin(2*pi*3*(1/128:1/128:1))+randn(1,128);

e un impulso rettangolare rett=[zeros(1,5) ones(1,20) zeros(1,5)];


Correlazione

La Correlazione è un altro strumento interessante per l’analisi dei segnali nel dominio del tempo. In particolare per stabilire il grado di somiglianza tra due segnali, oppure riconoscere la presenza di un’eco nel rumore come nel caso di un segnale radar.

Ricordiamo la definizione.

Dati due segnali discreti, x[n], di N campioni e z[n] di M campioni, si definisce correlazione delle due sequenze la sequenza  $y[n]=\sum_{k=-\infty}^{+\infty}x[k]z[n+k]$ oppure $y[n]=\sum_{k=-\infty}^{+\infty}z[k]x[n+k]$.

Vale anche per essa la proprietà commutativa e il numero dei suoi campioni è N+M-1 come nella convoluzione.

Calcolo di un singolo punto per la correlazione

Caso tempo continuo
Un segnale è shiftato rispetto all’altro.
La quantità di shift dà la posizione della funzione di correlazione.
Ciascun elemento di un segnale è moltiplicato per il corrispondente elemento dell’altro.
Viene fatto l’integrale dell’area sotto la curva.
Si continua con shift, prodotti e accumulazione fino ad esaurire le sovrapposizioni dei due segnali.

Caso tempo discreto
La procedura è analoga, ma viene fatta una sommatoria invece dell’integrale.
La correlazione richiede una notevole quantità di calcoli.
Se un segnale è di lunghezza N e l’altro è di lunghezza M, abbiamo bisogno di N x M moltiplicazioni per calcolare l’intera funzione di correlazione e dobbiamo anche accumulare i prodotti.

Correlazione

È possibile fare la correlazione di un segnale con se stesso, in tal caso si parla di autocorrelazione.
In questo caso la correlazione è massima,perché la somiglianza è massima.
Nel caso di due segnali diversi si parla di cross-correlation. L’operazione si può anche realizzare graficamente come nella convoluzione, ma non si deve fare il ‘time reversal’ di uno dei due segnali. Vedi slide precedente.

Per il calcolo della funzione di correlazione si può procedere con il calcolo matriciale, con le matrici circolanti, (toeplitz), come nel caso della convoluzione, oppure in maniera più veloce con la function xcorr di matlab.

Vedere l’help di xcorr per le opzioni del calcolo in matlab.

Correlazione: visualizzazione grafica


Correlazione: visualizzazione grafica (segue)


Alcune applicazioni

Correlazione per:

1. Visualizzare un segnale deterministico nel rumore.
2. Localizzare un segnale noto.
3. Cross-correlazione per identificare un segnale.

Alcuni esempi di autocorrelazione

Nella slide che segue sono riportati due esempi di autocorrelazione.
Il primo relativo a un segnale di rumore random e il secondo relativo ad un segnale periodico.

Come detto precedentemente sono evidenti i massimi della correlazione dei segnali con se stessi dove lo shift è zero.

Per tutti gli altri shift i valori sono minori.

Il segnale di rumore è stato realizzato con la function matlab randn, che ci fornisce un vettore di numeri pseudorandom normalmente distribuiti.

La sua auto-correlazione è un impulso di ampiezza pari alla varianza del segnale di rumore.

Alcuni esempi di autocorrelazione (segue)


Osservazioni

Quando i due segnali sono simili e non shiftati l’uno rispetto all’altro, il loro prodotto è tutto positivo e l’area sotto la curva dà il valore della funzione di correlazione al punto zero.

Quando un segnale è shiftato rispetto all’altro, i segnali vanno fuori fase, i picchi non coincidono più, il prodotto può essere negativo.

Somiglia un po’ ad un’interferenza distruttiva. L’area sotto questa curva dà il valore della funzione di correlazione al valore dello shift. Le parti negative della curva ora si cancellano con le positive, così la funzione di correlazione ha valori più piccoli.

Il massimo della correlazione è un indice di quando i segnali sono in fase.

Evidenziare un segnale deterministico nel rumore

Nei grafici seguenti vengono mostrati

  • Un segnale deterministico nascosto nel rumore
  • L’autocorrelazione del segnale che mostra le due tipiche autocorrelazioni sovrapposte: quella del rumore e quella segnale deterministico.

Le tipologie di segnali esaminate hanno una autocorrelazione ben riconoscibile.

La crosscorrelation può essere usata per rivelare e localizzare segnali di riferimento noti all’interno del rumore.

Evidenziare un segnale deterministico nel rumore (segue)


Un’applicazione della correlazione

La possibilità di riconoscere un segnale viene sfruttata nell’individuazione di sottomarini da parte di navi.
Quando si invia un segnale sonar, se questo viene riflesso da uno scafo, si riceve un segnale riflesso o eco. Il segnale ricevuto viene correlato con i segnali appartenenti ad una collezione di segnali risposta di un data base precedentemente costruito. Quando si trova la massima correlazione tra il segnale eco ed uno dei segnali del data base, si può affermare che lo scafo è stato riconosciuto.

Con l’esempio che segue vedremo un’applicazione della correlazione per il riconoscimento di segnali vocali.

Dato un segnale vocale, sono stati estratti da esso tre frammenti della lunghezza di 52 ms. Due sono relativi a vocali o ed uno alla consonante s.

I segnali campionati sono stati memorizzati in variabili contenute nei files in materiali audio. Se si dispone ad esempio di una collezione di vocali e di consonanti è possibile riconoscere se un segnale è una vocale o una consonante mediante la funzione di correlazione.
Di seguito sono riportate le funzioni di auto e crosscorrelazione per i tre frammenti vocali.
Le vocali sono segnali periodici, la consonante s è un segnale di rumore.

Frammenti di vocali

Vocali o e consonante s a confronto


Crosscorrelazioni di vocali o e consonante s a confronto


Osservazioni finali

Come si vede dalle crosscorrelazioni, si può affermare che la correlazione tra le due vocali o è molto somigliante ad un’autocorrelazione di vocale, mentre la correlazione con la consonante s fornisce un segnale che è poco somigliante sia alle autocorrelazioni delle vocali che all’autocorrelazione della consonante.
Se una delle due vocali o fosse un segnale incognito da classificare, potremmo concludere che non appartiene alla classe consonanti, ma che è con elevata probabilità una vocale.

Esercizi

Correlazione e convoluzione

Se uno dei due segnali è simmetrico cosa succede a correlazione e convoluzione?
Se entrambi i segnali sono simmetrici, cosa succede a correlazione e convoluzione?
Verificare con segnali di prova costruiti con matlab.

Costruire un più ampio insieme di segnali vocali per valutare la correlazione tra vocali e poi tra vocali e consonanti.

L’analisi dei segnali nel dominio del tempo

Comprende numerosi altre elaborazioni e metodiche che vanno dalle più semplici quali: zero crossing, media, energia e potenza ad altre più articolate che consentono di fare previsioni sul campione n-esimo di una sequenza conoscendo p valori passati come la predizione lineare (LPC), oltre alla correlazione appena vista.

I materiali di supporto della lezione

Capitolo II Oppenheim Schafer Buck.

Esercizi alla fine del 2° capitolo.

Proakis e Manolakis – Digital Signal Processing.

Applets convoluzione, correlazione approccio grafico

Matlab

Frammenti di vocali

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion