Frequenz bei FFTW



  • hallo zusammen!

    ich habe als source meiner fft eine 10000 Messwerte in einer Datei. Möchte diese in einem Frequenzspektrum betrachten. dazu folgender Code

    dValuesIN = static_cast<double*>(fftw_malloc( sizeof( double) * N));
    	dValuesOUT = (double*) fftw_malloc(sizeof(double) * N);
    	std::memcpy(dValuesIN, dValues, sizeof(double) * N);
    
    	fftw_plan dft = fftw_plan_r2r_1d(N, dValuesIN, dValuesOUT, FFTW_R2HC , FFTW_FORWARD);
    	fftw_execute(dft);
    //qDebug() << *dValuesIN;
    	fftw_destroy_plan(dft);
    
    	fftw_free(dValuesIN);
    	fftw_free(dValuesOUT);
    

    dValuesOUT speichere ich dann wieder in eine Datei. Funktioniert soweit. nur, dass ich dann wieder nur amplituden bekomme. Ich weiß jetzt nicht wie ich auf die Frequenz komme, kann mir da jemand helfen.





  • Kann mir das jemand mit einem Codebeispiel erklären, ich werde aus diesem pdf nicht schlau.

    Bin für jeden Rat dankbar.



  • Was heißt denn "ich bekomme nur Amplituden"?

    Die DFT bringt dich doch von der Darstellung Signal über Zeit aufgetragen zur Darsellung Amplitude über Frequenz aufgetragen.



  • ich gebe zu ein wenig komisch ausgedrückt

    ich bekomme den Amplitudenwert, aber nicht den dazugehörigen Frequenzwert.

    Bsp:

    Eingang:

    0.141994317957627
    0.281111113331655
    0.414531176690295
    0.539550743186181
    0.653636284498194
    0.754475850920814
    0.840025923150771
    0.908552824316969
    0.958667853036661
    0.989355425524575
    0.999993656453608
    0.990366961494838
    0.960670426145682
    0.911505852311673
    0.843869562758083
    0.759132210574843
    0.659011002817058
    0.545534901210549
    0.421003505132025
    

    Ausgabe der dft

    2.05909e+07
    77058.3
    5504.4
    -130553
    -60071.9
    -105434
    -104199
    -89688.5
    48787.5
    -76821.2
    21535
    -206404
    -120866
    -44308.7
    -64922.2
    

    jetzt hab ich zwar die Amplitudenwerte meines Spektrums, aber woher bekomme ich jetzt zu jeder Ampitude die Frequenz?



  • Wichtig ist diese Formel:
    f_m=mf_AbNf\_m=m*{f\_{Ab}\over N}

    Hierbei ist fmf_m die mm-te Frequenz in dem Frequenzspektrum, fAbf_{Ab} ist die Abtastfrequenz und NN die Anzahl der Werte.

    Beispiel:
    Du hat eine Abtastfrequenz von 44.1 kHz und 1024 Werte. Dann ist die 42. Frequenz:
    f42=4244100Hz1024=1809Hzf_{42} = 42*{44100 Hz\over 1024} = 1809 Hz

    ~Alle Angaben ohne Gewähr. Ich hab das selber noch nie gemacht.~



  • vielen dank für die Antwort.

    Hilft mir sehr viel weiter

    danke nochmals


Anmelden zum Antworten