mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Scale Factor bei MATLAB


Autor: Thomas Wolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Wolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Wolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...Danke, Thomas Winkel!

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
du hast recht, ich habe unrecht, ich hab da was durcheinander gebracht,
ein Filter ist natürlich kein ARMAX Modell!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.