Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
IDFT
Hallo,
auf dem neuen Übungsblatt steht in der Formel für die IDFT ein Vorfaktor von “1/sqrt(n)”, in den Vorlesungsfolien hingegen “1/n”. Wann gilt jetzt welche Formel?
Danke.
Ich schätze, das 1/sqrt(n) kommt daher, dass wir in zwei Schritten einmal horizontal und einmal vertikal filtern. Mit 1/sqrt(n) * 1/sqrt(n) ergibt sich wieder 1/n.
Ich hab meine Implementierung soweit fertig und ich frage mich: Wie lange sollte die Berechnung von dem Programm laufen?
Ich bezweifle irgendwie, dass meine Rechnung, die nach 3-4 minuten bei dem 256 * 256 großen Bild noch nichtmal mit der horizontalen transformation durch ist, korrekt ist.
Allgemein: Versuch, die verwendeten Rechenoperationen auf ein Minimum zu reduzieren.
Konkrete Vermutung (weil es bei mir so war): Es könnte an der Berechnung der Potenzen der Einheitswurzel liegen. Bei mir hat es anfangs insgesamt etwa 2 - 3 Minuten gedauert, weil ich die Potenzen jedes mal komplett neu berechnet habe. Nachdem ich das verändert habe, läuft das ganze in ca. 5 Sekunden durch.
void
Mir ist folgendes noch nicht klar:
Wenn ich die Summe bei 1D-IDFT berechne und dann durch 1/sqrt(n) teilen will,
bekomme ich doch das Problem Complex durch Double zu dividieren. Man will doch auch
allgemein keine Complex Werte Speichern in die Matrix, oder?
Kann mir da jemand aushelfen?
Unsere vorgebenene Matrix-Klasse besteht aus komplexen Zahlen, also du musst definitiv komplexe Zahlen in der Matrix speichern.
Wenn wir ein Bild in den Fourierbereich transformieren, bekommen wir ja komplexe Zahlen. Um die Amplitude als Bild darstellen zu können, nimmt man den Absolutbetrag, multipliziert also jede komplexe Zahl mit ihrer komplex konjugierten und davon die Wurzel. (Korrigiert mich bitte, wenn ich mich irre) Brauchen wir aber für die Aufgabe nicht.
Wenn du eine komplexe Zahl c durch einen Double d teilen willst, kannst du entweder [m]Re(c) / d[/m] und [m]Im(c) / d[/m] rechnen oder d in eine komplexe Zahl umwandeln.
[m]c / Complex(d, 0)[/m]
Servus,
hätte auch mal eine Frage. Woran könnte es liegen, wenn das Ergebnisbild von A1 dunkler ist als das Original welches rauskommen soll?
Greetz.
Hast du den richtigen Vorfaktor (1 / n^0.5) ?
Ja also ich rechne erst die Summe von 0 bis N aus und die multiplizier ich dann mit ner Complex(1/sqrt(n), 0).
Sitze da jetzt schon ewig dran und komme einfach nicht auf den Fehler…