По сути, CPP_FFTW(N, signal, backwards) = NP_IFFT(N, signal) * N
, где CPP_FFTW
- это (плавающая версия) библиотеки FFTW в C ++, а NP_IFFT
- numpy.fft.ifft
из Python.
Проблема здесь CPP_FFTW(N, CPP_FFTW(N, signal, forwards), backwards)
равно N * signal
, а не signal
, как можно было бы ожидать.
Я могу разделить на N
, но моя проблема в том, что мой N
очень большой, поэтому я теряю плавающие - точечная точность. По сути, это нарушает мою программу; У меня почти одинаковые комплексные коэффициенты в приложениях C ++ и Python. Однако я теряю всю свою точность, потому что я использую (c*N)/N
после выполнения обратного преобразования.
Можно ли остановить это умножение?
До IFFT
коэффициенты почти идентичны. Это следующее IFFT:
Python
CPP
введите описание изображения здесь