DFT e FFT

« Older   Newer »
  Share  
view post Posted on 29/12/2010, 17:58
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Prova anche ad allargare la zona tra 0 e 60 nel campo delle frequenze e vedrai che si inizierà a vedere qualcosa. Poi ci vorrebbe la mediazione di più campioni nella stessa finestra. Comunque, complimenti, sei andato abbastanza avanti. :)
 
Web  Top
Elemento 38
view post Posted on 29/12/2010, 18:11




In effetti mi sento abbastanza soddisfatto per questo pomeriggio di prove, devo ancora mettere a punto qualcosa e poi se funziona discretamente passo alla FFT. Quello che è rompente è che devo usare C++ ed Excel. Dovrei decidermi ad iniziare a studiare MatLab, avevo SciLab tempo fa, ma preferisco studiarmi qualcosa di più collaudato :lol:
 
Top
view post Posted on 30/12/2010, 07:52
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


ok, qualcosina inizio a capire....

CITAZIONE
Nel tuo esempio a 2.5V hai 512 come valore non 512 bit.

Esatto Ele, si mi sono espresso male, volevo dire quello.

CITAZIONE
Il convertitore campiona, converte in numero digitale intero a n bit, tipo 8, 10, 12, 14, 16 bit, il valore di tensione che legge in ingresso. Come valore... P.es.
Per un convertitore a 8 bit con ±5Vfs:

si, lo so che mi sfugge qualcosa, ma non capisco cosa.

Allora, mi sono documentato un po', credo che tutto inizi con la serie di Fourie, che dice che qualsiasi forma d'onda, puo' essere
scomposta in una moltitudine di onde sinusoidali. Come di tu Law, una sinusoide pura, non ha armoniche, mentre per esempio
un'onda quadra ne ha parecchie, soprattutto sugli spigoli.

La riprova è che se mettiamo una quadra all'ingresso di un filtro passa basso bello tosto con un po' di decibel di attenuazione, smussiamo gli spigoli, e in linea teorica
continuando a filtrare, ci si potrebbe attendere di trovare una sinusoide all'uscita.
Credo di aver capito che la FFT si basi su questo principio, e che con calcoli inimmaginabili per me (credo di tipo trigonometrico, seno coseno ecc...) riesca ad analizzare lo spettro della frequenza.

Purtroppo per routine così ci vogliono studi in merito e la padronanza di linguaggi un po' più evoluti tipo il C che sta usando Ele. Io non ho ne uno ne l'altro, il C, mi ero messo in ballo, ma poi è sfumata un po' la cosa.
Se dovessi trovare routine pronte in assembler, magari non molto pesanti, vorrei provare a vedere cosa succede...certo che con un quarzo da 4 mhz....è un po' dura!!!
 
Top
view post Posted on 30/12/2010, 09:14
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Non esattamente Gila, la FFT non agisce come un filtro, ma proprio come calcolo. Un filtro passa basso con frequenza di taglio a 100Hz, separa la fondamentale di 80Hz dalla seconda armonica a 160Hz ma in uscita hai un livello che non è direttamente proporzionale alla fondamentale, se la frequenza varia anche il livello varia, per tutti i filtri anche se metti un filtro di quarto ordine. Mentre una FFT ti dice esattamente il livello del segnale della fondamentale e la sua frequenza indipendentemente dalla frequenza stessa.

La frequenza del quarzo del microprocessore non ha molta importanza per la FFT quanto la frequenza di campionamento e dalla precisione (bit) del convertitore A/D. Puoi usare un DSP con dentro già la FFT che con un colpo di clock zac te la fa ed un convertitore della mutua che più di 10 SpS non fa. Tutto è relativo.

Poi, non devi pensare di fare tutti i calcoli per la FFT ad ogni campione, ti occorrono molti campioni, migliaia, poi fai la FFT.

Togliti dalla testa la paura dell'analisi matematica e dei linguaggi evoluti, mettiti davanti allo specchio e fai dell'autoipnosi e vedrai che tutto ti sembrerà più facile. Oggi in rete si trova di tutto ( il meglio ed il 90% in inglese purtroppo) e studia, se ti sembra di non imparare non importa, non devi passare degli esami, tu studia studia studia... e alla fine ti renderai conto (magari dopo qualche anno) di aver imparato molto. Molto di più di quello che ti credevi. Malgrado ciò, ti rimarrà ancora tanto da studiare. A tutti rimane sempre tanto da studiare. L'utente Sergio il Matematico sta ancora studiando matematica ed e un professore di matematica in pensione, tu pensa... A proposito, ora gli mando una e-mail e lo rimbrotto perchè non si è mai fatto vedere... <_<
 
Web  Top
view post Posted on 30/12/2010, 13:07
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE
Togliti dalla testa la paura dell'analisi matematica e dei linguaggi evoluti, mettiti davanti allo specchio e fai dell'autoipnosi e vedrai che tutto ti sembrerà più facile. Oggi in rete si trova di tutto ( il meglio ed il 90% in inglese purtroppo) e studia, se ti sembra di non imparare non importa, non devi passare degli esami, tu studia studia studia... e alla fine ti renderai conto (magari dopo qualche anno) di aver imparato molto. Molto di più di quello che ti credevi.

Verissimo! Solo che davvero sto guardando un po' di pdf e mi scontro con simboli matematici e concetti che non ho studiato e non conosco.
Non ho la pretesa di capire a fondo l'algoritmo dal punto di vista matematico. Mi piacerebbe però capirne l'utilità, i campi d'utilizzo e le potenzialità.

Mi potreste dire cosa mi sfugge riguardo al convertitore AD, se quantizza in bit, come fa la routine ad analizzare lo spettro di frequenze? Non ci sono più frequenze, ma solo valori discreti che variano
in base all'ampiezza del segnale, cioè volts no?

Bhe, adesso che ci penso però sarebbe lo stesso discorso per un convertitore DA/AD vengono convertiti i segnali in bit in analogici e poi interpolati....uhhhmmm cavolo, non ci avevo pensato
in quei dati, è presente sia l'intensita' del suono, sia la frequenza, però non so come si possa arrivare....ci penso intanto
 
Top
view post Posted on 30/12/2010, 15:37
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


CITAZIONE
Mi potreste dire cosa mi sfugge riguardo al convertitore AD, se quantizza in bit, come fa la routine ad analizzare lo spettro di frequenze? Non ci sono più frequenze, ma solo valori discreti che variano
in base all'ampiezza del segnale, cioè volts no?

No, ti dimentichi il numero dei campioni ed il tempo che intercorre tra l'uno e l'altro... e se questo campionamento avviene ad intervalli regolari ben precisi... :rolleyes:
 
Web  Top
view post Posted on 30/12/2010, 22:59
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE
No, ti dimentichi il numero dei campioni ed il tempo che intercorre tra l'uno e l'altro... e se questo campionamento avviene ad intervalli regolari ben precisi...

precis....Law, ho capito!!! Tanto semplice, ma mi era sfuggito...grazie!!!
 
Top
view post Posted on 31/12/2010, 08:51
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Caspita... ehm capita sempre a tutti. Le cose son semplici, ma i particolari prima non te li svela mai nessuno e poi prima tu non sei preparato a recepirli. Quando dopo hai capito è tutto più semplice. :)
 
Web  Top
view post Posted on 31/12/2010, 12:01
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Ottimo documento, un po sul vagheggiante ma molto chiaro.

image

:rolleyes:

https://thegeniusworkshop.forumcommunity.net/?t=3273340&st=30
 
Web  Top
Elemento 38
view post Posted on 31/12/2010, 13:30




Ecco Law, prima o poi anche la mia FFT sarà così :lol:
Intanto, ho aumentato i campioni(da 256 a 1024) e ho dato in pasto al programma un'onda quadra fino alla 13a armonica. Il grafico è tagiato per fare vedere la parte importante, andando avanti ci sono punti dal valore molto basso (dall'1 al 4, quindi si possono tralasciare).
image
Si vedono molto bene le armoniche ... quindi bisogna salire con i campioni per avere uno spettro bello :lol:
Ah, la media che fa Excel sul grafico fa pena. La 11a armonica è vistosamente più alta della 13a, ma la media me la fa più bassa :unsure: Però la 7a è più alta della 9a :unsure: Aumento i campioni ?? :lol:

Edited by Elemento 38 - 31/12/2010, 18:24
 
Top
view post Posted on 3/1/2011, 10:34
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Se aumenti il numero dei campioni forse aumenta la precisione della tua trasformazione e si avvicina di più alla realtà... chissà... :unsure:
 
Web  Top
Elemento 38
view post Posted on 3/1/2011, 12:07




Mhh non saprei :unsure: Ho aumentato il numero di campioni raddoppiando (prima 2048 e poi 4096) ma lo spettro si è imbruttito sempre di più ... forse il numero di campioni deve essere legato alla frequenza dell'onda o a quella di campionamento in qualche strano modo per avere qualcosa di buono :unsure:
 
Top
Elemento 38
view post Posted on 3/1/2011, 18:58




Bingo!
CITAZIONE
[...] The first thing is to simply look at the data. Figure 9-1a shows 256 samples
from our imaginary experiment. All that can be seen is a noisy waveform that
conveys little information to the human eye. For reasons explained shortly, the
next step is to multiply this signal by a smooth curve called a Hamming
window, shown in (b). (Chapter 16 provides the equations for the Hamming
and other windows; see Eqs. 16-1 and 16-2, and Fig. 16-2a). This results in
a 256 point signal where the samples near the ends have been reduced in
amplitude, as shown in (c).
Taking the DFT, and converting to polar notation, results in the 129 point
frequency spectrum in (d). Unfortunately, this also looks like a noisy mess.
This is because there is not enough information in the original 256 points to
obtain a well behaved curve. Using a longer DFT does nothing to help this
problem. For example, if a 2048 point DFT is used, the frequency spectrum
becomes 1025 samples long. Even though the original 2048 points contain
more information, the greater number of samples in the spectrum dilutes the
information by the same factor. Longer DFTs provide better frequency
resolution, but the same noise level.
The answer is to use more of the original signal in a way that doesn't
increase the number of points in the frequency spectrum. This can be done
by breaking the input signal into many 256 point segments. Each of these
segments is multiplied by the Hamming window, run through a 256 point
DFT, and converted to polar notation. The resulting frequency spectra are
then averaged to form a single 129 point frequency spectrum. Figure (e)
shows an example of averaging 100 of the frequency spectra typified by (d).
The improvement is obvious; the noise has been reduced to a level that
allows interesting features of the signal to be observed. Only the
magnitude of the frequency domain is averaged in this manner; the phase
is usually discarded because it doesn't contain useful information. The
random noise reduces in proportion to the square-root of the number of
segments. While 100 segments is typical, some applications might average
millions of segments to bring out weak features.

Ora provo a mettere in pratica questo metodo :)
 
Top
view post Posted on 4/1/2011, 09:01
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Già, quello è il sistema della Hamming Window. Ci sono tre sistemi per fare la media dei campioni ed ottenere uno spettro più pulito, uno è la hamming window, un'altro è il flat top come nel mio esempio, ed un altro è il pulse analisys. Ogniuno di questi sistemi produce qualche approssimazione, o la frequenza non è precisa, o l'ampiezza del segnale non è precisa o qualcosaltro. Un sistema migliore è quello dell'analisi spettrale a conversione e rilevazione, ma questo sistema non usa la FFT ma è un vero e proprio analizzatore di spettro. :)
 
Web  Top
99 replies since 28/12/2010, 17:38   1846 views
  Share