FMOD Fourier
-
Erzeugst Du zufällig ein analytisches (complexes) Signal? In manchen Mathematikprogrammen (Matlab z.B.) darfst Du i und j nicht als Variable benutzen, weil diese die imaginäre Einheit repräsentieren. Bei analytischen Signalen ist die Phasenbeziehung immer eindeutig, weshalb Du rein positive oder rein negative Spektren bekommst, je nach Vorzeichen der Phase.
-
Da es hier offenbar eher um die mathematischen Details als um die Programmiertechnik geht seid ihr hoffentlich einverstanden, wenn ich die Diskussion ins Matheforum verfrachte
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x, bzw. C++11) in das Forum Mathematik und Physik verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Nöö, also ich rede hier nur C++ Code, den ich halt mathematisch dargestellt hab, aber die fft wird ja richtig gefüttert. Komplexes Eingangssignal ohne Imaginärteil.
Ich habe jetzt mal hier ein Bilderalbum angelegt, weil dieses "ins Leere Gerede" ohne Bild glaube ich nichts nützt. Hier mal die ffts:
http://www.funpic.de/fotos/philipphtoner/1/80397gruß Philipp
-
PhilippHToner schrieb:
Nöö, also ich rede hier nur C++ Code, den ich halt mathematisch dargestellt hab, aber die fft wird ja richtig gefüttert. Komplexes Eingangssignal ohne Imaginärteil.
Ich habe jetzt mal hier ein Bilderalbum angelegt, weil dieses "ins Leere Gerede" ohne Bild glaube ich nichts nützt. Hier mal die ffts:
http://www.funpic.de/fotos/philipphtoner/1/80397gruß Philipp
Und wo fehlen da jetzt die positiven Frequenzen? Ist doch alles in Butter. Oder verstehst Du nicht, wieso der Realteil fehlt? Erzeuge mal das Signal mit cos anstatt sin. Dann fehlt plötzlich Der Imaginärteil. Erzeuge mal ein Signal, und lass die Phase bei w/4 starten. Dann hast Du plätzlich sowohl Re als auch Im.
Und nun guck Dir mal den Transformationskern der DFT an und überlege, wo das her kommt. Außerdem nochmal zum Recherchieren: Was gibt die Beziehung zwischen Re und Im wieder?
-
Ich weiß nicht, was die Beziehung zwischen Re und Im wiedergibt. Ich dachte, der Im-Teil gibt die Phase an, wo der sin startet, deshalb verstehe ich nicht, wieso ein stinknormaler sin( w(i) * f + 0.0*π) ohne Phase in der Spektralansicht bei Im=0.5 hat.
-
PhilippHToner schrieb:
Ich weiß nicht, was die Beziehung zwischen Re und Im wiedergibt. Ich dachte, der Im-Teil gibt die Phase an, wo der sin startet, deshalb verstehe ich nicht, wieso ein stinknormaler sin( w(i) * f + 0.0*π) ohne Phase in der Spektralansicht bei Im=0.5 hat.
Die DFT ist eine reversible Transformation. Das heisst, alle Infos, welche Du im Zeitbereich hast, müssen sich auch im Frequenzbereich irgendwo verstecken.
Im Zeitbereich hast Du Amplitude, Frequenz und Phase. Im Frequenzbereich hast Du direkt Sichtbar erstmal nur Frequenz und Amplitude. Aber irgendwo muss sich auch noch die Phaseninformation verstecken. Sonst könnest Du keine volständige phasenkorrekte Rücktransformation machen (solche Sachen wie Overlap-Add/Safe wären dann nicht möglich). Die Phaseninformation steckt also Im Verhätnis von Re und Im (die Phaseninformation kann man in der komplexen Ebene daher auch sehr schön am Winkel ablesen).
-
Okay, ich glaub ich hab es jetzt soweit gecheckt. Ich brauch lediglich die Polarform der komplexen Zahlen. Das einzige, was mich verwirrt hat, war, dass durch den Winkel jetzt das Fließkommazahlen-Flimmern zum Vorschein kommt, weil sowas wie atan2(Im, Re) dann interessante Werte geben. Aber ich sollte das glaub ich nicht hernehmen, weil atan2(0.0, 0.0) eigentlich schon wieder nicht mehr definiert ist.
-
xmf schrieb:
Ich habe folgendes vor:
Mithilfe des Fourierspektrums möchte ich bestimmte Effekte in eienr graphsichen Anwendung auslösen.
Die Effekte sollen durch bestimmte Ton-Frequenzen getriggert werden
z.b. bei Bässen verwischt das Bild und bei hohen Tönen tritt eine Rotation ein.
Wie kann ich aus dem Fourier-Spektrum ablesen, was hohe und tiefe Töne sind?
Jenseits davon, dass Du Dir natürlich frequenzabhängige Schwellwerte suchen kannst, solltest Du glaube ich generell mit Wavelets arbeiten, um so das zeitliche Auftreten der jeweiligen Frequenzen am besten bestimmen zu können.
-
schau dir diesen beispiel an: http://www.codeproject.com/Articles/14873/Simple-Audio-Out-Oscilloscope-and-Spectrum-Analyze