Estratto del documento

Aspetti implementativi e applicazioni della

FFT

Accuratezza, memoria, MATLAB, filtraggio e compressione

1 Dalla formula all’implementazione

Un algoritmo FFT efficiente deve considerare non soltanto il numero teorico di operazioni,

ma anche il modo in cui i dati vengono memorizzati e trasferiti. Nei calcolatori moderni

il costo degli accessi alla memoria può essere paragonabile o superiore a quello delle

operazioni aritmetiche. Per questo una implementazione ben progettata cerca di lavorare

su blocchi contigui, riutilizzare i dati presenti nella cache e ridurre allocazioni temporanee.

La versione in place sovrascrive progressivamente il vettore di ingresso con i risultati

intermedi e infine con la trasformata. Essa riduce la memoria ausiliaria, ma richiede

attenzione nell’ordine dei butterfly per non distruggere valori ancora necessari. Una

versione out of place usa array separati per ingresso e uscita ed è spesso più semplice da

parallelizzare, ma consuma più memoria e aumenta il traffico tra memoria e processore.

2 Rappresentazione dei numeri complessi

I dati complessi possono essere memorizzati in forma interlacciata, alternando parte reale

e parte immaginaria, oppure in due array separati. La scelta influenza la vettorizzazione

SIMD e il comportamento della cache. Quando l’ingresso è reale, una FFT complessa

generale esegue calcoli ridondanti, perché lo spettro ha simmetria coniugata. Le rou-

tine real-to-complex sfruttano tale simmetria per ridurre quasi della metà memoria e

operazioni.

Nel caso bidimensionale, come nelle immagini, la DFT separabile viene calcolata ap-

plicando trasformate monodimensionali prima lungo le righe e poi lungo le colonne.

Matematicamente, −1 −1

M N −2πi(km/M +ℓn/N )

X X

= e

X x .

k,ℓ m,n

m=0 n=0

La separabilità consente di evitare un calcolo quadratico in entrambe le dimensioni.

Dopo le FFT sulle righe e sulle colonne, si ottiene la stessa trasformata bidimensionale.

1

3 Scaling e aritmetica finita

In virgola mobile, l’intervallo dinamico è ampio, ma ogni operazione introduce un piccolo

errore di arrotondamento. Poiché una FFT radix-2 possiede log stadi, l’accumulo

N

2

degli errori è generalmente contenuto. In aritmetica a precisione fissa, comune nei sistemi

embedded, somme e differenze possono invece superare l’intervallo rappresentabile. Si

usa allora uno scaling per stadio, spesso dividendo per due, oppure si adottano strategie

block floating point.

Il condizionamento unitario della DFT normalizzata è favorevole, ma il risultato può

comunque apparire poco accurato quando si cerca una componente molt

Anteprima
Vedrai una selezione di 1 pagina su 5
Calcolo numerico - Implementazioni della FFT Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche MAT/08 Analisi numerica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ciroexp di informazioni apprese con la frequenza delle lezioni di Calcolo numerico e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof D'Amore Luisa.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community