WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Parameter aus PT2-Sprungantwort

 

jimbo77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2013, 13:36     Titel: Parameter aus PT2-Sprungantwort
  Antworten mit Zitat      
Hallo,
ich habe ein sehr ähnliches Problem, wie in http://www.gomatlab.de/parameter-au.....ort-ermitteln-t26990.html schon besprochen wurde.
Allerdings stellt sich mir die Frage ob ich die Parameter auch mit Matlab berechnen kann. Habe es schon mit der curve fitting toolbox versucht, aber Ergebnis war mehr als unbefriedigend..

Falls es zu ecICP keine vernünftige Alternative gibt, habe ich noch eine Frage zur Einbindung meiner Messdaten. Ich hab die Daten in .mat-Dateien abgespeichert, aber ecICP erkennt das nicht, hat da jemand einen Tipp für mich?

Danke!

Gruß


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2013, 18:47     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Habe es schon mit der curve fitting toolbox versucht, aber Ergebnis war mehr als unbefriedigend.

Was genau hast du versucht und inwiefern war es unbefriedigend?
Nichtlineare Regression ist häufig auf ausreichend gute Startwerte angewesen, damit eine Konvergenz zum globalen Minimum erfolgt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jimbo77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2013, 18:58     Titel:
  Antworten mit Zitat      
Ich habe meine Messdaten ins cftool importiert und versucht, die Lösung einer Differentialgleichung 2. Ordnung zu parametrieren..

ich habe allerdings nirgends entdeckt, wo man Startwerte angeben könnte/sollte?

Folgende Fehlermeldung erhalte ich beim fitting:

Fit could not be computed due to error:

Complex value computed by model function, fitting cannot continue.
Try using or tightening upper and lower bounds on coefficients.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2013, 19:07     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
versucht, die Lösung einer Differentialgleichung 2. Ordnung zu parametrieren..

Bitte genau beschreiben, was du ausgewählt hast.

Zitat:
ich habe allerdings nirgends entdeckt, wo man Startwerte angeben könnte/sollte?

Unter "Fit Options"

Zitat:
Folgende Fehlermeldung erhalte ich beim fitting:

Testdaten wären hilfreich, um das nachstellen zu können.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jimbo77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2013, 19:22     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
versucht, die Lösung einer Differentialgleichung 2. Ordnung zu parametrieren..

Bitte genau beschreiben, was du ausgewählt hast.

type of fit: custom equations->general equations, und dort dann die von Matlab berechneten Lösung der Differentialgleichung T^2*y''+2*d*T*y'+y=K*u , wobei ich u=1 gesetzt habe, da es der eingang ist, und das ist ein Einheitssprung.

Zitat:
ich habe allerdings nirgends entdeckt, wo man Startwerte angeben könnte/sollte?

Unter "Fit Options"

Ah , hab ich gefunden, werde versuchen dort etwas anderes auszuprobieren.

Zitat:
Folgende Fehlermeldung erhalte ich beim fitting:

Testdaten wären hilfreich, um das nachstellen zu können.

Meine Testdaten habe ich angehängt.

Grüße,
Harald


Danke!

Testdaten.zip
 Beschreibung:

Download
 Dateiname:  Testdaten.zip
 Dateigröße:  99.69 KB
 Heruntergeladen:  708 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2013, 19:33     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
und dort dann die von Matlab berechneten Lösung der Differentialgleichung T^2*y''+2*d*T*y'+y=K*u

Um das als Fehlerquelle auszuschließen, schreibe bitte genau, was du eingetragen hast.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jimbo77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2013, 20:21     Titel:
  Antworten mit Zitat      
ich habe folgende Gleichung eingegeben:

K + (K*(d - (d^2 - 1)^(1/2)))/(2*exp((t*(d + (d^2 - 1)^(1/2)))/T)*(d^2 - 1)^(1/2)) - (K*(d + (d^2 - 1)^(1/2)))/(2*exp((t*(d - (d^2 - 1)^(1/2)))/T)*(d^2 - 1)^(1/2))


Erhalten habe ich diese in matlab durch den Befehl:
dsolve('T^2*D2y+2*d*T*Dy+y=K','y(0)=0','Dy(0)=0','t')

Wie gesagt, das System ist eine Sprungantwort, somit habe ich u=1 gesetzt(Einheitssprung).

Das müsste doch so passen oder?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2013, 21:39     Titel:
  Antworten mit Zitat      
Hallo,

die Form, die von MATLAB ausgespuckt wird, beinhaltet keine Schwingungsterme (implizite Annahme d^2-1 > 0).

Ich würde es mit einem solchen Ansatz versuchen:
y = A*exp(-D*t)*sin(C*t) +B*exp(-D*t)*cos(C*t)+ E

mit A = 0.8, B = 0.5, C = 16, D = -1, E = 0 als Startwert kommt was ganz manierliches heraus. Am Anfang passt es zwar nicht sehr gut, aber eben am Ende sehr gut. Wenn du das ändern möchtest, könntest du Gewichte (Weights) vergeben, die Datenpunkte am Anfang höher gewichten.

Einen anderen Ansatz würde ich in Response Optimization (Simulink Design Optimization) sehen. Damit ist meine Erfahrung aber recht begrenzt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jimbo77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2013, 21:58     Titel:
  Antworten mit Zitat      
Ja das ist schon mal recht gut, danke!
Leider ist v.a. der Anfang wichtig, sodass ich das mit der Gewichtung noch machen muss.
Wie bist du denn auf den Ansatz y = A*exp(-D*t)*sin(C*t) +B*exp(-D*t)*cos(C*t)+ E gekommen? Das schaut mir nämlich nicht nach einer allg. Lösung der Diff'gl. 2. Ordnung aus und ich muss das auf jeden Fall darauf rückführen..
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2013, 22:12     Titel:
  Antworten mit Zitat      
Hallo,

sin und cos können auf komplexwertige Exponentialfunktionen zurückgeführt werden. Das ist im Grunde nichts anderes als
Code:
y = (A+D*i)*exp((B+C*i)*t + E


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Melissa
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 19.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2013, 12:02     Titel:
  Antworten mit Zitat      
Hallo jimbo77.

1) Identifikation per Parameterfit habe ich in der Vergangenheit auf mehrmals versucht. Meine Erfahrung: funktioniert nur bei einfachsten Systemen.

2) ecICP erkennt .mat Files nicht, aber: Speichere in Matlab deine Daten als ASCII ab und schon funktioniert es.
Füge zusätzlich auf jeden Fall die Anregung (auch wenn es nur ein Sprung ist) hinzu, dann kommt sofort etwas Vernünftiges heraus.
Allerdings representieren deine Messdaten kein System 2.Ordnung.
Weshalb schreibst Du, dass gerade der Anfang für dich wichtig ist? Warum nicht das Ende? Warum nicht der mittlere Bereich? Warum nicht alles?
Ich hab's mit ecICP berechnet. Etwas Sinnvolles ergibt sich nur, wenn man mindestens 3.Ordnung zuläßt. Bei einem Modell 4.Ordnung ergibt sich das in der beigefügten Grafik gezeigte Ergebnis. Ich würde das als sehr gut einstufen.
Außerdem aufpassen (der Anfang ist dir ja wichtig): Beginnt die sprungförmige Anregung zum Zeitpunkt 0 oder etwas später, wenn das Anfangsgezappel vorbei ist?

Bezüglich einer echten Alternative zu ecICP kann ich keinen Rat geben.

Grüße,
Melissa

gomatlab_model.png
 Beschreibung:

Download
 Dateiname:  gomatlab_model.png
 Dateigröße:  16.87 KB
 Heruntergeladen:  1605 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 24.07.2013, 13:14     Titel:
  Antworten mit Zitat      
Es gibt doch in MatLab die ARX und ARMAX Modelle...damit sollte das auch gehen. Ich würde aber zunächst mal noch die Sprungantwort mit einem Tiefpass filtern um die hochfreq. Störung zu minimieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
jimbo77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2013, 19:25     Titel:
  Antworten mit Zitat      
Hallo,

danke an euch für eure Tipps!

@Melissa:
Das mit ecICP hat sich erledigt, da ich keine Lizenz dafür habe.
Habe jedoch in Matlab die System Identification Toolbox entdeckt, mit der man sehr gut die Sprungantwort als Übertragungsfunktion annähern kann.
Generell ist alles wichtig an der Messung..d.h. je genauer man das Verhalten darstellen kann, desto besser wärs!
Die Antwort beginnt wohl erst nach dem Gezappel...

Wie du schon gesagt hast, erziele auch ich mit einem System 4.Ordnung ein sehr gutes Ergebnis.
Was hat dir denn ecICP als Regler für dieses System vorgeschlagen?

Danke!
 
Melissa
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 19.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 16:43     Titel:
  Antworten mit Zitat      
Hallo Jimbo77

ich dachte Du hast ecICP ? ! --> nach Deiner Erfahrung mit ecICP und MAT files zu urteilen (1. Post).

Aber nun gut, das ist schon "witzig"... Kaum macht man es richtig (Vorgabe 4. Ordnung), schon funktioniert es (auch mit anderen Tools).

Für den Regler kann / möchte ich Dir MEINE Lösung nicht geben, da Du keine Anfoderungen an die Regelkreisdynamik formuliert hast.

Zudem:
Das Problem mit "keinen Zugriff auf die Lizenz" habe ich für mich gelöst, daher bitte ich zu verstehen, wenn die weitergehende Hilfe meinerseits nicht darin besteht,
Dir die Struktur und Parameter des Reglers zu übergeben, sondern Hinweise, wie Du Deine Aufgaben lösen könntest.


Meine Hinweise zur Selbsthilfe:
Deine Strecke (4. Ordnung) ist ein System mit Ausgleich. Um stationäre Genauigkeit zu erhalten - auf sprungförmige Sollwertänderungen - brauchst Du einen Regler mit I-Anteil.
Bei rampenförmigen Sollwertänderungen bräuchtest Du einen Doppel-I-Anteil.
Bei mittleren bis hohen Anfoderungen an das Störverhalten Deines Regelkreises,
ist der Weg aus Deinem anderen Thread "aus Übertragungsfunktion Regler entwerfen" nicht geeignet (sofern ich Deinen Ansatz richtig verstehe).


Weiterhin viel Spaß und Grüße,
Melissa
Private Nachricht senden Benutzer-Profile anzeigen
 
jimbo77

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2013, 17:28     Titel:
  Antworten mit Zitat      
Das verstehe ich natürlich, trotzdem danke für deine Hilfe!
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.