nabend allerseits :) ich hab nich so wirklich ne ahnung von höherer mathematik in assembler und daher wollt ich hier mal nachfragen, ob es nicht noch eine andere lösung für mein problem gibt... ich brauche eine genaue analyse eines "audio"-signals zwischen 0,1hz und 100hz... also wie stark welche frequenz vertreten ist... aber brauche ich dafür wirklich unbedingt eine fft oder kann ich mir dieses trigonometrische monster irgendwie ersparen?? lg alex
>ich brauche eine genaue analyse eines "audio"-signals zwischen 0,1hz und >100hz... also wie stark welche frequenz vertreten ist... Was verstehst du unter "genau"? Die höhere Mathematik in Assembler beschränkt sich bei der Fourier-Analyse auf einen Sinus, der aus einer (interpolierten) Wertetabelle kommt. Ein bisschen Multiplikation und eine Wurzel, für die es im Wiki auch Codebeispiele gibt. Die Frage ist eher, welche Informationen du über das Eingangssignal benötigst und mit welcher zeitlichen Auflösung. Ein paar Eckdaten wären nicht schlecht: - gibt es bestimmte Frequenzen, die du prüfen möchtest? - ansonsten: welche Frequenzauflösung und Verteilung (logarithmisch oder linear)? - welche Genauigkeit (in bit)? - welche Sampling-Rate? - Was passiert mit den Messwerten? - Warum unter 20 Hz bei Audio? - Welche zeitliche Auflösung - Welche Plattform? Es gibt diverse Alternativen zur Fourier-Analyse. Schöne Grüße Kai
hey kai, danke für die schnelle antwort :) erstmal ne korrektur vorweg: meinte eben 1hz bis 100hz - gibt es bestimmte Frequenzen, die du prüfen möchtest? am luxoriösten wäre natürlich, wenn ich alle vielfachen frequenzen von 1hz prüfen könnte ^^ aber ich würd mich da auch mit weniger begnügen ;) - ansonsten: welche Frequenzauflösung und Verteilung (logarithmisch oder linear)? linear :) - welche Genauigkeit (in bit)? die genauigkeit sollte dabei bei so +-0,5hz (bei 8bit auflösung) liegen... - welche Sampling-Rate? realtime!? also so schnell wie möglich ^^ - Was passiert mit den Messwerten? -> so ne art spectrum-analyser - Warum unter 20 Hz bei Audio? ist keine echtes 'audiosignal', ist aber genauso aufgebaut (überlagerung verschiedener frequenzen und amplituden) - Welche zeitliche Auflösung was meinst du damit genau? tschuldige... hab heut nacht ne lange leitung.. - Welche Plattform? avr (irgendwas richtung mega...) und in assembler lg alex
Schau mal hier, ob da was bei ist: Beitrag "Schnelle FFT in Assembler" >- gibt es bestimmte Frequenzen, die du prüfen möchtest? >am luxoriösten wäre natürlich, wenn ich alle vielfachen frequenzen von >1hz prüfen könnte ^^ aber ich würd mich da auch mit weniger begnügen ;) Ergibt also eine Analyse von 100 Bändern - ist schonmal nicht gerade wenig. Je mehr Frequenzen du unterscheiden willst, desto schlechter wird die zeitliche Auflösung - also um so mehr Samples musst du aufzeichnen und auswerten. >- ansonsten: welche Frequenzauflösung und Verteilung (logarithmisch oder >linear)? >linear :) Das menschliche Gehör kann tiefe Frequenzen deutlich besser unterscheiden als hohe, weshalb die Frequenzen normaler Weise exponentiell notiert werden. Eine lineare Verteilung spräche für die Fourier-Analyse. >- welche Genauigkeit (in bit)? >die genauigkeit sollte dabei bei so +-0,5hz (bei 8bit auflösung) >liegen... Missverständnis. Mit wie vielen Stufen soll die Amplitude jeder Frequenz wiedergegeben werden? Für rein grafische Geschichten reichen 8 Bits dicke. >- welche Sampling-Rate? >realtime!? also so schnell wie möglich ^^ Ich meinte, wie schnell kommen die Daten rein? Bei 100 Hz Maximalfrequenz macht eine Sampling-Rate größer als ca. 400 Hz nicht viel Sinn. 200 Hz reichen hier meist schon. >- Warum unter 20 Hz bei Audio? >ist keine echtes 'audiosignal', ist aber genauso aufgebaut (überlagerung >verschiedener frequenzen und amplituden) Was ist es denn? >- Welche zeitliche Auflösung >was meinst du damit genau? tschuldige... hab heut nacht ne lange >leitung.. Wir oft pro Sekunde soll das Programm die neuen Pegel ausgeben? Das steht dem Frequenzauflösungsvermögen diametral entgegen! Siehe auch: http://de.wikipedia.org/wiki/Heisenbergsche_Unsch%C3%A4rferelation ab "Folgende Analogie verdeutlicht die Unbestimmtheit:" >- Welche Plattform? >avr (irgendwas richtung mega...) und in assembler Wird auf möglichst viel SRAM hinauslaufen. Benötigst du nur die Amplituden oder auch die Phasen? Im Moment spricht alles für eine FFT. - Fenstergröße: 256 8-bit Samples. - Sample Rate 256 Hz - Auflösung 1 Hz Ob das von der Rechenleistung her hinhaut weiß ich noch nicht. Die Trennung der Frequenzen im unteren Bereich wird recht mies. Zeitliche Auflösung liegt bei 1 Hz (Jede Sekunde ein neues Spektrum), lässt sich aber mit genügend Rechenleistung unter Verwendung eines Ringpuffers interpolieren. Wenn das von der Rechenzeit her nicht passt, kann man den Puffer halbieren, dadurch ergibt sich eine Frequenzauflösung von 2 Hz und eine zeitliche Auflösung von 2 Hz. Das Spielchen kannst du so lange fortsetzen, bis die Rechenzeit reicht oder die das Ergebnis nicht mehr gefällt ;) Ein bisschen im Forum suchen schadet übrigens nicht - Spektralanalysen werden hier recht oft diskutiert. Gruß und gute Nacht Kai
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.