Ich muß den im Anhang gezeigten Betragsfrequenzgang in einen digitalen Filter umsetzten, habe aber Probleme mit den Wurtzeln. Wie sieht die digitale Übertragungsfunktion aus. Das Filter soll in einem TAS3103 realisiert werden, bräuchte die koefizenten also als SOS. thx Michael
Fehlen noch Daten oder Frage zu allgemein? Es kann doch nicht sein das hier niemand etwas weis. Mfg Michael
Michael, rette mich, was sind denn SOS Koeffizienten? Ebenfalls extrem hilfreich wären Angaben zu zu f (normiert? aufwas, sampling Frequenz) und natürlich f1-4. Cheers Detlef
SOS sind Second-Order Sections d.h. das Filter wird nachdem es berechnet wurde in viele kleine IIR Filter 2.Ordnung überführt. Das ist relelativ einfach und nicht mein Problem. f ist die Eingangsfrequenz des Filters. Mit der obrigen Formel kann man für jede Frequenz f die gewünschte Dämpfung berechnen. f1 bis f4 sind die Pole des Filters. Dies sind feste Freqenzen die in der Formel als Konstanten stehen und die Eigenschaften des Filters beschreiben. In dieser Anwendung ist z.B. f1 = 30.5 Hz f2 = ca. 100 Hz f3 = ca. 170 Hz f4 = 12178 Hz Meine aktuelle Lösung, die leider noch nicht Perfekt ist: 1. Beim Filter einfach die Wurzelterme weglassen und mit einer Bilinearen Transformation in die Digitalebene übersetzten. 2. Den Würzelteil duch ein digitales Filter hoher Ordnung nähern (IIR Filter 20. Ordnung, Minimale Fehlerquadrate) Das Problem die Näherung ist nicht perfekt. Nächster Versuch: Genetischer Algoritmus zur Näherung. Ach ja die Anwendung ist ein dbA Bewertungsfilter nach DIN. Michael
Hi, ja, aber samplerate noch, ohne samplerate geht bei Entwürfen digitaler Filter garnix! Cheers Detlef
Sample Rate ist 48kHz, sorry habe ich noch vergessen. Würde mich aber auch eher der Lösungsweg interessieren. Mfg Michael
Ist vieleicht nicht klar das die obrige Formel ein Analoger Betragsfrequenzgang ist? Mann kann direkt eine Frequenz f in Herz einsetzen und bekommt die gewünschte Dämpfung heraus. Dieses Analoge Filter soll nun digital Realisiert werden. Die Phasenlage ist bei dieser Anwendung egal und ist deshalb auch nicht definiert. Michael
Schon klar, was Du willst. Naja, aber keine Erfahrung damit... ;-) Naja, wenn Du eh numerisch arbeitest, kannst Du dann nicht gleich die komplette Filterkurve durch "SOS" annähern? Wie geht das eigentlich genau? Naja, also angenommen, Du hättest genügend Rechenleistung, könntest Du doch auch mit Convolution filtern. Also die Übertragungsfunktion in einen entsprechend großen Kernel überführen und dann eben per Faltung filtern. Ist eben ein gigantischer Rechenaufwand. Allerdings könntest Du statt im Zeitbereich zu falten natürlich auch im Frequenzbereich multiplizieren (FFT und IFT). Aber das willst Du vermutlich nicht. Du willst IIR-Filter kaskadieren. Aber wie gesagt: Kein Plan wie das geht! ;-\
Hallo Michael, habe den von Dir vorgegebenen Amplitudenfrequenzgang mit Matlab Funktion 'yulewalk' gefittet. Alles von 500Hz bis 24kHz ist ok, unter 500Hz sieht aber nicht so gut aus. Deine vorgegebene Genauigkeit kenne ich nicht, Matlab-skript ist angehängt, Ordnung war 20, also 10 mal rette-mich (SOS). Bilder vom vorgebenen Frequenzgang liegen auch bei. Cheers Detlef clear f1=30.5; f2=100; f3=170; f4=12178; fs=48000; %f=[0:fs/16 fs*(0.07:0.0005:1)]/2; f=[0:fs]/2; n=20; Hreal=(f4*f4*f.^4)./((f.^2+f1*f1).*sqrt(f.^2+f2*f2).*sqrt(f.^2+f3*f3).*( f.^2+f4*f4)); [fb,fa]=yulewalk(n,2*f/fs,Hreal); Hist=abs(freqz(fb,fa,length(f)))'; subplot(2,1,1); v=1;b=length(f); plot(f(v:b),Hreal(v:b),'b',f(v:b),Hist(v:b),'r'); subplot(2,1,2); v=1;b=1000; plot(f(v:b),Hreal(v:b),'b',f(v:b),Hist(v:b),'r'); xlabel('Frequenz'); ylabel('Betrag'); title('rot: ist, blau: soll') %v=1;b=5000; %plot(f(v:b),Hreal(v:b)-Hist(v:b)); return
Diesen Ansatz habe ich auch schon probiert. Ist aber nicht genau genug. Schau dir deine Kurven mal in dB Skalliert und die Frequenzachse logaritmisch an, die Unterschiede sind schon extrem. Nach Din darf ich bei 31.5 Hz +-2dB Abweichung haben, daeüber nur noch 1.5 bis 1.1 dB erst bei 5kHz werden die Anforderungen wieder lascher. Yulewalk hat anscheinend genau da Probleme wo die Wurzeln sind. Ausserdem ist DC unterdrückung ein muß. Mich wundert das Yulewalk hier nicht besser ist, fällt wohl bei der Optimierung nicht ins Gewicht da nur der mittlere Quadratische Fehler zählt. Danke für deine Mühe. Ich Rätsele aber immernoch an der besten Löung. Hat vieleicht jemand einen Schaltplan für ein dBA Messgerät, auch daraus könnte man sich die Parameter abschauen. Die Frequenzen sind genau: f1: 20.6 f2: 107.7 f3: 737.9 f4: 12194 Die lezten Angaben waren aus dem Gedächtniss, ändern aber nichts am Problem Mfg Michael
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.