Преобразование Фурье в 3-х измерениях на неравномерной сетке в Matlab

Мне нужно рассчитать трехмерное преобразование Фурье структур, у меня есть их координаты [x, y, z]. Я думал об интерполяции в равномерную сетку с наименьшим расстоянием между точками и использовании fft, но это оказалось непрактичным в памяти, поэтому fft нельзя использовать. Пример из моих данных [x, y, z]:

xyz=[ 23.1860   44.9710    5.9280
      25.5370   44.0090    4.9960
      24.5030   44.5890    6.2280
      20.0150   46.4080    7.9110
      24.9910   44.6760    7.5330
       4.8660   44.7120    8.6830
      36.7170   33.7440    6.5570
      11.1510   40.0590    5.8120
      29.2550   34.8750   10.0850
       5.4230   48.8200   12.7380
      38.2020   35.7590    1.3260 ];

Был бы признателен за ваш совет


person Community    schedule 27.02.2013    source источник


Ответы (2)


Сам я этим не пользовался, но рассмотрите возможность использования NFFT, размещенного на Сайт математического факультета Хемницкого технологического университета. Это снижает требование O (N ^ 2) до O (NlogN), как в случае БПФ. Кроме того, теперь он включает классы Matlab для взаимодействия с файлами MEX.

Вы можете загрузить несколько примеров на сайте, которые показывают, как взаимодействовать с MATLAB, а в часто задаваемых вопросах есть инструкции по использованию в Windows + MATLAB (если вы используете).

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

Он находится под лицензией GPL.

person Steve    schedule 01.04.2013

К сожалению, алгоритмы, которые делают БПФ таким эффективным, просто неприменимы к неоднородному случаю. В то время как БПФ - это O (N log N), неоднородный случай обычно равен O (N ^ 2) (насколько мне известно). Все методы NUFFT, о которых я знаю, в основном основаны на интерполяции, поэтому вы вряд ли найдете принципиально другой способ сделать это.

Какова ваша геометрия сетки (я не могу увидеть массивы, которые вы предоставили для шаблонов интервалов)? Если одно или два измерения однородны, вы можете применить одно- или двухмерное БПФ к ним независимо, а затем интерполировать только для третьего измерения. Многие задачи в сферических координатах эффективно делают это: они используют БПФ вдоль линий постоянной широты, потому что широты обычно расположены неравномерно, чтобы использовать квадратуру Гаусса, а долготы однородны.

Грингард, Л., и Ли, Дж. Ю. (2004). Ускорение неравномерного быстрого преобразования Фурье. Обзор SIAM, 46(3), 443–454.

person Stochtastic    schedule 27.02.2013
comment
Мне не нужна единая определенная геометрия сетки, координаты небольших молекулярных структур, которые я хочу рассчитать для их 3D FT. - person ; 28.02.2013