# Calcolatore trasformata di Fourier

Il calcolatore della Trasformata Discreta di Fourier, (DFT), con algoritmi e figure.
In questa lezione illustriamo un caratteristico file di calcolo in grado di computare e tracciare il modulo dello spettro di un impulso qualsiasi secondo l'algoritmo della DFT ( Discrete Fourier Transformer).
Questa procedura è d'importanza fondamentale, ad esempio, nella determinazione della forma più adatta di un impulso sonar per generare uno spettro voluto per le applicazioni sui siluri.
S'inizia con evidenziare l'algoritmo dell'integrale di Fourier dal quale la DFT discende.
L'algoritmo dell'integrale di Fourier è mostrato nella figura seguente:
    $G(w)=\int _{-\infty }^{+\infty }F(t)e^{-j\ wt}\ dt$
consente, per via esclusivamente matematica, l'analisi dei fenomeni transitori di legge nota, F(t), funzioni del tempo, quali ad esempio l'impulso di sinusoidi di figura 2.
mediante la determimazione del loro spettro di frequenza G ( w ) mostrato in figura 3.
Se dell'impulso da analizzare non si conosce la legge F(t), come ad esempio per l'impulso casuale mostrato in figura 4:
l'integrale di fourier non è applicabile; è sostituibile, con buona approssimazione, dall'algoritmo DFT ( Discrete Fourier Transform ) che computa il modulo dello spettro, secondo l'espressione di figura 5.
    $\left\vert G(qf)\right\vert =\left[\left(\sum _{p=1}^{k}S(p)\cos \left({\frac {2\pi qp}{N}}\right)^{2}+\sum _{p=1}^{k}S(p)\sin \left({\frac {2\pi qp}{N}}\right)^{2}\right)\right]^{\frac {1}{2}}$
per un numero finito di campioni prelevati dall'impulso, mostrati in rosso in figura 6a:
La DFT computa un numero finito di valori del modulo della G(w) così come riportato in figura 6b:

## Esempio d'impostazione delle variabili di calcolo

Siano da determinare le variabili da mettere a calcolo per la costruzione del modulo dello spettro dell'impulso mostrato in figura 7 dal quale si dovranno ricavare un certo numero di campioni $k$; da $p1$ a $pk$.
Le variabili da calcolare, sulla base dell'algoritmo di figura 5, sono:
* $k=2\cdot T\cdot Fmax$ numero dei campioni da prelevare dall'impulso
* $N=2\cdot Fmax/DF$ divisore nello sviluppo di calcolo
* $q=Fmax/DF$ numero dei campioni che rappresenteranno il modulo dello spettro
Le caratteristiche temporali dell'impulso siano: $T/2=0.005\ S$. quindi $T=0.01\ S.$
Si voglia il campo di frequenza d'analisi compreso tra $0$ e $1000\ Hz$: quindi $Fmax=1000\ Hz$
Si voglia una definizione d'analisi in frequenza a passi di $25\ Hz$, quindi $DF=25\ Hz$
In base ai dati esposti si calcolano:
Il numero dei campioni da prelevare dall'impulso: $k=2\cdot T\cdot Fmax$ = $2\cdot 0.01\ S.\cdot 1000\ Hz=20$
Il valore di $N:$ $N=2\cdot$ $Fmax/DF=2\cdot 1000/25$ = $80$
Il numero dei campioni che rappresenteranno il modulo dello spettro: $q=Fmax/DF$ = $1000/25=40$
Da rilievi su figura 7 si annotano le ampiezze dei $k$ valori dei campioni dell'impulso, da $p1$ a $p20$, evidenziati con righe rosse; questi saranno inseriti a calcolo l'uno dopo l'altro.

## Il pannello operativo del calcolatore DFT

Al'avvio del file eseguibile wikiDFT
oppure DFT sul P.C.si presenta il pannello operativo del calcolatore che riportiamin figura 8 con una serie di numeri in rosso per consentire l'identificazioni delle 5 sezioni funzionali:
Sezione 1 (ingresso dati) :
La sezione contiene 3 textbox nei quali inserire, l'una dopo l'altra, le seguenti variabili:
* Durata dell'impulso da analizzare espressa con $T\ (S)$
* Estremo della frequenza d'analisi espressa con $Fmax\ (Hz)$
* Intervallo voluto tra due campioni dello spettro con $DF\ (Hz)$
* Un pulsante " Dati a calcolo" per l'avvio delle computazioni
* Due label per l'indicazione dei valori calcolati: $k$( numero dei campioni da ricavare dall'impulso) e $q$( numero dei campioni che definiranno il modulo dello spettro di frequenza)
Al lancio del programma sono predisposti, in via provvisoria, i seguenti dati: $T=0.01\ S$ ; $Fmax=1000\ Hz$ ; $DF=1\ Hz$
* Sezione 2: (ingresso campioni impulso)
La sezione contiene:
* Un label, a sinistra, che indica il numero progressivo dei campioni dell'impulso da analizzare e un textbox, a destra, per l'inserzione delle ampiezze dei diversi campioni dell'impulso.
* Un pulsante "Ingresso campioni" per l'inserzione progressiva dei valori sopra citati ed un pulsante " Azzeramento memorie" per la ripetizione, se necessario, dell'inserzione dati.
Sezione 3: ( presentazione spettro) La sezione contiene:
* Il pulsante "Calcolo e presentazione spettro normalizzato " per l'avvio del programma di calcolo e presentazione grafica del modulo della DFT.
Sezione 4: ( reticolo cartesiano per il tracciamento del modulo dello spettro)
* In ascisse, la frequenza d'analisi $Fmax$ divisa in $40$ intervalli, con label indicativo dell'entità di ciascun intervallo in $Hz/Div$.
* In ordinate l'ampiezza dello spettro, in forma normalizzata in $20$ intervalli da $0.05/Div.$
Il grafico dello spettro, rappresentando l'ampiezza del modulo, sarà sempre positivo.
Sezione 5: (funzioni di controllo)
Con due pulsanti distinti è possibile tracciare, ai fini del controllo dei calcoli, il modulo dello spettro di due impulsi caratteristici:
* Impulso rettangolare (ottenuto da calcolo per via analitica)
* Impulso triangolare (ottenuto da calcolo per via analitica)
Questa sezione è utile per prendere confidenza, come vedremo, con il sistema di calcolo.

## Primo esempio di calcolo: DFT di un impulso rettangolare con controllo analitico

Per iniziare è utile l'utilizzo dei valori di base assegnati al calcolatore al momento dell'avvio, come mostra la figura 9 della sezione 1; con questi valori calcoleremo lo spettro di un impulso rettangoare:
per : $T=0.01\ S.$ - $Fmax=1000\ Hz$ - $DF=1\ Hz$,
dopo la pressione del pulsante "dati a calcolo", si ha : $k=20;q=1000$; dal calcolo emerge che sono necessari $k=20$ campioni dell'impulso
Quindi: ampiezza $E=1$, durata $T=0.01\ S.$, $k=20$.
I campioni dell'impulso, tutti uguali ad $1$, sono inseriti in sezione 2 digitando nel textbox il primo di ampiezza $1$ e di seguito, lasciando tale valore inalterato, premendo il pulsante "ingresso campioni" , s'inseriscono tutti gli altri 19 fino a quando il pulsante citato diventa rosso; vedi figura 10
Con la successiva pressione del pulsante di sezione 3, si ha la presentazione del modulo dello spettro come riportato in figura 11 con traccia in colore viola:
Per controllare la correttezza del processo DFT che ha portato allo spettro di figura 12 si può agire sulla sezione 5; pulsante " Controllo per impulso rettangolare" che consente, per la via puramente analitica mostrata in figura 12,
il tracciamento di una nuova curva di colore verde che, se il processo DFT svolto sarà corretto, si dovrà sovrapporre, con buona approssimazione, alla curva viola così come mostra figura 13:

## Secondo esempio di calcolo: DFT di un impulso triangolare con controllo analitico

Utilizziamo sempre i valori di base assegnati al calcolatore al momento dell'avvio, come mostra la figura 9 della sezione 1, impostiamo in questo esempio il calcolo dello spettro di un impulso triangolare:
per : $T=0.01\ S.$ - $Fmax=1000\ Hz$ - $DF=1\ Hz$,
dopo la pressione del pulsante "dati a calcolo", si ha :$k=20$ ;$q=1000$ .
L'impulso triangolare che vogliamo analizzare, della durata $T=0.01\ S.$ ha un profilo definito dalla seguente sequenza di $20$ valori:
$0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1;0.9;0.8;0.7;0.6;0.5;0.4;0.3;0.2;0.1;0$ i campioni sono inseriti in sezione 2 digitando nel textbox il primo di ampiezza $0.1$ ed in successione tutta la sequenza sopra scritta premendo il pulsante "ingresso campioni" fino a quando il pulsante citato diventa rosso.
Con la successiva pressione del pulsante di sezione 3, si ha la presentazione del modulo dello spettro come riportato in figura 14 con traccia in color viola:
Per controllare la correttezza del processo DFT che ha portato allo spettro di figura 14 si può agire sulla sezione 5; pulsante " Controllo per impulso triangolare" che consente, per la via puramente analitica mostrata in figura 15,
il tracciamento di una nuova curva di colore verde che, se il processo DFT svolto sarà corretto, si dovrà sovrapporre alla curva viola così come mostra figura 16:

## Terzo esempio di calcolo: DFT senza controllo analitico

Sia dato l'impulso di figura 17, di forma non codificata, del quale valutare lo spettro di frequenza mediante DFT:
I dati relativi all'impulso siano:
Durata:$T=0.0125\ S.$
Ampiezza massima:$E=1$
Massima frequenza voluta nella DFT: $Fmax=1000\ Hz$
Intervallo tra i campioni dello spettro:$DF=2\ Hz$
I valori calcolati di k e q sono riportati nella sezione 1, di figura 18:
Dal calcolo emerge che sono necessari $k=25$ campioni dell'impulso; questi, ricavati da figura 17 sono mostrati in figura 19:
    p12345678910111213141516171819202122232425 S(p)0,100,140,200,270,360,460,560,670,770,860,930,981,000,980,930,860,770,670,560,460,360,270,200,140,10
Questi valori, messi a calcolo nella sezione 2, portano al modulo dello spettro di figura 20:

## Esempio di calcolo: DFT per impulso di segnale sinusoidale

Nel caso in cui l'impulso contenga una componente sinusoidale: $A\cdot Cos(6,28\cdot fo\cdot t)$, come mostrato in figura 21
il processo di calcolo della DFT è simile a quelli in precedenza illustrati salvo il fatto che la massima ampiezza dello spettro non sarà per $f=0$ ma per $f=fo$ come mostra figura 21.
Consideriamo ora un impulso del tipo riportato in figura 21 che abbia le seguenti caratteristiche:
Durata: $T=0.01\ S.$
Frequenza all'interno dell'impulso: $fo=400\ Hz$
Frequenza massima dello spettro voluto:$Fmax=1000\ Hz$
Intervallo tra i campioni dello spettro: $DF=2\ Hz$
Nella sezione 1, per $T=0.01\ S$, $Fmax=1000\ Hz$$DF=2\ Hz$, si ha $k=20$:
I $20$ campioni richiesti si ottengono dalla funzione:
    $Y=A\cdot Cos(6.28\cdot fo\cdot t)$ dove $A=1$, $fo=400\ Hz$, $t=0.5\ mS$/campione
così come mostra la tabella:
    1,000 0,309 -0,808 -0,810 0,306 0,999 0,312 -0,806 -0,812 0,303 0,999 0,315 -0,804 -0,813 0,300 0,999 0,318 -0,802 -0,815 0,297
Lo spettro dell'impulso, calcolato tra $F=0$ e $Fmax=1000\ Hz$ si presenta come in figura 23 con il massimo in corrispondenza della frequenza $Fo=400\ Hz$: