Расхождение между C ++ FFTW и PyfftwC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Расхождение между C ++ FFTW и Pyfftw

Сообщение Anonymous »

Я использую библиотеку FFTW в C ++, и теперь мне нужно использовать ее в Python. Общий подход к этому, по -видимому, - библиотека PYFFTW.
Я обнаружил разницу между выходами очень основных программ с использованием библиотеки FFTW в C ++ и библиотекой Pyfftw в Python.
Примером минимального воспроизводимого. />

Код: Выделить всё

import numpy as np
import pyfftw

K = pyfftw.empty_aligned(4, dtype='complex128')
X = pyfftw.empty_aligned(4, dtype='complex128')
ifftDoer = pyfftw.FFTW(K, X, direction='FFTW_BACKWARD')

K[:] = np.array([1, 2, 3, 4])

ifftDoer()

print(X)

> OUTPUT: [ 2.5+0.j  -0.5-0.5j -0.5+0.j  -0.5+0.5j]
с FFTW версией 3.3.8 :
int main() {

int N = 4;

fftw_complex *in, *out;
fftw_plan p;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
p = fftw_plan_dft_1d(N, in, out, FFTW_BACKWARD, FFTW_ESTIMATE);

for (int i = 0; i < 4; i++) {
in[0] = i+1;
in[1] = 0;
}

fftw_execute(p);
printFFTWComplexArr(out, N);
fftw_destroy_plan(p);
}

> OUTPUT: (10, 0), (-2, -2), (-2, 0), (-2, 2),
< /code>
Существует коэффициент 4 между результатами. Играя с кодом, это на самом деле фактор N, размер массива. Мне казалось бы странным включать тонкие нормализующие факторы с упоминанием 0. знаю.

Подробнее здесь: https://stackoverflow.com/questions/796 ... and-pyfftw
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»