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.
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.
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
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)
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
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
Und was spricht dagegen, die Zeitkonstante direkt aus der Kreuzkorrelation von Ein- und Ausgangssignal zu bestimmen?
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
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).
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.