Guten Tag, ich habe eine Frage. Ich muss im Rahmen meiner Bachelor Thesis eine Frequenzanalyse eines Gitarrensignals durchführen. Ich habe dies bereits mit einer FFT gemacht. Jetzt ist es daran dies mit einem digitalen Bandpass Filter (FIR) zu machen. Um ein vergleich der Lösungen zu ziehen. Jetzt zu meiner Frage. Ich steige nicht so ganz dahinter wie ich auf die Filterkoeffizienten komme. Ich habe zwar einige Internetseiten gefunden, die mir diese Berechnen aber ich soll auch wissen woher diese kommen. Eine weitere Frage ist, wie soll der Filter aussehen, ich will immer nur ein kleinen Frequenzbereich filtern. So z.B. 128Hz bis 132Hz. Wieviel Koeffizenten brauche ich dazu? Zusatzinfos: Abtastfrequenz 8Khz Hamming Fensterung 512ms (Wenn weniger gehn, dann umso besser) Ich schreibe das Programm in Java. Ich danke für eure Hilfe. Ich bin total neu auf dem Gebiet. ich versuch mir das ganze Thema beizubringen. Mfg Michi
Die Anzahl deiner Koeffizienten haengt von der Ordnung Deines Filters ab. Die Ordnung Deines Filters hängt von Deinen Vorgaben ab (dazu zählen nicht nur obere und untere Grenzfrequenz sondern auch Angaben darüber, wie steil der Übergang zw. Sperr- und Durchlassbereich sein soll, und wie das Signal im Durchlassbereich aussehen soll.) - Dazu gibt es verschiedene Filtermodelle mit jeweiligen Eigenschaften. Du suchst Dir den Filtertyp raus, der Deiner Aufgabenstellung am besten entspricht und berechnest anhand der vorhandenen Formel fuer die Koeffizienten des Filters diese, oder lässt das erledigen von einem Filter-Berechnungstool.
Hi also die IIR Filter werden durch Bilineare Approximations und FIR durch Fourierreihe berechnet. Die steilenn Flanken der Filter lassen sich vielbesser oder eher einfacher mit IIR Filter berechnen. Und noch etwas FFT ist kein Filter damit stellt man nur Spektrum dar.
Zur FFT: ich weiß das dies das Frequenzspektrum darstellt und ich habe dies schin umgesetzt. Jetzt soll ich das ganze mit Filtern machen zum Verglecih. Also woran erkenne ich das ein Filter geeignet ist für mich? Und wie definiere ich wie das Signal aussehen soll? Meine Vision ist, das ich 36 Filter habe(jeweils einen für jeden Frequenzbereich des Gitarrenhalses) an denen ich sehen kann wie stark dieser Bereich vertreten ist. Dann pick ich mir die mit dem stärksten Ausschlag raus und dann weiß ich aus welchen Noten es besteht. MFG Michi
ahmmmm die Koeffizienten würde ich mir mit Matlab generiere.... Simulink oder so! das geht ziemlich schnell und die Koeffs kannst du dir als .dat File exportieren. lg
> Und wie definiere ich wie das Signal aussehen soll?
Das definierst du, und zwar durch goettlich ingenieurmaessige Eingebung.
Soll heissen du zeichnest dir den Durchlassbereich deines Filters
einfach auf. Dabei kannst du dich natuerlich von gewissen Annahmen
leiten lassen. Zum Beispiel der Frage wie stark du dein Signal im
Stopband fuer eine einwandfreie Funktion deiner Schaltung absenken
musst.
Dann kannst du eventuell noch ein paar Zusatzueberlungen anstellen. Zum
Beispiel wie wellig dein Durchlassbereich sein darf. Danach ueberlegst
du dir dann welcher Filtertyp von welcher Ordnung da reinpasst. Und wenn
du das hast, dann kannst du dir Gedanken ueber die Koeffizienten machen.
Olaf
>Das definierst du, und zwar durch goettlich ingenieurmaessige Eingebung.
hehehehe,
finde ich echt gut :-)
Wie schon gesagt schaue dir das Thema Filter-Approximation an.
Hey danke für die Antworten. ich werd es mir mal anschauen! Hab jetzt mal ein FIR Filter gebaut.(http://upload.wikimedia.org/wikipedia/commons/c/ca/Fir_filter_df2.png) Hab mal ne Ordnung von 40 genommen. Jedoch weiß ich jetzt nicht wie ich die Ergebnisse Interpretieren soll. Hier ein beispiel: Cosinus 16 Abgetastwerte x[1,0,-1,0,1,0-1,...] Koeffizienten für Bandpas 128 bis 132Hz Ordnung 8: Ko0: -0.005102130524710351 Ko1: -0.015190777612156531 Ko2: 0.04261212710787802 Ko3: 0.2643917172251824 Ko4: 0.4155 Ko5: 0.2643917172251824 Ko6: 0.04261212710787802 Ko7: -0.015190777612156531 Ko8: -0.005102130524710351 Als Ergebnis bekomme ich nach FIR Filter: y0: -0.005102130524710351 y1: -0.015190777612156531 y2: 0.04771425763258837 y3: 0.27958249483733894 y4: 0.36778574236741157 y5: -0.015190777612156531 y6: -0.32517361525953353 y7: -5.204170427930421E-18 y8: 0.3200714847348232 y9: 5.204170427930421E-18 y10: -0.3200714847348232 y11: -5.204170427930421E-18 y12: 0.3200714847348232 y13: 5.204170427930421E-18 y14: -0.3200714847348232 y15: -5.204170427930421E-18 Was sagt mir das Ergebnis über die Frequenz aus: Sollte noch etwas fehlen dann werde ich dies nachreichen. Folgende Formeln wurden benutzt: w0 = 0.5 * Math.PI * (m_FreqLow + m_FreqHigh) / m_Abtastrate; w1 = 0.5 * Math.PI * (m_FreqHigh - m_FreqLow + filterband) / m_Abtastrate; coeff[m-i]=Math.sin(i*w1)*Math.cos(i*w0)*hamming[i]/(i*Math.PI); Gefenstert wurde mit einem Hamming Fenster. Ich habe diese Formeln aus einem Beispielprogramm jedoch kann ich diese keinem Filtertyp zuordnen. Kann mir da jemand helfen?
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.