Forum: Digitale Signalverarbeitung / DSP / Machine Learning Übertragungsfunktion aus sweep bestimmen


von Christoph G. (butterblume)


Lesenswert?

Hallo,
Zuerst einmal ein großes Lob an dieses Forum. ich habe mich gerade erst 
angemeldet aber bereits häufig gute Tips gefunden.

Nun habe ich ein Problem, für das ich leider keine Lösung finde.

Ich habe eine Messreihe aufgenommen. Dabei habe ich ein mechanisches 
System mit einem Sinus-Sweep-Signal angeregt. Gemessen habe ich den 
Ausgang des Systems. Mein Ziel ist es jetzt aus den Messwerten die 
Übertragungsfunktion zu bestimmen die nach möglichkeit stabil und 
invertierbar sein sollte.

Zuerst habe ich die "System identification Toolbox" von Matlab 
verwendet. Diese Toolbox liefert mir auch viele schöne arx oder n4sid 
Modelle. leider jedoch alle nicht stabil und invertierbar.

Mein Gedanke war jetzt die Methode der kleinsten Fehlerquadrate 
anzuwenden. Hier hört es leider mit meinem Verständnis ein wenig auf. 
Was muss ich denn genau annähern?

Ich habe versucht G=fft(Ausgang)./fft(Eingang) dann erhalte ich einen 
Vektor mit zahlreichen komplexen Einträgen. Kann ich aus diesen 
Einträgen die Übertragungsfunktion annähern?

Viel habe ich schon darüber gelesen, dass man das System zur 
Systemidentification lieber mit einem Rechtecksignal anregen sollte. Das 
ist mir leider nicht möglich, da so das System zerstört werden würde.

Vielleicht könnt Ihr mir weiterhelfen

von Christoph G. (butterblume)


Lesenswert?

Soo... ich habe nochmal ein bisschen weiter versucht und jetz mit der 
Methode der kleinsten Fehlerquadrate folgende Übertragungsfunktion 
angenähert:

Transfer function:

0.01995 z^5 + 0.0231 z^4 + 0.1962 z^3 + 0.06428 z^2 + 0.02985 z + 
0.001591
------------------------------------------------------------------------ 
--
      z^5 - 0.815 z^4 + 0.6934 z^3 - 0.4193 z^2 - 0.2116 z + 0.1136

Sampling time: 5e-005

Daraus ergeben sich folgende Polstellen und Nullstellen

poleG =

   0.0610 + 0.9150i
   0.0610 - 0.9150i
  -0.4579
   0.7656
   0.3852


zeroG =

  -0.4150 + 3.0384i
  -0.4150 - 3.0384i
  -0.1341 + 0.3527i
  -0.1341 - 0.3527i
  -0.0595

Mein Problem ist jetzt nur, dass ich die Funktion weder kausal 
invertieren kann noch ist sie stabil. Gibt es irgendwie noch einen 
anderen Trick wie ich diese Funktion stabil gestalten kann bzw. 
invertieren kann?

hoffentlich kann mir jemand helfen.

mit freundlichen Grüßen
Christoph

von Christoph G. (butterblume)


Lesenswert?

bzw. wie müsste ich meinen Regler gestalten um diese Regelstrecke zu 
betreiben?

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.