Gaussian'ın Fourier dönüşümü bir gauss'tur, ama bir nedenden dolayı GSL'den (GNU bilimsel kütüphanesi) hızlı Fourier dönüşüm kütüphanesi bunu vermez. Ben (girişim) Fourier dönüşümü ve ondan hemen sonra iki ilgili araziyi oluşturmak için kullandığım kodu ekledim. Neye bulaştığımı belirlememe yardımcı olabilir misiniz?GSL Hızlı Fourier Dönüşümü - Anlamsız Çıkış
#include <gsl/gsl_fft_complex.h>
#include <fstream>
#define REAL(z,i) ((z)[2*(i)]) //complex arrays stored as
#define IMAG(z,i) ((z)[2*(i)+1])
using namespace std;
int main(){
double N = pow(2,9); //power of 2 for Cooley-Tukey algorithm
int n = (int) N;
double f[2*n];
double dx = 10./N;
double x = -5.;
ofstream fileo("out.txt");
for (int i=0; i<n; ++i){ //initialize gaussian
REAL(f,i)=exp(-0.5*x*x);
IMAG(f,i)=0.;
x+=dx;
}
gsl_fft_complex_radix2_forward(f, 1, n); //Fourier transform
for (int i=0; i<n; ++i){
fileo<<i<<" "<<REAL(f,i)<<'\n'; //plot frequency distribution
}
fileo.close();
}
DÜZENLEME: çözüldü! @ roadrunner66 yanıtında belirtildiği gibi
orijinal Gauss genişliği Fourier uzayında saçma bir şekilde dar Gauss giden çok geniş. Dahası, benim grafiğim daha ilginç görünüyordu, çünkü @ nm'nin (şimdi kaldırılmış) yorumunda önerildiği gibi, Fourier dönüşümü DFT'yi k = 0,1, ..., N/2, şeklinde indekslenen k değerleri ile döndürür. N/2, ...- 2, -1.
Bu yapıldı. Orijinal gaussianın genişliği, dönüştürülmüş gaussian fraksiyonel genişliğini 2 yapmıştır. Orijinal gaussian'ın genişliğini 0.01'e değiştiren bir arsa dahil ettim. Düzenle'ye bakın. –