Forum: Digitale Signalverarbeitung / DSP / Machine Learning Konvergiert der RLS-Algorithmus nur für stabile bzw. begrenzte Systeme?


von Divergenz-Gepeinigter (Gast)


Lesenswert?

Hi Leute,

seit Tagen sitz ich schon an einem Problem und komm nicht weiter.

Ich möchte eine Übertragungsfunktion, deren Zähler 4. Ordnung und deren 
Nenner 5. Ordnung ist, mit dem RLS-Algorithmus über den Gleichungsfehler 
identifizieren.
Das System ist an sich instabil und ungeregelt. Bisher simuliere ich es 
auch bloß.

Den RLS-Algorithmus habe ich implementiert, aber die Parameter 
konvergieren nicht. Total falsch kann es nicht sein, denn zumindest die 
ersten paar Sekunden des Signals (ein paar aufschwingende Schwingungen) 
werden von meiner identifizierten Übertragungsfunktion korrekt 
berechnet... bis es dann irgendwann total abdriftet.

Jetzt meine Frage1: Konvergiert der RLS-Algorithmus nur für stabile bzw. 
begrenzte Systeme? (Habe mit einem PT2 gespielt und da schien es so zu 
sein, dass die Konvergenz vom RLS nur zustande kam, wenn ich das System 
so gestaltete, dass die Schwingungen nicht aufschwingen.)

Frage2: Der RLS-Algorithmus ist auch von der Anregung u abhängig. Mit 
der Sprungfunktion hält mein RLS wenigstens ein paar Sekunden durch. Mit 
Sinusanregung kommt von Anfang an Blödsinn raus. Jemand Tipps oder 
Erfahrungen, wie man denn ein System anregen sollte?
In der Theorie find ich nichts dazu. Vielleicht hat ja jemand einen 
guten Tipp(./?)

von Matthias (Gast)


Lesenswert?

Ich erinnere mich, dass es eine RLS-Variante mit Vergessensfaktor gibt. 
Benutzt du so einen Term?

Zu 1): RLS geht auch bei instabilen Systemen.

Zu 2): Versuche einmal eher langsame Signalverläufe und die Verwendung 
von Vergessensfaktor

von Detlef _. (detlef_a)


Lesenswert?

>>>>>>>>
Frage2: Der RLS-Algorithmus ist auch von der Anregung u abhängig. Mit
der Sprungfunktion hält mein RLS wenigstens ein paar Sekunden durch. Mit
Sinusanregung kommt von Anfang an Blödsinn raus. Jemand Tipps oder
Erfahrungen, wie man denn ein System anregen sollte?
In der Theorie find ich nichts dazu. Vielleicht hat ja jemand einen
guten Tipp(./?)

Wenn Du das System kennenlernen willst, muss Du es breitbandig anregen ( 
sufficiently rich signal). Wenn Du nur einen Sinus raufgibst siehts Du 
ja auch nur die Reaktion auf diesen Sinus. Sprung ist besser, probier 
mal Rauschen.

Cheers
Detlef

von Divergenz-Gepeinigter (Gast)


Lesenswert?

Danke für die Tipps!

Einen Vergessensfaktor habe ich optional eingebaut, ja. Die 
Kovarianzmatrix muss ja positiv definit sein, habe ich gelesen, damit 
der RLS konvergiert. Derzeit führe ich immer eine Neuinitialisierung der 
Kovarianzmatrix durch, sobald sie aufhört, positiv definit zu sein. 
Zusammen mit dem Vergessensfaktor habe es geschafft, dass der 
Algorithmus einige Simulationsminuten durchhält und dem Signal folgen 
kann. Letztendlich divergiert es allerdings leider trotzdem irgendwann 
und es kommen auch andere Parameterwerte raus, als ich vorgegeben habe. 
Für mich ist das ein Hinweis, dass ich den Algorithmus wohl doch nicht 
ganz richtig implementiert haben kann. Habe es mit Rauschen und Sprüngen 
probiert, aber wahrscheinlich ist eine ungenügende Anregung wohl doch 
nicht Ursache meines Problems.

Ein Vergessensfaktor braucht man doch auch eigentlich nur dann, wenn 
sich die Systemparameter dynamisch verändern. Bei mir sind sie 
allerdings statisch fest vorgegeben.

Naja, werde weiter Fehler suchen. Vielen Dank erst mal!

von Quantisierungsrauschen (Gast)


Lesenswert?

Rechnet dein Algorithmus mit Festkommazahlen? Da neigt der 
RLS-Algorithmus zur Instabilitaet.

von Hinweisgeber (Gast)


Lesenswert?

Spiel mal mit der Kovarianzmatrix.

von Jan K. (jan_k)


Lesenswert?

Gibt es ein Modell oder Skript? Vielleicht können wir ja mal drauf 
gucken.

von Al C. (alessio_c)


Lesenswert?

Hast du deinen RLS-Algo mal an einem stabilen System ausprobiert und auf 
Funktionstüchtigkeit getestet? Wenn nicht, dann mach das mal.

Und jetzt mal von meiner Seite was Anderes (bitte korrigiert mich, wenn 
ich falsch liege -- hatte noch keinen Kaffee heute Morgen...):
Für was ein instabiles System identifizieren? Es divergiert doch. Und 
wenn das schon divergiert, ist es doch klar, dass auch mein Schätzer 
divergieren muss, weil der Erwartungswert des Schätzfehlers gegen Null 
streben sollte. Wie wäre es wenn du einen stabilisierenden Regler 
auslegst und dann eine closed-loop Schätzung machst? Aber Vorsicht: RLS 
verliert hierbei seine Legitimität, weil per Definition der Schätzfehler 
und das Rauschen unkorreliert sind! Funzt aber unter gewissen 
Bedingungen trotzdem...

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
Noch kein Account? Hier anmelden.