Bibliothek für Fourier-Transformation auf Dreiecksgitter


11

Ich suche nach relativ schnellen Implementierungen der diskreten Fourier-Transformation (DFT) auf einem dreieckigen oder hexagonalen 2D-Gitter.

Ich würde mich über Hinweise auf solche Implementierungen freuen (insbesondere auf solche, die von Python oder Mathematica aus leicht zu verwenden sind) und auch auf Beschreibungen, wie dieses Problem auf die 1D-DFT reduziert werden kann, die bereits in vielen Systemen integriert ist.


Dies ist mein erster Beitrag hier. Ich würde mich über Hilfe bei der richtigen Kennzeichnung der Frage freuen.
Szabolcs

2
Was Sie hier zu brauchen scheinen, ist eine kristallographische Fourier-Transformation. Als Referenz gibt es dies , das , das und das , aber ich habe Probleme, FORTRAN-Routinen zu finden, die man frei herunterladen kann. Möglicherweise müssen Sie Ihre eigene Implementierung rollen ...
JM

1
+1 für die Frage. Ich denke, die Tags sind vorerst in Ordnung; Wenn jemand der Meinung ist, dass die Frage anders markiert werden sollte, wird er sie bearbeiten (wenn er nicht kann, wird er jemanden fragen, der dies kann).
Geoff Oxberry

1
Dies , das und das sind einige weitere Referenzen, die von Nutzen sein könnten.
JM

1
@Mark Ich habe auch einige Referenzen gefunden (vor dem Posten), einschließlich der von Geoff, aber ich habe keinen Arbeitscode gefunden. Trotzdem habe ich den Begriff "kristallographische Fourier-Transformation" nicht gefunden. Dies ist eigentlich eine Frage eines Freundes, der etwas schüchtern war (aber ich bin auch interessiert). Das Problem mit Referenzen ist, dass es viel Arbeit ist, sie zu lesen und die richtige zu finden. Ich werde irgendwann zurückkommen und über das Ergebnis berichten.
Szabolcs

Antworten:


5

Es gibt mehrere Arbeiten von Markus Püschel auf seiner Website hier , dass diskutieren Cooley-Tukey-like (so vermute ich , „schnell“) Algorithmen für Gitter Transformationen, wie DFTs auf dreieckigen und hexagonalen 2-D - Gitter. Im dreieckigen Fall nennt er die DFT die diskrete Dreieckstransformation (DTT). Markus hat einen Code namens SPIRAL , der automatisch Code für Transformationen generiert, aber es scheint, dass diese DTT-Arbeit nicht Teil von SPIRAL ist und es keine Implementierung auf seiner Website gibt, die ich finden kann. Ich fange an zu denken, dass @JM richtig ist und dass Sie möglicherweise Ihre eigene Implementierung rollen müssen.

In den Abstracts wird darauf hingewiesen, dass die Transformation für dreieckige und hexagonale 2D-Gitter nicht in 1-D-Komponenten unterteilt werden kann, sodass Sie das Problem nicht auf zwei 1-D-Transformationen reduzieren können.


Ich habe mich immer gefragt, wie sich das von einer normalen FFT entlang der Gitterbasis unterscheidet. Ist der Vorteil, dass dadurch Symmetrien erhalten bleiben? Warum ist das wichtig?
Victor Liu

Ich vermute, wenn Sie Ihre (vorher?) Zirkulierende Matrix bilden, hat sie nicht die gleichen schönen Eigenschaften wie zuvor. . . Mein Verständnis von FFTs ist, dass Sie aufgrund der Symmetrien und Selbstähnlichkeiten der Transformationsmatrix wirklich intelligente Lösungsmethoden verwenden können.
Meawoppl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.