Forum: PC Hard- und Software matlab funktionsweise


von wulff (Gast)


Lesenswert?

Hallo zusammen,

wie kann man in Matlab das folgende etwas angenehmer darstellen:

x=

[ 5882761642444329/158456325028528675187087900672 - x1, 
5396624937750785/281474976710656 - x2, 220042955071761/8796093022208 - 
x3, 876350609148443/1125899906842624 - x4]

Das sollte in der Regel wir folgt aussehen:


[o-x1, 19.1727-x2, usw]

vielen Dank für Eure Infos

Wulff

: Verschoben durch User
von Philipp G. (flashmaster)


Lesenswert?

Hallo,

Kann es sein, dass du mit der 'Symbolic' Toolbox arbeitest um 
Gleichungen zu lösen mit mehreren Variablen?
Wenn ja, hilft eminer Meinung nach nur eine teilweise Konversion von 
'symbolic' to 'double'.

Gruß

von wulff (Gast)


Lesenswert?

Hi,

du hast Recht. Wie soll man sonst in Matlab das lösen. Ich habe mehrere 
Parameterdeklarationen. syms x1 bis x4

wie sollte ich sonst nennen!

Grüße

von peter (Gast)


Lesenswert?

simplify könnte helfen

von Karl (Gast)


Lesenswert?

Das richtige Programm für dir richtige Aufgaben könnte helfen.

"MATLAB ist primär für numerische Berechnungen mithilfe von Matrizen 
ausgelegt, woher sich auch der Name ableitet: MATrix LABoratory."

Was du brauchst ist ein CAS -> Mathematica (wenn's was kosten darf) oder 
wxMaxima (GPL)

von wulff (Gast)


Lesenswert?

ich muss mit matlab machen!

Es geht um State space in der Controltechnik. Es sollte 
zustandvektorrückführung durchgeführt werden. Dadurch wird die 
Polvorgabe des Systems verdeutlicht.

Leider kann matlab meine Eigenwerte abhängig von Parametern nicht 
erzeugen, oder ich kann es nicht hinkrigen.

Für einfache Eigenwert berechnung x.y-t.y geht es aber wenn es um 
mehreren unbekannten geht kann das ding irgendwie nicht bleibt in Busy 
und kommt von der Hölle nicht wieder raus!

Kann jemand vieleicht in dem Sinne was raten!

Grüße
Wullf

von Philipp G. (flashmaster)


Lesenswert?

Moin,
Hab ich das richtig verstanden, du willst eine Regelung mittels 
Zustandsrückführung realisieren, welche aber von mehreren unbekannten 
Variablen abhängig ist?
Wo sind denn die Unbekannten, in der Strecke oder willst du verschieden 
Pole und deren Auswirkungen betrachten?

Gruß

von wulff (Gast)


Lesenswert?

Hallo Philipp,

ja ich möchte die Pole verschieben. Aber ich möchte die Polvorgabe nicht 
einfach mit acker oder place machen sondern mit systemmatrix mit 
Zustandsvektorrückführung und vorverstärkung machen. Um daraus zu 
erkennen, wo das asmphtotisch stabil usw. zu untersuhen. Stell dir so 
vor, als ob du A_new erstellt hättest, welche mit k zu tun hat und 
abhängig von x1 bis x4 (k1..k4) ist. Daraus kann man die Eigenwerte in 
Abhängigkeit von k's berechnen und überprüfen bis wohin man die Pole 
verschieben kann usw.

Die Pole kann man verschieben, dafür gibt es auch paar bedingungen. 
Diese ist irgendwie leider nicht so transparant.

wie geschrieben, matlab spuckt immer komische Zahlenformat (wie oben 
definiert)

Vielen Dank für die Hilfe
Wullf

von Philipp G. (flashmaster)


Lesenswert?

Das verstehe ich immernoch nicht so ganz.
Mit acker oder place setzt man doch vorher definierte Pole, die das 
geschlossene/korrigierte System am Schluss haben soll.
Vorher sollte man sich natürlich im klaren sein wo diese Pole liegen 
müssen, damit das System bestimmtes Verhalten aufweist. Dafür habe ich 
immer Matlab´s 'sisotool' benutzt. Dort kann man Pol- und Nullstellen 
manuell legen und sich dann das Gesamtsystemverhalten beobachten. Beim 
Verschieben der Pol- und Nullstellen gibt es dort auch die Option sich 
die Pole des geschlossenen Regelkreises aufzulisten und die Darstellung 
der dazugehörigen Sprungantwort des offenen Systems.
Also kann man die Grenzstabilität anhand der Lage der Pole erkennen und 
an der Sprungantwort des Systems.

Gruß

von Wullf (Gast)


Lesenswert?

Hi Philipp,

leider kann ich die Grenzstabilität nicht so richtig rauskriegen. Der 
offene Kreis ist ja sowieso grenzstabil und liegen die 3-Pole auf der -s 
ebene  und eine bei 0 also das System ist grenzstabil. Nun ist die Frage 
wie soll man die Pole vergeben bzw. festlegen wo das System Stabil ist 
und wo die Stabilitätsgrad und Dämpfung und Begrenzung der 
Relerverstärkung zu finden sind. Das ist dabei die Kunst.

Das ist ja zustandsvektorrückführung und gibt es dafür soviele 
Möglichkeiten für die Poldefinition.

Da hab ich Schwierigkeiten.

Wenn Du helfen kannst oder möchtest kannst du mir beispiel senden oder 
nennen.

Danke und Grüße
Wullf

von Philipp G. (flashmaster)


Lesenswert?

Moin,

Also ich erklär dir das mal Schritt für Schritt wie ich das mache.
Beispiel:
Es ist ein diskretes System 2ter Ordnung gegeben:
sys_d=tf([0.0004967 0.0004934],[1 -1.98 0.9802],0.01)
mit der Abstastzeit Ts = 0.01s.

Nun gehe ich in die GUI von Matlab´s SISOTOOL (einfach "sisotool" in das 
Command Window eingeben). Dort schaue ich mir erstmal lediglich den 
diskreten Root Locus an und legen dort z.B. zwei reele Pole rein. Zur 
Überprüfung des Verhaltens schaue ich mir über 'Analysis->Response to 
Step Command' die zu den Polen gehörige Sprungantwort an und änder die 
Pole soweit ab, bis die Sprungantwort das gewünschte Verhalten aufweist. 
Über 'View->Closed-Loop Poles' kann man sich nun die dazugehörigen Pole 
des geschlossenen Systems anschauen. Die ganze Arbeit bis jetzt im 
SISOTOOL hat erstmal NIX mit der Übertragungsfunktion zu tun die gegeben 
ist. Die bestimmt lediglich die Anzahl der zu vergebenen Pole.

Jetzt gehe ich in meinen State-Feedback Regler und übergebe ihm meine 
abgelesenen Pole. Dieser Regler soll ja auch nur dafür sorgen, dass am 
Ende das "geschlossene", korrigierte System die gewünschten Pole 
aufweist. Wie du nun die Pole übergibst, sei es mit 'pzplace', 'place', 
'acker' oder auf einem anderen Weg, sei dir überlassen.

Bei dem Beispiel habe ich mich für Pole bei 0.86 und 0.98 entschieden. 
Das System weist damit ein PT1 Verhalten auf mit einer Settling Time von 
ca. 3s. Das konnte ich ja im SISOTOOL bei der Step Response beobachten.
Dieses PT1-Verhalten hat nun auch mein oben beschriebens System 2ter 
Ordnung.
Eine wahrscheinlich auftretende Regeldifferenz musst du dann noch über 
einen Vorfilter kompensieren, aber das ist eine andere Geschichte.

Ich hoffe ich hab etwas Licht ins Dunkle gebracht.

Gruß Philipp

von Morz Bonzo (Gast)


Lesenswert?

Ist natuerlich eine etwas unguenstige Ausgangslage. Wenig Ahnung von 
Regelungstechnik, nichts ausser einer Vorschrift. Wenig Ahnung vom Tool 
und wenig Ahnung vom Vorgehen.

Aber irgendwie muss man da durch. Ich wuerd empfehlen mal mit einem 
einfachen Tool eine Simulation zu schreiben. Und nicht gleich mit 
20stelligen Koefizienten anzufahren.

von Wullf (Gast)


Lesenswert?

Hallo Phlipp,

vielen Dank für deine Infos. Die waren/sind sehr nützlich. Mir war dies 
Thema in Matlab unbekannt. Dieses Verfahren ist sehr nützlich und man 
kann die Response sehr schnell sich anschauen und grobe Kriterien 
rausfinden.

Herr Morz Banzo hat eventuell recht von seiner Betrachtung aus. Ich 
stimme ihm leider nicht zu und danke ihm wegen seiner Motivation:)

Meiner Meinung nach kann man manchmal durch kleine Antriggerung zum Ziel 
ganz schnell kommen und seine Probleme lösenn. Das ist machmal ein 
langer Weg aber das Ergebnis ist immer dann positiv. Von daher finde ich 
die hilfreiche Infos von Philipp sehr nützlich und danke ihm nochmal!

Philipp:
Wenn Du irgendwelche Fragen über Leistungselektronik mit 
Regelungstechnik haben würdest kannst du mir gern schreiben. Ich würde 
versuchen darauf zu antworten.

Freundliche Grüße
Wullf

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.