Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Programmabsturz durch einfügen eines TButton ??

  Alt 6. Jun 2008, 17:15
Du hast 2 Probleme:

Delphi-Quellcode:
  plan := fftwf_plan_dft_1d(n, @In_[0], @Out_[0], FFTW_FORWARD, FFTW_ESTIMATE);
  With canvas Do Begin
    fftwf_execute(plan);

    plan := fftwf_plan_dft_1d(n, @Out_[0], @in_[0],
      FFTW_Backward, FFTW_ESTIMATE);
  fftwf_destroy_plan(plan);
Nimmt man den ganzen Zeichenkram mal weg sieht man schon mal: Du erstellst einen Plan, führst ihn aus, erstellst einen neuen (ohne den alten zu löschen), löscht aber den neuen zum Schluss. Folge: Speicherloch.
Zumal das Einschließen des Executes und das Erzeugen den 2. Plans in das with hier zur Unübersichtlichkeit beitragen.


Was aber letztlich vermute ich das Problem ist, ist dass die FFTW beim Erstellen eines Plans (wenn man es nicht explizit angibt) nicht dafür garantiert, dass die Werte in den Arrays beibehalten werden! Der Plan kann aber auch problemlos mit 0-besetzten Arrays gemacht werden, und das Füllen nachher. Es geht eh nur um die Samplemenge. Für die Rücktransformation müsstest du dir entweder das Array selbst zwischenspeichern, oder aber schauen wie man der FFTW sagen kann, dass es die Arrays in Ruhe lassen soll (ich meine das ging, weiss aber gerade nicht mehr wie).

Zum Schluss könnte dir das Alignment noch ans Bein pullern. Mach aus den Arrays mal packed Arrays.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat