Libreria per trasformata di Fourier su reticolo triangolare


11

Sto cercando implementazioni ragionevolmente veloci della trasformata discreta di Fourier (DFT) su un reticolo triangolare o esagonale 2D.

Gradirei suggerimenti su tali implementazioni (specialmente quelle facilmente utilizzabili da Python o Mathematica), e anche sulle descrizioni di come ridurre questo problema al DFT 1D, che è già integrato in molti sistemi.


Questo è il mio primo post qui, apprezzerei un po 'di aiuto per taggare la domanda in modo appropriato.
Szabolcs,

2
Ciò di cui sembra aver bisogno qui è una trasformata cristallografica di Fourier. Per i riferimenti, c'è questo , questo , questo e questo , ma ho problemi a trovare le routine FORTRAN che si possono scaricare liberamente. Potrebbe essere necessario implementare la tua implementazione ...
JM,

1
+1 per la domanda. Penso che i tag vadano bene per ora; se qualcuno pensa che la domanda debba essere taggata in modo diverso, la modificherà (se non può, chiederà a qualcuno che può).
Geoff Oxberry,

1
Questo , questo e questo sono alcuni altri riferimenti che potrebbero essere utili.
JM,

1
@Mark Ho trovato anche un paio di riferimenti (prima di pubblicare), incluso quello fornito da Geoff, ma non ho trovato alcun codice funzionante. Tuttavia, non ho trovato il termine "trasformata cristallografica di Fourier". Questa è in realtà una domanda di un amico che era un po 'timido nel pubblicare (ma sono anche interessato). Il problema con i riferimenti è che è un sacco di lavoro per leggerli e trovare quello giusto. Tornerò alla fine e pubblicherò il risultato.
Szabolcs,

Risposte:


5

Ci sono diversi documenti di Markus Püschel sul suo sito web qui che discutere di Cooley-Tukey-simile (così sto cercando di indovinare "veloce") algoritmi per le trasformazioni reticolo, come DFTS su reticoli triangolari ed esagonali 2-D. Nel caso triangolare, chiama il DFT la trasformazione del triangolo discreto (DTT). Markus ha un codice chiamato SPIRAL che genera automaticamente il codice per le trasformazioni, ma sembra che questo lavoro DTT non faccia parte di SPIRAL e che sul suo sito Web non sia presente alcuna implementazione. Sto cominciando a pensare che @JM abbia ragione e che potresti dover implementare la tua implementazione.

Una cosa che nota gli abstract è che per i reticoli triangolari ed esagonali 2D, la trasformazione non è separabile in componenti 1-D, quindi non sarai in grado di ridurre il problema a due trasformazioni 1-D.


Mi sono sempre chiesto come sia diverso dal fare un normale FFT lungo le direzioni della base reticolare. Il vantaggio è che ciò preserva le simmetrie? Perché è importante?
Victor Liu,

Ho il sospetto che quando formerai la tua matrice circolante (in precedenza?) Non avrà le stesse belle proprietà di prima. . . La mia comprensione di FFT è che a causa delle simmetrie e delle somiglianze di sé della matrice di trasformazione è possibile utilizzare metodi di risoluzione davvero intelligenti.
meawoppl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.