FFTで何らかのフィルタリングをしようとしています。私はr2r_1dプランを使用していますが、逆変換を行う方法がわかりません。FFTWライブラリで実数FFTを逆実数化する方法
void PerformFiltering(double* data, int n)
{
/* FFT */
double* spectrum = new double[n];
fftw_plan plan;
plan = fftw_plan_r2r_1d(n, data, spectrum, FFTW_REDFT00, FFTW_ESTIMATE);
fftw_execute(plan); // signal to spectrum
fftw_destroy_plan(plan);
/* some filtering here */
/* Inverse FFT */
plan = fftw_plan_r2r_1d(n, spectrum, data, FFTW_REDFT00, FFTW_ESTIMATE);
fftw_execute(plan); // spectrum to signal (inverse FFT)
fftw_destroy_plan(plan);
}
私はすべてのことを正しくやっていますか?私は混乱しているので、FFTWの複雑なDFTの場合、次のようなフラグで変換方向を設定できます。
p = fftw_plan_dft_1d(N、in、out、FFTW_FORWARD、FFTW_ESTIMATE);
または
p = fftw_plan_dft_1d(N、in、out、FFTW_BACKWARD、FFTW_ESTIMATE);