Sie sind auf Seite 1von 7

Institut fr Systemtheorie technischer Prozesse u Universitt Stuttgart a Prof. Dr.-Ing. F. Allgwer o 13.

Februar 2004 Regelungstechnik I - Einfhrung in Matlab u ts http://www.ist.uni-stuttgart.de/education/courses/RTI/

Schnellsiedekurs Matlab
Im folgenden sollen die fr Regelungstechnik I wichtigsten Matlab-Befehle kurz zusamu mengestellt werden. Fr eine genauere Darstellung sei hier auf [1, 2, 3, 4] und insbesondere u auch auf die sehr ausfhrliche Matlab Online Referenz, sowohl zu Matlab selbst als u auch speziell zur Control System Toolbox, verwiesen. Die genaue Syntax der Befehle erhlt a man leicht uber die Matlab Hilfe. Der Name Matlab steht fr Matrix Laboratory. Die Herkunft und Strke von Matu a lab liegt also im numerischen Rechnen mit Matrizen. Zur Verwendung von Matlab fr regelungstechnische Zwecke ist die Control System Toolbox unerlsslich. Diese u a Einfhrung in Matlab stellt zunchst den allgemeinen Gebrauch von Matlab vor und u a geht dann auf die spezischen Funktionen dieser Toolbox ein.

Allgemeine Matlab-Grundlagen

Vektoren
a=[1 2 3] b=[4, 5, 6] a=1:3 c=1:.1:2 a*b a.*b b a*b a*b a.*b Eingabe von Zeilenvektoren: Spalten trennen durch Leerzeichen oder Komma Erzeugt den Vektor [1 2 3] Erzeugt den Vektor [1 1.1 1.2 1.3 ... 2] Zeile*Zeile = nicht deniert Elementweise Multiplikation Transposition -> Spaltenvektor Zeile*Spalte = Skalarprodukt Spalte*Zeile = dyadisches Produkt Elementweise Zeile*Spalte = geht nicht

Matrizen
M=[1 2 3; 4 5 6] M*2 M(1,:) M(:,2) M(2,2:3) A=[1 2;3 4] A=[1 2 3 4] eig(A) [V,D]=eig(A) V^-1 inv(V) V^-1*A*V V*D/V det(A) rank(A) poly(A) expm(A*2) Eingabe einer Matrix. Zeilen trennen durch ; oder Zeilenwechsel Multiplikation mit Skalar, ebenso: /, +, Erste Zeile von M Zweite Spalte von M 2. und 3. Element aus 2. Zeile Eingabe einer Matrix dto. Eigenwerte von A Matrix der Rechtseigenenvektoren und diag{EW} Beachte: hier werden zwei Variablen zurckgegeben. u Inverse dto. Trafo auf Diagonalform (= D, wenn Trafo mglich) o Ursprngliche Form aus Diagonalform und Rechtseigenvektoren u Determinante Rang Koezienten des char. Polynoms Transitionsmatrix zum Zeitpunkt t = 2

Polynome
Polynome werden als Vektor Ihrer Koezienten dargestellt. Bsp: Das Polynom p(x) = x3 + 3x2 + 3x + 1 wird dargestellt als der Vektor [1 3 3 1]. roots([1 3 3 1]) poly ([1 2 3]) conv([1 3 3 1], [1 4]) deconv(...) residue(...) polyval(...) polyadd(...) Wurzeln eines Polynoms bestimmen Erstellt das Polynom mit den angegebenen Wurzeln Beachte: hier ist das Argument ein Vektor und keine Matrix Multiplikation von zwei Polynomen Polynomdivision Partialbruchzerlegung Auswertung des Polynoms Addition von Polynomen

Komplexe Zahlen
z=-3+4*j real(z) imag(z) abs(z) angle(z) Eingabe einer komplexen Zahl. Alternative: -3+4*i Realteil Imaginrteil a Betrag Winkel (in rad)

Verschiedenes
% a=5; str=Hallo Welt! pi a=1,b=2 a=[1 2 ... 3] A=[1 2 3 4] % fhrt Kommentare an u ; unterdrckt Bildschirmausgabe u Eingabe von Zeichenketten entspricht Vektor aus Buchstaben [H a l ...] Zahl Zwei Befehle in einer Zeile eingeben: trennen durch , (Ergebnisse werden angezeigt) oder durch ; (Ergebnisanzeige unterdrckt). u Befehl geht in neuer Zeile weiter Aquivalent zur Eingabe a=[1 2 3] Mehrzeilige Eingabe in Kommandozeile: mit Shift-Return Aquivalent zur Eingabe A=[1 2; 3 4]

Grakausgabe
t=0:.1:7; y=sin(t); plot(t,y) title(Zeitplot) xlabel(Zeit t) ylabel(Signal y) legend(...) axis([2 5 -3 3]) grid on/off erzeugt Vektor mit Funktionswerten Erzeugt Diagramm y uber t Titel x-Achsenbeschriftung y-Achsenbeschriftung Legende bei mehreren Kurven in einem Schaubild Achsenskalierung xmin xmax ymin ymax Gitternetz an/aus

Systembefehle
help befehl clear who save dateiname load dateiname Zeigt hilfe zu befehl an. Besser geht es per Men u Lscht alle Variablen o Zeigt alle Variablen an Sichert alle Variablen nach dateiname.mat Ldt alle Variablen aus dateiname.mat a

Skripte, Schleifen
Skripte bestehen aus Befehlsfolgen, die ohne Angabe von Argumenten aufgerufen werden. Der Aufruf geschieht entweder durch Eingabe des Namens in der Kommandozeile oder durch klicken auf das run-Icon in der Kopfzeile des Matlab-Editorfensters. Eine for-Schleife funktioniert in Matlab wie in vielen Hochsprachen. Die Zhlvariable a durchluft dabei alle Werte eines angegebenen Vektors. Es gibt in Matlab auch whilea Schleifen (siehe Matlab-Hilfe). Das folgende Beispiel fr ein Skript verdeutlicht die Probleme, die bei numerischer Beu rechnung aufgrund von Rundungsfehlern auftreten knnen. Es wird durch Vorgabe der o

Wurzeln ein Vektor mit den Koezienten des entsprechenden Polynoms konstruiert (Befehl poly). Anschliessend werden die Wurzeln aus den Koezienten berechnet (Befehl roots). Die so errechneten Wurzeln sollten wieder die gleichen sein wie die vorgegebenen. Im Beispiel unten werden zunchst die Wurzeln 1.1 und 1.2 vorgegeben. Die aus dem a Polynom berechneten Wurzeln werden in der komplexen Ebene aufgetragen. Nach einer kurzen Pause wird eine weitere Wurzel dazu genommen usw. Was wird passieren? % Achtung, Numerik!!! for k=1:30 % Vektor 1:30 gibt Werte fr k vor. u tmp=roots(poly(-1-(1:k)/10)); plot(real(tmp), imag(tmp),*) xlim([-6 0]); axis equal; grid on; pause(2); end Datei: achtung.m

Funktionen
Whrend ein Skript immer das gleiche Ergebnis produziert, kann eine Funktion mit eia nem Argument aufgerufen werden und die Ergebnisse von Berechnungen als Variablen zurckgeben. u Das folgende Beispiel addiert die beiden Argumente. function y=aplusb(a,b) y=a+b; Achtung! Die Datei muss den gleichen Namen haben wie die Funktion. Dabei sind Umlaute und Sonderzeichen nicht gestattet. Hier msste die Datei also aplusb.m heissen. u Skripte und Funktionen unterscheiden sich nicht in der Dateinamenserweiterung (.m). Der Aufruf in Matlab wre z.B. a c=aplusb(3,7) Eine Funktion kann auch mehrere Variablen zurckgeben: u function [summe,differenz]=plusundminus(a,b) summe=a+b; differenz=a-b; Weitere Beispiele fr Skripte und Funktionen folgen im nchsten Abschnitt uber Simulau a tion.

Numerische Lsung (Simulation) von Dierentialgleichungen o


Zur Simulation von Dierentialgleichungen sind immer zwei Bestandteile ntig: ein Code, o der die Dierentialgleichung selbst enthlt und ein Code, der die Simulation durchfhrt. a u Generell werden Simulationen im Zeitbereich (Frequenzbereich siehe Control System Toolbox) in Matlab immer mit Hilfe der Zustandsraumdarstellung durchgefhrt. Als u Beispiel nehmen wir hier das aus der Vorlesung bekannte Modell eines kontinuierlichen Rhrkesselreaktors. Die folgende Funktion liefert zu gegebener Zeit t und zu gegebenem u Zustandsvektor (hier: y) die Ableitung dy. Sie beinhaltet also die rechte Seite des Die rentialgleichungssystems y = f (y), wobei y ein Vektor ist. Die Datei heisst cstr.m (eine vollstndige Version gibt es auf den IST-Webseiten). a function dy=cstr(t,y) % Simulationsgleichungen fr den CSTR u Tc = 300; Rho = 1000; % (weitere Variablendefinitionen ausgelassen) dy=[ -((ca*k)/exp(Ew/(R*T)))+((-ca+cap)*Vp)/Vr (-T+Tc)*(Vp/Vr+(A*U)/(cp*Vr*Rho))-(ca*hr*k)/(cp*exp(Ew/(R*T))*Vr*Rho)]; In Matlab stehen mehrere verschiedene numerische Lsungsverfahren zur Verfgung. Die o u Auswahl des richtigen Simulationsverfahrens ist abhngig von der Dierentialgleichung a ( Simulationstechnik). Der prinzipielle Aufruf ist jedoch bei allen Verfahren gleich, nur der dahinterstehende Algorithmus ist jeweils verschieden. Wenn die Dierentialgleichung in oben dargestellter Weise vorliegt, kann die numerische Simulation mit folgendem Aufruf erfolgen: T=1000; tspan=0:T/1000:T; y0=[5 335]; [t,y]=ode113(@cstr, tspan, y0); figure(1) plot(t,y(:,1)) figure(2) plot(t,y(:,2)) Die ntigen Angaben beim Aufruf sind o @cstr tspan y0 Zeiger auf die Funktion, die die Dierentialgleichung enthlt a Vektor, der den Zeitraum beschreibt, fr den die Dgl. simuliert werden soll. u Anfangsbedingung

Die von dem Lser zurckgegebenen Werte sind o u t y y(:,1) Zeitvektor Vektor mit den Lsungen fr alle Zustnde o u a Zeitreihe fr 1. Zustand (hier: Konzentration) u

Befehle der Control System Toolbox

Darstellung von Systemen


ss(A,B,C,D) tf(Z,N) zpk(z,p,k) ss2tf(sys) tf2ss(sys) minreal(G) ssdata(sys) tfdata(sys) Denition eines Systems in Zustandsform Denition eines Systems uber Zhler und Nenner der Ubertragungsfunktion a Denition eines Systems uber Pole, Nullstellen und Verstrkung a Umwandlung von Zustandsraum- in Ubertragunsfunktions-Darstellung Umwandlung von Ubertragungsfunktions- in Zustandsraum-Darstellung Minimalrealisierung eines Systems (krzen von Pol-/Nullstellenpaaren u mit einstellbarer Toleranz) gibt Zustandsraum-Matrizen A, B, C, D eines Systems zurck u gibt Nenner/Zhler eines Systems zurck a u

Zusammenschaltung von Systemen


series(sys1,sys2) bzw. sys1*sys2 parallel(sys1,sys2) bzw. sys1+sys2 feedback(sys1,sys2) Reihenschaltung Parallelschaltung Rckfhrschaltung u u

System-Kenngren o
zero(sys) pole(sys) damp(sys) dcgain(sys) margin(sys) Nullstellen eines Systems Pole eines Systems Dmpfungskoezienten und Eigenfrequenzen a statische Verstrkung a Amplituden- / Phasenreserve

Systemantwort
step(sys) impulse(sys) lsim(...) initial(...) ltiview Sprungantwort Impulsantwort Systemantwort auf einen beliebigen Eingang Systemantwort auf Anfangsbedingungen Interaktive Systemanalyse

Diagramme
bode(sys) margin(sys) nyquist(sys) pzmap(sys) rlocus(sys) Bode-Diagramm Bode-Diagramm mit Angabe der Stabilittsreserve a Ortskurve (Nyquist-Diagramm) Pol-Nullstellen-Diagramm Wurzelortskurve (RT2 )

Reglerentwurf im Zeitbereich
acker(A,b,p) Zustandsrckfhrung mit Polvorgabe fr SISO-Systeme u u u A Systemmatrix, b Eingangsvektor, p Pole zurckgeliefert wird der Vektor k u Beobachterentwurf mit Polvorgabe fr SISO-Systeme u ZR: A Systemmatrix, c Ausgangsvektor, p Pole zurckgeliefert wird der Vektor l u Polvorgabe fr MIMO-Systeme, auch Beobachter u LQ-Reglerentwurf (RT2 ) Entwurf eines Kalman-Bucy-Filters (KBF, RT2 ) Beobachter aus System und Matrix l konstruieren Regler aus Polvorgabe und Beobachter Regler aus LQ-Regler und KBF

acker(A,c,p)

place(A,B,p) lqr(A,B,Q,R) kalman(sys,Q,R,N) estim(sys,L) reg(sys,K,L) lqgreg(est,k)

Alternativen zu Matlab

Als kostenlose Alternative zu Matlab seien die zwei Programmpakete Octave Scilab http://www.octave.org/ http://www-rocq.inria.fr/scilab

erwhnt. Beide Programme stehen fr eine Reihe von Betriebssystemen (unter anderem a u Linux und Windows) zur Verfgung. u

Literatur
[1] Control Tutorials for Matlab. http://www.engin.umich.edu/group/ctm/. [2] Tutorial for Control System Toolbox. http://www.techteach.no/publications/control_toolbox_matlab/cst4.htm. [3] The MathWorks, Inc. Control System Toolbox Users Guide, 4th edition, 1999. [4] The MathWorks, Inc. Using Matlab, 4th edition, 1999.

Das könnte Ihnen auch gefallen