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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.