Durante la lezione del 16 marzo, il dott. Zuliani ci ha spiegato che il modo migliore per determinare il ritardo tra due segnali è studiare il prodotto di convoluzione.
Così, mercoledì 23, a scuola, abbiamo provato ad applicare questa tecnica su una coppia di segnali simulati al foglio di calcolo.
La convoluzione è una operazione funzionale, che misura la sovrapposizione tra due curve.
L'immagine animata di Wikipedia, che riportiamo anche qui sotto, è estremamente utile a capire il meccanismo della funzione di convoluzione.
Nell'immagine si osserva il processo di avvicinamento, sovrapposizione e successivo allontanamento reciproco tra due segnali rettangolari semplici.
Nella fase iniziale e in quella finale, i due segnali sono del tutto separati. Se, per uno di questi istanti, moltiplichiamo il valore di una delle due onde, per il valore dell'altra, otteniamo necessariamente un risultato nullo, proprio perché i due segnali sono del tutto separati tra loro.
Quando però i segnali cominciano a sovrapporsi, il loro prodotto non è più nullo in tutti i punti, ma comincia ad assumere alcuni valori di versi da zero.
In questa fase, il valore istantaneo della funzione di convoluzione è uguale all'area colorata in giallo nella figura diventa massimo nell'istante in cui i due segnali combaciano e ritorna a diminuire subito dopo, dando origine al profilo triangolare colorato in nero.
Noi, in laboratorio di informatica, abbiamo provato a realizzare la convoluzione di due segnali usando un semplice foglio di calcolo.
Il modello del foglio di calcolo può essere scaricato qui.
Sotto, invece, abbiamo un'immagine di una schermata durante il lavoro:
L'algoritmo usato per realizzare i grafici è molto semplice.
La prima colonna verticale1) rappresenta lo scorrere del tempo. La seconda e la terza2) rappresentano l'ampiezza istantanea di due segnali simulati manualmente.
Ciascun segnale ha la forma di un impulso rettangolare positivo seguito da un impulso rettangolare negativo.
La seconda onda, nella colonna C, è ritardata rispetto alla prima e dimezzata in intensità, per simulare uno smorzamento.
Tutte le colonne adiacenti contengono i prodotti di convoluzione.
La casella D5, ad esempio, contiene il prodotto di B5*C5, la casella D6, invece, il prodotto di B6*C6, e così via scendendo.
Si può osservare che il prodotto di convoluzione della colonna D è una sequenza di zeri, perché le nostre due onde non hanno alcuna sovrapposizione.
Le colonne successive calcolano il prodotto di convoluzione, calcolato con un'anticipo del secondo segnale.
Questo significa, ad esempio, che la casella E5 contiene il prodotto di B5*C6, mentre la casella F5 contiene il prodotto B5*C7.
In questo modo si ottiene l'effetto di anticipare l'onda C, avvicinando il suo profilo a quello dell'onda che la precede.
Possiamo osservare che la colonna E è completamente nulla, come la colonna D, ma la colonna F no, perché la testa del segnale C comincia a sovrapporsi alla coda del segnale B.
Nelle righe 1 e 2 abbiamo riportato la somma di ciascuna colonna sottostante in funzione dell'anticipo nel calcolo della convoluzione. Possiamo osservare che queste somme aumentano quando le curve si avvicinano tra loro, fino a raggiungere un massimo quando la traslazione relativa è uguale a 11, che è proprio il ritardo tra le due curve originali della nostra simulazione.
Alla fine della lezione, alcuni di noi hanno aggiunto al segnale una piccola quantità di rumore, usando la funzione casuale() del foglio di calcolo, per mostrare la capacità del meccanismo di convoluzione di assorbire la presenza eventuali di errori nella rilevazione del segnale.
Questo accade perché il rumore, avendo una distribuzione casuale, produce un numero di prodotti positivi mediamente uguale al numero di prodotti negativi che non contribuisce in modo significativo alla somma complessiva di convoluzione.