Hallo zusammen MATLAB gibt mir folgende Koeffizienten für einen IIR 1. Ordnung: b0 = 1 b1 = 1 a0 = 1 a1 = -0,9991 Scale Factor = 0,000471 Es gilt doch für'n IIR 1. Ordnung: y(n) = -a1*y(n-1) + b0*x(n) + b1*x(n-1) Wie krieg ich denn nun den Faktor 0,000471 in diese Gleichung hinein? Etwa so: y(n) = +0,9991*y(n-1) + 0,000471*x(n) + 0,000471*x(n-1) Ist es so, daß man den Scale Factor (MATLAB) mit den b-Koeffizienten (b0, b1, ...) multiplizieren muss - aber nicht mit den a-Koeffizienten (a0, a1, ...)? DANKE FÜR EURE HILFE !!! Thomas
Hallo, könntest du mal bitte zeigen wie du den Filter dimensioniert hast? Einen "Scale Factor" bekomm ich nämlich hier nicht ausgegeben. Außerdem gilt: a0*y(n) = -a1*y(n-1) + b0*x(n-1) + b1*x(n-2) Wobei a0 immer "1" gewählt wird, und hier vermute ich auch irgendwo deinen "Scale Factor". Gruß, Thomas
Ich habe lediglich folgende Vorgaben: Fs = 2000 Hz Fc = 0,3 Hz (Das ist kein Witz!) IIR 1. Ordnung => y(n) = 0,9991*y(n-1) + 0,000471*x(n) + 0,000471*x(n-1) MATLAB liefert mir: b0 = 1 b1 = 1 a0 = 1 a1 = -0,9991 Scale Factor = 0,000471 Mach ich etwas falsch? Thomas
Dein filter hat bei mir eine Grenzfrequenz von 1.4349e-004Hz. Mich würde interessieren, mit welchen Befehlen du den Filter dimensioniert hast. Wenn du den Filter übrigens mit deinem Scale Factor multiplizierst kommt etwas mehr als 1 als Steady State raus, genauer währe 1/2222, aber du hälst dich ja mit deinen Vorgaben auch ziemlich nah an der Stabilitätsgrenze auf, kein Wunder dass da ungenaue Ergebnisse rauskommen. So, ich geh gleich Schwimmen, wenn also noch Fragen sind dann schnell. Gruß, Thomas
Ok, Thomas, Danke erst mal. Vielleicht noch etwas ganz einfaches: Fs = 2000 Hz Fc = 0,3 Hz IIR 1. Ordnung Butterworth Benutze bitte MATLAB. Kannst du mir bitte die Differenzengleichung hinschreiben? Will nur sicher gehen, daß du auf's gleiche Ergebnis kommst. DANKE !! Gruss, Thoams
kein Thema:
>> [b a] = butter(1,0.3/1000)
b =
1.0e-003 *
0.4710 0.4710
a =
1.0000 -0.9991
b0 = 0.000471
b1 = 0.000471
a0 = 1
a1 = -0.9991
bis dann,
Thomas
Deine Differenzengleichung ist übrigens immer noch falsch, richtig wäre: y(n) = 0,9991*y(n-1) + 0,000471*x(n-1) + 0,000471*x(n-2) Beim ARMA(X) Modell ist die Totzeit k immer >= 1 Abtastschritt. Wenn du wirklich bei dieser Konfiguration bleiben willst, würde ich direkt mit den Vektoren die Matlab liefert weiterarbeiten und nicht per Copy&Paste die Werte übernehmen, siehe dazu auch deinen Thread "Nahe am Stabilitätsrand". Wie gesagt, mit der Genauigkeit, die Matlab auf den Bildschirm bringt liegt die Grenzfrequenz bei 1.4349e-004Hz. Thomas
Hallo Thomas Winkel Danke erst mal!!! Du schreibst, richtig wäre: y(n) = 0,9991*y(n-1) + 0,000471*x(n-1) + 0,000471*x(n-2) Ich behaupte, richtig wäre: (n) = 0,9991*y(n-1) + 0,000471*x(n) + 0,000471*x(n-1) Wieso hast du ein x(n-2)-Glied und kein x(n)-Glied??? (Verstehe ich nicht...) Es handelt sich doch um ein IIR 1. Ordnung. Von daher darf doch überhaupt kein x(n-2)-Glied auftauchen, oder? Gruss, T.
Hallo, du hast recht, ich habe unrecht, ich hab da was durcheinander gebracht, ein Filter ist natürlich kein ARMAX Modell!
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.