Библиотека для преобразования Фурье на треугольной решетке

11

Я ищу достаточно быстрые реализации дискретного преобразования Фурье (ДПФ) на двумерной треугольной или гексагональной решетке.

Я был бы признателен за указатели на такие реализации (особенно те, которые легко использовать из Python или Mathematica), а также на описания того, как свести эту проблему к 1D DFT, который уже встроен во многие системы.

Сабольч
источник
Это мой первый пост здесь, я был бы признателен за определенную пометку вопроса.
Сабольч
2
Похоже, что вам здесь нужно кристаллографическое преобразование Фурье. Для справок, есть это , это , это , и это , но у меня проблемы с поиском процедур на FORTRAN, которые можно загрузить бесплатно. Возможно, вам придется свернуть свою собственную реализацию ...
JM
1
+1 за вопрос. Я думаю, что теги пока хороши; если кто-то думает, что вопрос должен быть помечен по-другому, он отредактирует его (если не сможет, попросит того, кто может).
Джефф Оксберри
1
Это , это , и это еще несколько ссылок, которые могут быть полезны.
JM
1
@ Марк Я также нашел пару ссылок (до публикации), в том числе предоставленную Джеффом, но я не нашел никакого рабочего кода. Тем не менее, я не нашел термин «кристаллографическое преобразование Фурье». Это на самом деле вопрос от друга, который немного стеснялся опубликовать (но я также заинтересован). Проблема со ссылками в том, что их сложно найти и найти правильную. Я вернусь в конце концов и напишу о результате.
Сабольч

Ответы:

5

Есть несколько работ по Markus Püschel на своем веб - сайте здесь что обсудить Кули-Тьюки типа (так я предполагаю , что «быстрый») алгоритмы для решетчатых преобразований, таких как ДПФ на треугольных и шестиугольных 2-D решеток. В треугольном случае он называет ДПФ дискретным треугольным преобразованием (DTT). У Маркуса есть код SPIRAL, который автоматически генерирует код для преобразований, но похоже, что эта работа DTT не является частью SPIRAL, и на его веб-сайте нет никакой реализации, которую я могу найти. Я начинаю думать, что @JM прав, и что вам, возможно, придется развернуть собственную реализацию.

Обращаем внимание на то, что для двумерных треугольных и гексагональных решеток преобразование не разделяется на одномерные компоненты, поэтому вы не сможете сократить задачу до двух одномерных преобразований.

Джефф Оксберри
источник
Мне всегда было интересно, чем это отличается от простого обычного БПФ вдоль направления базиса решетки. Преимущество в том, что это сохраняет симметрию? Почему это важно?
Виктор Лю
Я подозреваю, что когда вы формируете свою (ранее?) Циркулянтную матрицу, она не будет иметь такие же хорошие свойства, как раньше. , , Я понимаю, что БПФ состоит в том, что из-за симметрии и самоподобия матрицы преобразования вы можете использовать действительно интеллектуальные методы решения.
Meawoppl