L'analisi spettrale FFT

Tecniche e strumenti di misura, test di varia natura
Messaggio
Autore
Avatar utente
MarioBon
Amministratore del forum
Messaggi: 9121
Iscritto il: 24/11/2016, 13:13
Il mio Impianto: molto variabile: Amplificatore Audio Analog, Diffusori autocostruiti, lettore CD autocostruito.
Località: Venezia
Contatta:

L'analisi spettrale FFT

#1 Messaggio da MarioBon »

In questo 3D tenterò di spiegare nel modo più semplice possibile che cosa è e come va fatta l'analisi dello spettro di un segnale tramite la FFT.
Nel 1822 J.B. Fourier, mentre lavorava ad un problema di propagazione del calore scoprì che una funzione (con certe caratteristiche) poteva essere sostituita con la somma di una serie armonica di seni e coseni. Fortunatamente le funzioni considerate hanno le caratteristiche dei segnali e questo ha permesso di applicare la trasformata di Fourier ai segnali fisici tra i quali i suoni.
Le funzioni sviluppabili secondo Fourier sono definite in un certo intervallo, assumono agli estremi dell'intervallo valore nullo e l'integrale del loro quadrato è un numero finito. In alternativa devono essere funzioni periodiche che si ripetono uguali a sè stesse dopo un certo intervallo di tempo detto periodo. In tal caso deve essere analizzato un intero periodo (nè più nè meno).
L'integrale del quadrato di un segnale è la sua energia. Tutti i segnali fisici trasportano una quantità di energia finita quindi la trasformazione si applica perfettamente ai segnali fisici.
La trasformata di Fourier è un modo alternativo di rappresentare un segnale e tale rappresentazione contiene esattamente le stesse informazioni che contiene il segnale stesso ma in forma diversa quasi sempre più facile da leggere ed interpretare.
Quindi un segnale è una funzione dove l'ampiezza è determinata in funzione del tempo, il suo spettro è costituito da una serie di coefficienti (complessi) o pesi che consentono di sommare tra loro una serie di seni e coseni ricostruendo esattamente il segnale con la stessa forma nel tempo. Tanto per non fare confusione la funzione matematica che rappresenta forma nel tempo del segnale si chiama forma analitica del segnale. L'analisi spettrale FFT determina la forma analitica del segnale.

FFT sta per Fast Fourier Transform o Trasformazione Rapida di Fourier. L'aggettivo "rapida" indica che il numero di operazioni necessarie è stato ridotto rendendo così il calcolo più veloce. Questa velocità è dovuta ad una scelta: i segnali analizzati devono contare un numero di campioni pari ad una potenza di due (1024, 2048, 8192, 16384, 32768, 65536, ecc.). La frequenza di campionamento può essere qualsiasi ma va tenuto conto che i segnali su CD sono campionati a 44.1kHz mentre i file audio possono essere campionati a 48kHz, 88,2kHz, 96kHz, ecc. è quindi normale scegliere una frequenza di campionamento pari ad una di queste.
Supponiamo di scegliere 44.1kHz (come nei CD Audio). La durata di un periodo di segnale risulterà essere

durata _periodo=(numero_di_campioni)/(Frequenza_di_campionamento) = 16384/44100=0,37151927437641723356009070294785
Come si vede non si tratta di un numero semplice. L'inverso di questo numero è 2,691650390625 Hz che corrisponde alla minima frequenza analizzabile. Tutte le frequenza appartenenti allo spettro di un segnale di 16384 campioni campionati a 44.1kHz saranno multipli di questo numero. Ne segue che non c'è nello spettro una riga corrispondente a 3 Hz perchè tale frequenza non è un multiplo esatto di 2,691650390625 Hz. Più il numero di campioni è elevato, tanti più bassa risulterà la frequenza minima e tanto più vicine le righe spettrali (aumentando così la risoluzione della misura). Scegliendo opportunamente la frequenza di campionanmento si può "centrare" qualsiasi frequenza. Abbiamo però visto che il materiale audio è campionato a frequenze fisse e quelle si devono adoperare.
Mario Bon http://www.mariobon.com
"Con delizia banchettiamo con coloro che volevano assoggettarci" (Adams Family)
Avatar utente
MarioBon
Amministratore del forum
Messaggi: 9121
Iscritto il: 24/11/2016, 13:13
Il mio Impianto: molto variabile: Amplificatore Audio Analog, Diffusori autocostruiti, lettore CD autocostruito.
Località: Venezia
Contatta:

Re: L'analisi spettrale FFT

#2 Messaggio da MarioBon »

tanto per fare un esempio vediamo lo spettro di un'onda quadra:
Immagine
L'onda quadra è formata in questo modo:

Quadra(t)= sin (wt)+ (1/3)sin(3wt)+(1/5)sin(5wt)+(1/7)sin(7wt)+(1/9)sin(9wt)+(1/11)sin(11wt)+....
in pratica ci sono tutte le armoniche di ordine dispari con ampiezza decrescente. L'immagine qui sopra mostra come si forma il segnale aggiungendo un numero sempre maggiore di armoniche (o componenti spettrali o righe spettrali).

questo invece è lo spettro di un segnale a dente di sega:
Immagine
che contiene sia le armoniche pari che dispari.
Mario Bon http://www.mariobon.com
"Con delizia banchettiamo con coloro che volevano assoggettarci" (Adams Family)
Avatar utente
MarioBon
Amministratore del forum
Messaggi: 9121
Iscritto il: 24/11/2016, 13:13
Il mio Impianto: molto variabile: Amplificatore Audio Analog, Diffusori autocostruiti, lettore CD autocostruito.
Località: Venezia
Contatta:

Re: L'analisi spettrale FFT

#3 Messaggio da MarioBon »

Un aspetto poco intuitivo della analisi spettrale è il seguente: per analizzare un segnale lo si deve acquisire (memorizzare). Quando il segnale è scritto in una memoria è come se il tempo non ci fosse più. Infatti possiamo estrarre dei pezzi di segnale, suonarli alla rovescia, cancellarli....L'analisi viene fatta andando a controllare (con un calcolo) se, all'interno del segnale memorizzato, è presente una certa frequenza e questo viene ripetuto per tutte le frequenze multiple della fondamentale. Questa operazione è fatta a "tempo fermo" nel senso che il segnale non sta "cammiando". Ogni frequenza trovata è presente dall'inizio alla fine del segnale sempre con la stessa ampiezza.
Supponiamo che lo spettro del un segnale sia formato da tre sinusoidi:

segnale(t) = sin(wt) + sin(4wt) + sin(10wt).

se lo vogliamo riprodurre (nel tempo) dobbiamo predisporre 3 oscillatori ciascun dei quali riproduce una delle tre frequenze e accenderli contemporanemente. Il risultato è il segnale (che appare modulato).
Questa si chiama sintesi addittiva. Quindi non ha senso dire "una certa frequenza è presente all'inizio ma non alla fine.... in un certo istante ma non nell'altro..." le frequenze sono tutte contemporaneamente presenti. Questo si vede bene nella animazione della sintesi dell'onda quadra. La stessa cosa vale per qualsiasi segnale anche quelli dove l'ampiezza ha un andamento casuale (all'interno di un periodo).

Dato che i segnali casuali (come il rumore termico) non hanno nè un inizio nè una fine nè un periodo, non possono essere analizzati (si dovrebbe acquisire il segnale per un tempo infinito). Sono quindi stati inventati dei segnali periodici che, all'interno del periodo, si comportano come se fossero casuali. Tali segnali, detti pseudocasuali, sono a tutti gli effetti segnali periodici e come tali vanno trattati. Il periodo è detto pseudoperiodo.

L'altra cosa da tenere presente è che un analizzatore di spettro digitale tratta qualsiasi segnale gli si presenti all'ingresso come se fosse un periodo completo di un segnale periodico di periodo pari alla durata della finestra di acquisizone. Se la finestra di acquisizone viene "aperta" per 2 secondi, l'analisi dura 2 secondi più il tempo necessario per eseguire i calcoli. Non ha quindi senso parlare di "costanti di tempo" che caratterizzano invece gli strumenti analogoci.
Un analizzatore analogico è profondamente diverso da un analizzatore digitale così come un filtro analogico è profondamente diverso da un filtro digitale.
Consideriamo un semplice filtro passa basso costituito da una resistenza in serie ed un condensatore in parallelo. Non dobbiamo insegnare a questo filtro come eseguire la convoluzione tra la sua funzione di trasferimento ed il segnale: la fa e basta. Se invece vogliamo realizzare un filtro digitale lo dobbiamo programmare ovvero insegnarli i conti da fare.

Un altro aspetto poco intuitivo e fonte di errore è il seguente: l'operatore, con le sue scelte, determina lo spettro del segnale analizzato. Infatti se apro la finestra di acquisizione per un secondo le frequenze che appaiono nello spettro saranno 1Hz, 2 Hz, 3Hz, 4Hz...nHz.
Se invece apro la finestra di acquisizione per 1.1 secondi lo spettro risulterà composto dalle frequenze di 1.1Hz, 2.2Hz, 3.3 Hz, 4.4Hz, 5.5Hz....n1.1 Hz.
Ottengo quindi due spettri diversi a seconda delle scelte soggettive di chi imposta l'acquisizione. Quale è lo spettro giusto? quello che si ottiene aprendo la finestra per un tempo pari al periodo del segnale (o a un suo multiplo esatto di periodi).
Ecco perchè l'analisi spettrale è solo apparentemente una misura facile: è molto più facile sbagliare e quando si sbaglia il risultato non è prevedibile. Nella pratica si vedono molte più misure "sbagliate" che misure "giuste". Un modo per mascherare gli errori è lo smoothing ma la misura resta comunque "sbagliata". C'è chi ha cominciato a sbagliare 40 anni fa e continua a sbagliare ancora oggi. Perfino Toole si è accorto che la misura di ETC cambia cambiando la finestra di pesatura nel tempo: in realtà l'errore sta nell'usare una finestra di pesatura.
Mario Bon http://www.mariobon.com
"Con delizia banchettiamo con coloro che volevano assoggettarci" (Adams Family)
Avatar utente
MarioBon
Amministratore del forum
Messaggi: 9121
Iscritto il: 24/11/2016, 13:13
Il mio Impianto: molto variabile: Amplificatore Audio Analog, Diffusori autocostruiti, lettore CD autocostruito.
Località: Venezia
Contatta:

Re: L'analisi spettrale FFT

#4 Messaggio da MarioBon »

Nel seguito viene usato un semplice programma di analisi spettrale (darò il link per scaricarlo assieme ai segnali). Quando si lancia il programma la prima cosa da fare è impostare il numero di capioni da acquisire. Impostate come in figura. Tutti i segnali che fornirò vanno acquisiti in questo modo:
Immagine
il Primo segnale è un rumore bianco con banda passante da 32 a 16000 Hz
Immagine
Si noti la precisione della rappresentazione che comincia a 32 Hz e finisce a 16000 con un andamento perfettamente piatto e senza sbrodolamenti. Il rumore bianco è costituito da un insieme di righe spettrali che hanno tutte la stessa ampiezza. Questo significa che è la somma di senusoindi tutte della stessa ampiezza ma con relazioni di fase casuali. La prossima figura mostra un runore rosa:
Immagine
Nel rumore rosa ci sono le stesse frequenze del rumore bianco ma con ampiezza decrescente. La proprietà del rumore rosa è che trasporta la stessa potenza per bande di larghezza percentuale costante. Per esempio se lo osserviano con un banco di filtri a un terzo di ottava (o di una ottava o di dodicesini di ottava....) appare piatto:
Immagine
Questo tipo di rappresentazione mette in evidenza il rumore alle frequenze alte (in questo caso il rumore della scheda audio del mio portatile). Questo è il tipo di rappresentazione che si usa nelle misure audio. Viene usato il rumore rosa perché il suo spettro è più simile a quello dei segnali musicali e non si corre il rischio di bruciare i tweeeter (trasmette meno potenza al tweeter).
Mario Bon http://www.mariobon.com
"Con delizia banchettiamo con coloro che volevano assoggettarci" (Adams Family)
Avatar utente
MarioBon
Amministratore del forum
Messaggi: 9121
Iscritto il: 24/11/2016, 13:13
Il mio Impianto: molto variabile: Amplificatore Audio Analog, Diffusori autocostruiti, lettore CD autocostruito.
Località: Venezia
Contatta:

Re: L'analisi spettrale FFT

#5 Messaggio da MarioBon »

Fino a qui i segnali sono stati analizzati acquisendo esattamente un periodo e senza applicare alcuna finestra di pesatura (finestra rettangolare =nessuna finestra)
Ora cominciano a valutare l'uso della finestra di pesatura.
Per prima cosa vediamo una perfetta sinusoide che, se acquisita correttamente, produce una singola riga.
Immagine
Se si applica una finestra di pesaturala riga si allarga. La pesatura peggiora il risultato di una acquisizione corretta. Con una singola sinusoide i danni sono relativi.
Immagine
tale allargamento dipende dalla forma della finestra scelta ma c'è sempre.
Mario Bon http://www.mariobon.com
"Con delizia banchettiamo con coloro che volevano assoggettarci" (Adams Family)
Avatar utente
MarioBon
Amministratore del forum
Messaggi: 9121
Iscritto il: 24/11/2016, 13:13
Il mio Impianto: molto variabile: Amplificatore Audio Analog, Diffusori autocostruiti, lettore CD autocostruito.
Località: Venezia
Contatta:

Re: L'analisi spettrale FFT

#6 Messaggio da MarioBon »

Consideriamo un segnale più complicato (multitono) formato dalla sovrapposizione di più sinusoidi:
Immagine
qui sopra è stato acquisito in modo corretto (si notino le impostazioni). Vediamo cosa succede applicando una finestra di pesatura:
Immagine
e vediamo anche cosa succede se il numero di campioni acquisiti con corrisponde al periodo:
Immagine
Confrontando gli spettri con finestra rettangolare (senza finestra) e con pesatura Hanning e quindi con l'acquisizione "sbagliata" si vede la differenza. Lo spettro di degrada e le righe spettrali si "sbrodolano" introducendo errori non controllabili. Queste non sono misure "approssimate" sono semplicemente misure sbagliate.

Nota: le finestre di pesatura portano il nome di chi le ha definite. Possono essere Hanning, Hamming, Parzen, ecc.
si veda qui:
http://www.mariobon.com/Glossario/___Te ... nestre.htm
Le finestre nel tempo sono utili con segnali che contengono poche frequenze e con segnali non periodici. Per ccome si deve lavorare per fare misure le finestre non sono che una curiosità.
Mario Bon http://www.mariobon.com
"Con delizia banchettiamo con coloro che volevano assoggettarci" (Adams Family)
Avatar utente
MarioBon
Amministratore del forum
Messaggi: 9121
Iscritto il: 24/11/2016, 13:13
Il mio Impianto: molto variabile: Amplificatore Audio Analog, Diffusori autocostruiti, lettore CD autocostruito.
Località: Venezia
Contatta:

Re: L'analisi spettrale FFT

#7 Messaggio da MarioBon »

L'analizzatore di spettro è uno strumento potente ed indispensabile che oggi è alla portata di tutti. Questo non vuol dire che sia semplice da adoperare. Purtroppo qualsiasi cosa si invii al suo ingresso appare qualche cosa sul display. Non c'è un avviso che dica "guarda che hai sbagliato le impostazioni...". Chi usa l'analizzatore deve sapere cosa sta facendo.
Se si vogliono ottenere delle misure credibili ci sono due condizioni irrinunciabili:
- il numero di campioni acquisiti deve essere comunque una potenza di 2 (sia che comprenda un singolo periodo o più periodi)
- le finestre di pesatura vanno applicate quando questa condizione non è rispettata altrimenti NON devono essere usate.

Se per esempio si vuole misurare lo spettro del rumore prodotto dalle cascate del Niagara (che non ha nè inizio nè fine e non è periodico, se ne acquisisce un pezzo e per forza di cosa si applica una finestra di pesatura. Quello che si ottiene è una stima dello spettro del rumore delle cascate (non una misura). Quando si fanno misure su un sistema audio siamo noi che decidiamo che stimolo adoperare e dobbiamo scegliere un segnale periodico sincronizzato con l'analizzatore di spettro e con il giusto numero di campioni per periodo.
Se facciamo così otteniamo delle misure credibili altrimenti otteniamo solo delle misure sbagliate.

Qui ci sono i segnali e il programma usato:
http://www.mariobon.com/_X_forum/Fourier.zip
Probabilmente in rete ci sarà anche una versione aggiornata del programma http://www.tucows.com/download.html?sof ... 420814&t=2
Buon divertimento.
Mario Bon http://www.mariobon.com
"Con delizia banchettiamo con coloro che volevano assoggettarci" (Adams Family)
Carlo
Messaggi: 299
Iscritto il: 20/04/2019, 22:54
Il mio Impianto: sorgente PC
Dac project
Pre ARCAM FMJ C 49
Finale ARCAM FMJ P 49
Diffusori ProAc D48 response ribbon
cavi autocostruiti schermati

Re: L'analisi spettrale FFT

#8 Messaggio da Carlo »

MarioBon ha scritto: - il numero di campioni acquisiti deve essere pari ad un multiplo esatto dei campioni che costituiscono il periodo ed un periodo deve avere un numero di campioni pari ad una potenza di 2.

Questa frase (poco chiara) è stata modificta così:
- il numero di campioni acquisiti deve essere comunque una potenza di 2 (sia che comprenda un singolo periodo o più periodi)
Per favore Dott.Mario, mi faccia un esempio che possa farmelo capire meglio
Facciamo che mi serve acquisire un segnale da 20 secondi alla frequenza di campionamento 44khz
Per rispettare i requisiti come va impostato l'analizzatore ? e se la frequenza di campionamento fosse 96khz ?
Mi sono perso sul multiplo dei campioni e nel periodo pari alla potenza di due :oops:
Avatar utente
MarioBon
Amministratore del forum
Messaggi: 9121
Iscritto il: 24/11/2016, 13:13
Il mio Impianto: molto variabile: Amplificatore Audio Analog, Diffusori autocostruiti, lettore CD autocostruito.
Località: Venezia
Contatta:

Re: L'analisi spettrale FFT

#9 Messaggio da MarioBon »

Supponiamo si tratti di un brano musicale presente su CD. Evidentemente non è un segnale periodico ed ha un inizio e una fine. La musica dura 20 secondi esatti.
In un secondo ci stanno 44100 campioni quindi 20*44100=882000
La potenza di 2 più vicina è 2^20 che fa 1048576. Per poter analizzare il brano si devono aggiungere 1048576-882000=166576 campioni nulli (in testa, in coda, un po' in testa un po' in coda). Questa operazione di chiama "padding" e si dimostra che non altera l'inviluppo dello spettro (se il segnale ha media nulla).
Ora si può fare la FFT su 2^20 campioni. Per analizzare le tracce dei CD sono arrivato a 2^26 campioni (brani di 25 minuti).

Supponiamo che il segnale sia periodoco con periodo di 20 secondi. Non posso decidere la frequenza di campionamento ma devo calcolare quella giusta che risulterà essere un multiplo di 1/20=0.05 Hz. A questo punto mi domando: quale è la massima frequenza contenuta nel segnale? supponiamo sia 20kHz. Devo campionare a più di 40kHz in modo che 20*fc=2^n. Dai conti che ho fatto prima so che n deve essere uguale a 20 quindi risulta
fc=2^20/20 = 52428.8 Hz. Purtroppo devo campionare a 52428.8 Hz (giusti).

Se invece la massima frequenza contenuta è 10KHz posso campiona a metà di quella frequenza 2^19 campioni.

Quindi o posso aggiungere campioni e adattare la durata della finestra di acquisizione alla frequenza di campionamento oppure devo cambiare la frequenza di campionamento per adattarla al periodo del segnale. Gli analizzatori FFT di norma consentono di modificare la frequenza di campionamento.

ho lavorato con questo
https://www.ebay.com/c/20008896824 che ai tempi costava quanto un appartamento.
Mario Bon http://www.mariobon.com
"Con delizia banchettiamo con coloro che volevano assoggettarci" (Adams Family)
Carlo
Messaggi: 299
Iscritto il: 20/04/2019, 22:54
Il mio Impianto: sorgente PC
Dac project
Pre ARCAM FMJ C 49
Finale ARCAM FMJ P 49
Diffusori ProAc D48 response ribbon
cavi autocostruiti schermati

Re: L'analisi spettrale FFT

#10 Messaggio da Carlo »

facciamo l'esame per vedere se sono promosso
Supponiamo che debba fare la fft a 1048576 su un brano di musica che dura 23 secondi dovrò aggiungere in testa e in coda altri 17138 campioni per un totale di 34276 campioni aggiunti a quelli della durata di 23 secondi ?
Mentre per quelli periodici per ipotesi fino a 1000 hertz dovrei campionare 2048 campioni alla frequenza di 102 e passa hertz ? ma visto che quella frequenza di campionamento cosi bassa non viene usata utilizzerei una frequenza piu alta allungando i campioni nulli fino a raggiongere 879952 oppure allungare il segnale acquisito purchè complessivamente si arrivi ad un totale di 1048576 campiomi ?
Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti