Newsgroup: it.scienza.fisica
Titolo: FFT e poligono freq.

Salve a tutti.
Ho un software che fa la FFT di un segnale.
Ottengo un istogramma o il relativo poligono delle frequenze.
Sulle ascisse è la freq; sulle ordinate l'ampiezza.
Cosa significa ogni rettangolino? Penso che significhi questo:
- la parte di banda compresa entro la sua base, ha un'ampiezza pari alla sua
altezza.
E' giusto?
Mi sono però sorti dei dubbi.
Premetto che non conosco le trasf. discrete di F. nè la FFT!
Anzi, facciamo finta che non esista la FFT e che il software applichi la
trasformata o lo sviluppo in serie classici.
Quali delle due strade seguirebbe un tale software ideale?
1) prendo un segnale che, essendo limitato nel tempo, ha una banda continua,
lo periodicizzo facendolo divenire infinitamente esteso nel tempo e faccio
lo sviluppo in serie. Ottengo uno spettro discreto di righe. Accorpo un
certo numero di righe in un rettangolino del poligono a cui impongo l'alezza
data dalla somma delle singole ampiezze (la somma delle altezze di ciascuna
riga compresa).
2) prendo il segnale aperiodico, lo tratto tal quale, ottenendo cioè uno
spettro continuo con la normale trasformata di Fourier. Le ordinate di un
tale spettro non sono PIU' ampiezze, ma densità di ampiezza (diciamo dB/Hz).
Integrando l'area sottesa allo spettro, ottengo ovviamente l'ampiezza di una
banda conntinua qualunque.
Il rettangolino significa: "la banda continua, di ampiezza pari alla base
dello stesso, ha una ampiezza (totale) pari alla altezza del rettangolino).
Domanda: ci sarebbe differenza tra i due approci in termini del mio
istogramma "spettrale"?
Grazie

 istogramma "spettrale"?
A mio parere usare rettangolini e istogrammi per una trasf. discreta
non ha senso, e induce negli errori che stai facendo.
Il tuo segnale non avra' in nessun caso una durata infinita, e comunque
la prima cosa che si fa e' di scegliere una base dei tempi, di durata
diciamo T.
Nota per inciso:
Puo' darsi che il tuo software faccia un'operazione che e' usuale in
questi casi: uno "smoothing" dell'inizio e della fine del segnale.
Serve allo scopo di evitare degli "artefatti" su cui non mi dilungo.
Se hai il manuale, dovrebbe esserci scritto qualcosa tipo "scelta
della finestra" (di Hamming, o altre).
Fine dell'inciso.
Come hai gia' detto, a questo punto se tu facessi un normale sviluppo
in serie di Fourier, avresti uno spettro *discreto ma infinito* di
frequenze, tutte multiple di 1/T.
Pero' la trasf. discreta fa un'altra cosa: un _campionamento_ del tuo
segnale, a intervalli tau (T = N*tau, dove N e' il numero di campioni).
A questo punto si calcola la trasformata discreta, e il risultato sono
N frequenze, multiple di 1/T, e quindi fino a N/T = 1/tau (escluso,
perche' si parte da zero).
Mi chiederai: e le frequenze piu' alte dove sono finite?
Risposta: mai sentito parlare di "aliasing"?
Tutte le frequenze piu' alte sono "ripiegate" nell'intervallo fino a
1/tau.
L' ampiezza A'(f) che leggi per una certa frequenza f e' in realta' la
somma di:
A(f) + A(1/tau - f) + A(1/tau + f) + A(2/tau - f) + ...
(e ci sono anche quelle negative, come nella serie di Fourier).
Questo e' una conseguenza inevitabile del campionamento, secondo il
teorema di Shannon: per ricostruire fedelmente un segnale che ha una
durata T e una larghezza di banda W, sono necessari 2*T*W campioni.
Percio' con N campioni e durata T puoi ricostruire solo un segnale
che abbia banda < N/(2T) = 1/(2*tau).
Morale della favola: quando esegui una trasf. discreta devi sapere in
partenza la larghezza di banda del segnale, e scegliere il numero di
campioni abbastanza grande da evitare lo aliasing.
Altrimenti sono casini...
 
------------------------------
Elio Fabri
Dip. di Fisica - Univ. di Pisa
------------------------------

 No.
Sapevo di aver fatto un casino. Ma la ragione di questo è che purtroppo
cerco di mettere sempre troppa carne al fuoco. Perchè? UN po' per una
insicurezza personale, un po' perchè temo che se mi limitassi ad una più
graduale richiesta di spiegazioni, potrei perdere l'occasione di ricevere
risposte da persone particolarmente competenti (senza offendere nessuno).
Così, vorrei partire dall'inizio, con l'impegno di andare per gradi. Tu,
però, cerca di aiutarmi lungo tutto il percorso...per favore...
Prima puntata.
Vorrei partire da alcune definizioni. Quindi ora abbandoniamo il software e
partiamo dalla teoria.
1) un segnale si dice periodico se, in riferimento ad una determinata base
temporale, presenta le stesse caratteristiche di "forma" ad intervalli di
tempo costanti. Di certo la definizione non è completa, ma spero non sia
anche sbagliata (ad. es. mi sembra che parlare solo di caratteristiche di
forma sia insufficiente).
2) questo vuol dire che un segnale periodico non è necessariamente infinito
nel tempo e che, su intervalli di tempo sufficientemente piccoli, può
risultare non più periodico
3) un segnale aperidoico, di conseguenza, può avere estensione temporale
(durata) sia finita che infinita.
4) se prendo un segnale aperiodico si qualsiasi durata e lo ripeto
infinitamente (odelamente, s'intende), questo diviene un seganel periodico
di estensione temporale infinita
5) è ovvio che un segnale di durata infinita è solo una astrazione
matematica.
Fermiamoci qui
Grazie

 trasformata o lo sviluppo in serie classici.
Provo a chiarirti il concetto di trasformata discreta facendoti vedere le cose
da un punto di vista un pò alternativo.
Pensa ad un vettore generico in uno spazio R^n: puoi esprimere questo vettore
come la combinazione lineare di n vettori di base, pesati con n coefficienti.
Fissata la base (per esempio quella canonica) i coefficienti identificano
univocamente il vettore.
Considera ora un segnale a tempo discreto di durata finita: è formato da una
serie di n campioni collocati al tempo mT (con T il periodo di campionamento, ed
m compreso tra 0 ed n). Anche in questo caso si potrebbe considerare il segnale
come un "vettore" nello spazio del segnali, la cui base è formata da serie di n
impulsi unitari situati negli istanti mT. I vari campioni non sono altro che le
coordinate del vettore in questo spazio!
Chi ci impedisce di cambiare base? Nessuno, infatti possiamo scegliere un'altra
base ortonormale, ad esempio quella formata dalla combinazione lineare delle
funzioni seno e coseno di frequenza da 0 a 2*pi*n*T, campionati negli istanti
mT.
In questa nuova base le coordinate del segnale non saranno più i campioni nel
dominio del tempo, ma altri coefficienti. "Casualmente" questi coefficienti
rappresentano proprio la trasformata discreta di Fourier! Ed hanno il
significato fisico che sappiamo...
Per passare da una base all'altra è sufficiente proiettare* il segnale sulle
componenti della nuova base: si ottengono così le formule per la trasformata
discreta.
Un discorso pressocchè identico si può pare per la trasformata Wavelet discreta,
ma questa è un altra storia... :-)
Spero di essere stato sufficientemente chiaro!
Ciao,
A.D.
P.S. lo so che è brutto parlare di proiezioni, ortogonalità, basi, senza
definire un prodotto scalare, una norma, ed una metrica... ma non ho voluto
appesantire il discorso.

 matematica.
Beh, qui tutto e' astrazione matematica.
Bisogna metterlo in chiaro da subito, ma e' un'astrazione tutt'altro
che sterile, nel senso che poi i segnali "reali" possono essere
trattati benissimo grazie a queste astrazioni.


 Ottieni una funzione periodica.
Certo. E di periodo T uguale alla lunghezza dell'intevallo finito a cui
accenni qui sopra, (parliamo sempre della ripetizione di un "pezzo" non a
"periodicità ristretta"). Ora, se io ripeto una f(t) caratterizzata da una
periodicità ristretta, invece, come ad esempio un pezzo della funzione
sen(t) "tagliato" ad hoc  (es. 
http://tinypic.com/ebdfme.jpg
), dovrei
ottenere la funzione sen(t) stessa definita su tutto R. In questo caso il
periodo della funzione ripetuta (periodicizzata) sarebbe il periodo  di
sen(t) e non la lunghezza dello "spezzone" di sen(t) ripetuto su tutto R.
Schematicamente:
1) prendo un pezzo di f(t) senza alcuna periodicità ristretta, lo ripeto su
tutto R (potendo così anche ottenere una funzione discontinua, come
ripetendo 
http://tinypic.com/ebdfrn.jpg
) ed ottego una funzione peridodica
di periodo pari alla lunghezza del "pezzo" f(t).
2) prendo un pezzo di f(t) con periodicità ristretta, lo ripeto su tutto R
ed ottengo una funzione periodica di periodo pari *non più* alla lunghezza
del "pezzo" di f(t) ripetuto, ma al periodo T della funzione sen(t). Infatti
la ripetizione del mio pezzo di funzione, mi dà sen(t) su tutto R.
Ecco perchè mi premeva definire una certa periodicità locale per distinguere
i due casi.
Esiste questa distinzione tra i due casi o dove sbaglio?