Forum: Digitale Signalverarbeitung / DSP / Machine Learning Online Bestimmung der PT1 Zeitkonstante mit beliebiger Inputsignalantwort


von Mehdi T. (mehdital)


Lesenswert?

Hallo,
ich arbeite gerade an einen Algorithmus der die Zeitkonstante von einem 
PT1 Modell bestimmen soll.Vorhandene Signale sind : Input signal (der 
leider nicht ein Sprung ist, und gar nicht konstant ist), Soll output 
Signal und natuerlich der Berechnete Output signal vom aktuellen PT1 
Glied. Dafur faengt man an bei einer Zeitkonstante die keine Filtrierung 
entspricht. Das Soll output-signal ist schon vorhanden. Beide Ist und 
Soll output signale werden dann verglichen und die Zeitkonstante 
dementsprechend  angepasst (mit kleine Schritte), das wird Punktweise 
gemacht und online, also fur jedes input Punkt, output berechnen, 
vergleichen und Zeitkonstante anpassen dann naechstes output wird mit 
der neuen Zeitkonstante berechnet, das aehnelt ein bisschen die update 
Funktion in Neuronale netze. Bisher scheint es dass es gut zu laufen, 
und gute Ergebnisse sind erreicht. Meine Frage ist aber ob man sowas 
machen darf. Wie sinnvoll ist es die Zeitkonstante von einem linearen 
ZEITINVARIANTEN System zu bestimmen mit einem Algorithmus der aber 
ZEITVARIANTE Filter benutzt. Ich hatte bisher nur Regelungstechnik 1 und 
2 Vorlesungen, die nur davon ausgegangen sind dass die Systeme 
Zeitinvariant sind.

von Mar V. (marvol)


Lesenswert?

Hallo. Interessante Aufgabe! Allerdings verstehe ich Deinen Filter nur 
im Ansatz, es scheint eine Art Anpassung zu sein. Im Normalfall würde 
ich bei nicht konstanten Eingangswerte die Ausgangswerte aufnehmen und 
diese mit einem Algorithmus für die kleinste Fehlerquadrate auswerten, 
dies funktioniert eigentlich ganz gut, wenn man die Startwerte gut 
definieren kann. Eine Updatefunktion bei neuronalen Netze kenne ich 
nicht, wäre interessant, was Du damit meinst. In der Regel werden 
neuronale Netze mit einem Datensatz traininiert, die Aktualisierung der 
Gewichte online ist mir neu, und ich bin mir auch nicht sicher, ob dies 
funktioniert. Denn neuronale Netze werden eigentlich auch mit dem Ansatz 
der kleinsten Fehlerquadrate trainiert, damit sie auf eine Vielzahl von 
Eingangsparameter funktionieren. Bei der Frage ob zeitinvariante Systeme 
mit zeitvariante Filter bestimmt werden können, würde ich vermuten, dass 
dies funktionieren sollte, denn der zeitabhängige Parameter müßte gegen 
Null gehen - also rausfallen. Allerdings habe ich nicht verstanden, wie 
Dein zeitvarianter Filter aufgebaut ist, denn er müßte mindestens einen 
zeitabhängigen Parameter besitzen - bei einer Anpassfunktion ist dies 
nicht der Fall, denn es wird lediglich der Parameter T1 verändert. Gruß 
Marvol.

von Mar V. (marvol)


Lesenswert?

Hallo nochmal. Online lernen für ein bekanntes System (in diesem Fall 
PT1) müßte auch über die Differentialgleichung und Kalman Filter 
funktionieren. Habe ich aber noch nicht ausprobiert.
Aber hierzu gibt es einen Artikel:
https://journal.embedded-projects.net/index.php?module=archiv&action=pdf&id=7

von Mehdi T. (mehdital)


Lesenswert?

Mar Vol schrieb:
> Hallo. Interessante Aufgabe! Allerdings verstehe ich Deinen Filter nur
> im Ansatz, es scheint eine Art Anpassung zu sein. Im Normalfall würde
> ich bei nicht konstanten Eingangswerte die Ausgangswerte aufnehmen und
> diese mit einem Algorithmus für die kleinste Fehlerquadrate auswerten,
> dies funktioniert eigentlich ganz gut, wenn man die Startwerte gut
> definieren kann. Eine Updatefunktion bei neuronalen Netze kenne ich
> nicht, wäre interessant, was Du damit meinst. In der Regel werden
> neuronale Netze mit einem Datensatz traininiert, die Aktualisierung der
> Gewichte online ist mir neu, und ich bin mir auch nicht sicher, ob dies
> funktioniert. Denn neuronale Netze werden eigentlich auch mit dem Ansatz
> der kleinsten Fehlerquadrate trainiert, damit sie auf eine Vielzahl von
> Eingangsparameter funktionieren. Bei der Frage ob zeitinvariante Systeme
> mit zeitvariante Filter bestimmt werden können, würde ich vermuten, dass
> dies funktionieren sollte, denn der zeitabhängige Parameter müßte gegen
> Null gehen - also rausfallen. Allerdings habe ich nicht verstanden, wie
> Dein zeitvarianter Filter aufgebaut ist, denn er müßte mindestens einen
> zeitabhängigen Parameter besitzen - bei einer Anpassfunktion ist dies
> nicht der Fall, denn es wird lediglich der Parameter T1 verändert. Gruß
> Marvol.

mit update funktion von Neuronale netze habe ich auch least square 
gemeint und nicht dass es online gemacht werden soll. Bei Zeitvariant 
meinte ich dass man wahrend die Anpassung des Filters (der eig. 
Zeitinvariant ist) wird die Zeitparameter T1 immer veraendert, basiert 
auf den Unterschied zwischen ist und soll ausgangswerte. Da frage ich 
mich ob es sinn macht weil wenn man z.B die Sprungantwort von einem PT1 
Glied betrachtet, der Unterschied zwischen soll und ist werte ist 
maximal am Anfang und geht nach null mit der Zeit. Wenn man jetzt ein 
Signal  als input hat, der in der Zeit t anfangt zu steigen z.B, kann 
man sagen dass error in t+1 und error in t+10 gleichbedeutend sind? oder 
dass in t+10 error kleiner ist da das System schon seit langem am 
hinterherlaufen ist nach dem Input signal ? die Dynamik von solche 
Filter ist mir leider noch nicht so klar

ich habe auch das gefunden 
http://en.wikipedia.org/wiki/Least_mean_squares_filter das beschreibt 
eigentlich genau was ich machen will , aber ich konnte noch nicht 
feststellen wie ich die Vektoren x(n) (input) und h(n)(Koeffizienten mit 
denen input multipliziert werden sollten) definieren soll, da ich in 
meinem Fall der Ausgang  sowohl vom aktuellen input als auch vom letzten 
output abhaengen soll.

(jetzt stelle ich fest dass ich scheon Deutsch und Englisch gemischt 
habe, tut mir Leid)

von Mehdi T. (mehdital)


Lesenswert?

Mar Vol schrieb:
> Hallo nochmal. Online lernen für ein bekanntes System (in diesem Fall
> PT1) müßte auch über die Differentialgleichung und Kalman Filter
> funktionieren. Habe ich aber noch nicht ausprobiert.
> Aber hierzu gibt es einen Artikel:
> https://journal.embedded-projects.net/index.php?module=archiv&action=pdf&id=7

Vielen Dank, das werde ich mir anschauen

von Mar V. (marvol)


Lesenswert?

Hallo.

Also die Berechnung der Zeitkonstante T1 kann nur bei Veränderung der 
Sollwerte erfolgen, danach ist die Änderung Null und es kann lediglich 
der P-Anteil berechnet werden.

Grundsätzlich arbeiten die Least-Square Verfahren mit einer Datenmenge, 
d.h. es werden mehrere Inputs mit den entsprechenden Outputs verwendet, 
damit werden dann die Koeffizienten bestimmt:
http://en.wikipedia.org/wiki/Least_squares

Die Arbeitsweise von Least-Mean muss ich erst intensiver nachlesen, im 
Gegensatz zum Least-Square Verfahren können diese bei neuen Werte direkt 
eine Anpassung vornehmen, was natürlich die Rechenzeit enorm reduziert. 
Sehr interessant, ich habe schon länger danach gesucht.

Auf welchem System arbeitest Du, vielleich besteht die Möglichkeit, dass 
wir uns die Algorithmen austauschen. Ich arbeite zur Zeit mit ScicosLab, 
C ist natürlich auch möglich.

Gruß Marvol

von Werner (Gast)


Lesenswert?

Und was spricht dagegen, die Zeitkonstante direkt aus der 
Kreuzkorrelation von Ein- und Ausgangssignal zu bestimmen?

von Mar V. (marvol)


Lesenswert?

Hallo Werner.

Ich bin mir nicht sicher, aber die Korrelation erkennt ein Signal in 
einem anderen Signal mit einer definierten Zeitververschiebung, bzw. 
gibt doch der Korrelationfaktor sogar noch eine Art 
Übereinstimmungskennzahl heraus.

Bei einem PT1 ist der T1-Anteil doch ein Speicherverhalten, der nicht 
eine reine Zeitverschiebung darstellt. Wahrscheinlich wäre die 
Korrelation dann anwendbar, wenn der Wendepunkt bekannt wäre (Annahme 
kein Wissen).

Mit dem Least Mean Verfahren bin ich mir auch nicht sicher, ob dies das 
gewünschte Ergebnis liefert, soweit ich nachgelesen habe, werden bei dem 
Algorithmus die Koeffizienten eines Polynoms bestimmt. Damit läßt sich 
zwar die Zeitreihe darstellen, liefert aber nicht direkt den P- und T1 
Anteil.

Je nach Rechenverfügbarkeit würde ich den 
Levenberg-Marquardt-Algorithmus vorziehen, bei diesem Verfahren kann die 
Modellgleichung vorgegeben werden, und die gewünschten Koeffizienten 
werden berechnet. Das Problem sind die Startwerte und die Auswahl der 
Eingangssignale, denn bei einem eingeschwungenen PT1 (es wirkt nur noch 
der P-Anteil) wird es auch nicht funktionieren.

Gruß
Marvol

von Mar V. (marvol)


Angehängte Dateien:

Lesenswert?

Ich habe mal noch ein altes Scilab Script rausgesucht. In der Graphik 
ist das Ergebnis zu erkennen. Falls jemand das Script brauch - einfach 
schreiben (Es wird allerdings eine fertige Funktion verwendet).

von Werner (Gast)


Lesenswert?

Mar Vol schrieb:
> Ich bin mir nicht sicher, aber die Korrelation erkennt ein Signal in
> einem anderen Signal mit einer definierten Zeitververschiebung, bzw.
> gibt doch der Korrelationfaktor sogar noch eine Art
> Übereinstimmungskennzahl heraus.

Da solltest du noch ein paar Grundlagen sortieren.
Die Kreuzkorrelationsfunktion hat nichts mit Kennzahlen zu tun. Das 
verwechselst du mit dem Pearson-Korrelationskoeffizient.

> Bei einem PT1 ist der T1-Anteil doch ein Speicherverhalten, der nicht
> eine reine Zeitverschiebung darstellt.

Stell dir dein beliebiges Eingangssignal einfach als Überlagerung von 
zeitlich verschobenen Sprungfunktionen dar. In der KKF sieht man genau 
die (zeitlich synchronisierte) Sprungantwort.

Das PT1-Gliedes ist einfach ein Tiefpass-Filter 1.Ordnung. Um die 
Zeitkonstante zu bestimmen, kann man z.B. auch "weißes" Rauschen auf den 
Eingang geben und aus der FFT des Ausgangsspektrums die TP-Grenzfrequenz 
ablesen.

von Mar V. (marvol)


Angehängte Dateien:

Lesenswert?

Hallo Werner,

ich habe versucht mich zu sortieren...:-)

Nun habe ich mal einfach ein PT1 Glied mit zufälligen Signal 
beaufschlagt und anschließend die Kreuzkorrelation berechnet. Die 
Ergebnisse siehst Du in die Graphiken.

Wo oder wie erkenne ich nun die Zeitkonstante T1?

Gruß
Marvol

von Mehdi T. (mehdital)


Lesenswert?

Ganz interessant was fuer Methoden man finden kann
das Problem mit der Korrelation ist dass ich in Echtzeit berechnen will, 
mir ist keinen Algorithmus bekannt der die kreuzkorrelation zwischen 
zwei Signale berechnet indem nur die aktuelle werte von jedem Signal 
vorhanden sind (also zwei Werte), ich glaube dass es gar nicht moeglich 
ist da die x Achse vom Korrelationsergebnis total anders ist.
@Marvol mir ist am einfachsten Sachen auf Matlab zu probieren, dann in C 
zu implementieren (fuer mein Praktikum), und ich glaube nicht dass ich 
fertige Skripten extern weiterleiten darf sorry.
Jetzt versuche ich diese Least mean square anzuwenden , im Beispiel gibt 
es leirder nur Filter die alte werte benutzen (bis t = n - 1)  und nicht 
auch die aktuelle wert (t = n)
nochmal Link dazu : 
http://en.wikipedia.org/wiki/Least_mean_squares_filter

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.