Filterberechnung

Gast #298749
Lesenswert?

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
Angehängte Dateien:
Gast #298752
Lesenswert?

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
Gast #298756
Lesenswert?

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
Gast #298757
Lesenswert?

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! ;-\
Gast #298758
Lesenswert?

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
Angehängte Dateien:
Gast #298759
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren