Scale Factor bei MATLAB

Gast #253193
Lesenswert?

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

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

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

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

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

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

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.

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