1. einfuhrung in matlab
TRANSCRIPT
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 1/80
1 Einfiihrung in MATLABlD
Ursp ru ng lic h w ar MATLASJODIin Benutzer interface fur S ta nd ard ro utin en d er n ume ris ch en Alge-
bra (Eispack, Linpack (=Lapack» basierend auf Vektor- und Matri zenoperationen, worauf berei ts
der Name MATrix LABoratory hinweist,
Kommerziell wurde das erste Programmpaket 1984 ausgeliefert. Heute ist die MATLAB!i!-'Pro-
dukrfamilie in erster Linie ei n Softwarepaker zur numerischen Berechnung und Visualisierung
u. a. in den Mathematik- unci Ingenieurwissenschaften. Es verfiigt iiber eine eigene Hochsprache
mit interaktiver Umgebung. Der Kern besteht aus einer Vielzahl von Built-In Functions u. a. der
linearen Algebra, der Datenanalysis sowie der Losung von Differenzialgleichungen.
Die Built-In Functions sind fiir Vektoroperationen beziiglich der Rechenzeit optimiert. Benut-zereigene Functions (Unterprogramme) konnen das Programmpaket erweitem. Diese Functions
sollten - wenn rnoglich - eben falls in vektorisierter Form abgefassr werden; dies dient auch einer
guten Ubersichtlichkeit.
Eine weitere Saule der MATLAB-Umgebung ist die grafische Entwicklungsumgebung Simu-
link®2 u. a. mit den Tools Statetlow", SimMechanics, SimPowerSystems, SimDriveline, Siml-ly-
draulics'", Real-Time Workshop@ usw .. Viele optionale Toolboxen, z.B. Control System, Signal
Processing, Symbolic Mathematics erganzen die Entwicklungsplattform.
Alternativerr' stellen u. a. die kommerziell vertriebenen Prcgrammpakete MATRIXx und 0-
Matrix sowie die frei erhaltlichen Programmpakete Octave, ein MATLAB-Clone, lind Scilab mit
einer benutzerfreundlichen Umgebung unci einer zu MATLAB ahnlichen Syntax dar,MATLABEJ7.3, Release 2006b - kurz: (R2006b) - 1St die z. Z. aktuelle Version. Die im Folgen-
den abgedruckten Fenster-Layouts, im Zusarnmenhang mit dem Betriebssystem Windows XP,
basieren auf den Versionen MATLAB® 7.217.3 (R2006a /b).
Desktop und Fenster: Das Desktop, Bild 1.1, das nach dem Start von MATLAB geoffnet
wird, ist das Kernelement der MATLAB-Umgebung. In der Grundeinstellung sind Cornma r.d,
Current Directory, Workspace und Command History Window zuganglich, ande-
re Layouts sind wahlbar. Der Help-Button in der Menuleiste offnet ein Shortcut-Menu u. a. mit
Hilfe-Pfaden zurn Desktop Using the Desktop sowie dem jeweiligen aktiven Fenster, mit dem
sich ebenfalls der Menu-Leistenaufbau und -Inhalt anpasst.
Die interaktive Arbeitsweise erfolgt, wie in Bild 1.1 angedeutet, im Command Window, vgl,
Help Button/Using the Command Window bei aktiven Command Window. FUr die Programrn-
erstellung steht ein Text-Editor zur Verfugung. DUTch An- und Ausdocken weiterer Fenster, z. B.
des Editor- und Grafik-Fenstcrs, mit Hilfe des Button: ! E I im jeweiligen Fenster-Kopf, kann mit
dem Desktop ab MATLAB 7 eine kompakte Arbeits-Umgebung mit eigens gestalteter Anord-
nung geschaffen werden. Das Fenster Workspace (Info: doc wo r k space / Link wor k s pace
1 MATLAB® ist ein cingctragcncs Warcnzcichcn del' Firma "The MathWorks, Inc."
www.mathwol.ks.colTI.ozw.wv.·w.mathworks.de
2 Simulink·l\·, Statsflow@, Real·Time Workshop"·" Sirnj-lydraulics?" sind cingorragcne Warcnzcichcn del' Firma "The
Ma thWo rk s, I nc ."
J O·Matrix: www.omatrix.corn, Octave: http://www.octave.org), Scilab: bttp.z/www.scilab.org/
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 2/80
2 1 E infiihrung in MATLABf<'
tenstemuhanqlqe
Menu-t.etete
" x
I \,laue Min
6286.9041
53.25
7.SU72 7.9071
1123456789 101 1
7,001.2 7.90n
» ~ormal! ~ompetei:-
» a= (41+1e+02:;';1. 5+4.....)! 4 ausde cken des
CO IlHn a n( 1 F e ns te rs .
?9072
53 .a 500> : : . - a=4' .(..g,"i'+l~+O~*t.~+-'l;A~), A=(1.~+"i'8.0S)A2:
53.2500
6.286ge+003
;')0 V1 1m 2A2+1og~pi) t
!!Iir.J. (0. 75"p1!2) +!!Iqrt (~XP(2Wp1/!I' )
V1 =
~ingl.;:: (V)
7.9072:
» x=L: 10;
» - - - Eingabezeile, Command Zelle
Bild 1.1: Desktop, MATLAB® 7.3
browser) zeigt den Workspace Browser mit dem Namen (Name), dem Wert (Value), und dernzugehorigen Minimal-, Maximalwert (Min, Max), der im aktuellen Workspace gespeicherten
GraBen. Mit einem Doppel-Klick der linken Maustaste auf das Symbol El3offnet sich der zu-
gehorige Array Editor, Daten werden angezeigt und konnen manipuliert werden, Wahlt man
im Workspace Browser, wie in Bild 1.1, den Vektor x aus, dann wird der Button 1 ,01·1ange-
zeigt, worUber eine grafische Auswertung in auszuwahlender Darstellung erfolgt. Das Cur ren t
Directory Fenster enthalt den InhaIt des aktuellen Pfads. Durch einen Doppel-Klick der lin-
ken Maustaste auf den Filenamen wird das M-File im Editor angezeigt. SchlieBlich werden im
Command History Fenster Eingabezeilen, wie in Bild 1.1 angedeutet, aufgezeichnet; sie sind
mit der linken Maustaste wieder aktivierbar. In jedem Falle offnet sich mit einern Mausklick der
rechten Taste das zur Mauszeigerposition gehorige Shortcut-Menu, womit weitere Ausflihrun-gen eingeleitet werden konnen, Einen Umgang mit dem Desktop, dem Command Window usw,
vermitteln die Video Tutorials u. a. unter: Button He Lp/Demos --+ MATLAB.
Online-Hilfe: Eine gut strukturierte und weitgehend selbsterklarende Online-Hilfe unterstutzt
das gesamte Angebot und sollte deshalb fur den Benutzer zu einem wichtigen und sehr hilfrei-
chen Werkzeug werden, Einen detailIierten Uberblick bezuglich aller Hilfe-Kommandos erhalt
man dUTChEingabe von
= > help helptools
Wir wollen, aufbauend auf den Schlusselwortern help, helpwin, doc, sic sollten stets parallel
gebraucht werden, einen Einstieg in die Online-Hilfe vermitteln. Beispiel-Aufruf: help (liefert
einen Uberblick irn Command Window) oder spezieller help\ toolbox! spezifikation, z. B. help
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 3/80
3
general fur allgemeine Befehle und help ops bzw, help/ fill" arithmetische Operationen +,-, *, / • ... einschlielslich Querverweise, Die gleiche Information erhalt man mit helpwin und
teilweise mit doc dargestellt irn Help Browser, vgl. helpwin ops, doc ops. Querverweise sind
bequem tiber Links zu erreichen. Daruber hinaus sind mit doc thema - z. B. doc funet ion. doc
eig- gezieltdie Referenzseiten der HTML-Dokumentation im Help Browser abrufbar, Da eigeine (Built-In) Function ist, liefert help eig, helpwin eig - im Gegensatz ZUI11 doc Aufruf-
den ersten Kommentar-Block in der Function. Enthalt die Dokumentation keine Referenzseite
zum ausgewahlten thema, dann wird auch mit doc der Kommentarblock angezeigt, Dies ist auf
die Kommentare eigener M-Files ubertragbar, so dass sich eine eigene Programm-Hilfe schaffen
lasst. Weitere Hinweise finden wir mit: doc help, doc h e Lpwin, doc dec.
Sohlusselworte zum gleichen Themenkreis werden stets am Ende des Hilfe-Dokuments, z.B.
nach help help, ausgegeben. U. a. Inokfur'fur die Begriffsuche in der ersten Kommentar-Zeile
bzw. Block aIler M-Files imMATLAB-Path, vgl. help leokfer.
Daruber hinaus wird uber das ?-Tcon in der Menu-Leiste des Desktops bzw. durch Eingabe
von helpbrowser die erste/eine Seite des H'I'Mlv-Documents im Help Browser geoffnet, wo-
mit eine erweiterte Online-Hilfe zur Verfiigung steht, Eine gezielte Suche u. a. tiber Search in
def Navigator Spalte des Browser's erleichtert das Auffinden spezieller Informationen. Insbeson-
dere die in den Dokumenten integrierten Programm- und Graflk-Beispiele sind sehr hilfreich fur
den eigenen Umgang mit MATLAB.Zu erwahnen sind auch die lehrreichen Demos sowie die be-
reits erwahnten Video Tutorials sowie weiterfuhrende Webinare und neuerdings die EiLearning
Kurse am Arbeitsplatz. Letztendlich stehen alle Handbucher im HTML- und PDF-Format zur
Verfiigung, siehe unter www_mathvwrks. com.
WiTwollen in diesem Kapitel grundlegende MATLAB-Elemente und -Befehle zusarnmenstel-
len und sie anhand kleiner Beispiele erlautern. Befehle enthalten Variable, die wir in allgemei-
nen Erlauterungen kursiv schreiben, optionale Parameter werden in ( j-Klammern gefasst und
MATLAB-Funktionen und -Variable weitgehend durch Fettdruck hervorgehoben. Standardwerte
(Default) werden, wie in den MATLAB-Dokumentationen, in geschw eifte K lammern { } gesetzt,
Dariiber hinaus unterscheiden wir in den abgedrnckten Programmsegmenten zwei Darstellungen:
1. Programmsegmente mitfeu hervorgehobenen MATLAB-Befehlen,
2. Prograrnmsegmente und Befehlsfolgen als Kopie des Command Windows bzw. der Editor-
Darstellung.
Die erste Form wird irnrner im Zusammenhang mit unmittelbar zuvor vorgestellten Befehlen,
die zweite Ponn insbesondere bei parallel verfugbaren Programm-Codes - um Schreibfehlerauszuschliefen - benutzt. Sie heben sich durch die Schrift-Art und -GroBe vom FlieBtext abo
Daruber hinaus werden Moglichkeiten zur grafischen Ausgabe von Daten sowie deren Ani-
mation aufgezeigt. 1m letzten Abschnitt dieses Kapitels wird dann auf die Computeralgebra mit
der Symbolic Math TooLbox eingegangen. Die Einftihruug ist weitgehend auf die Belange dieses
Buches mit den zugehorigen Projekten/Ubungen u. a. in Kapitel 8 zugeschnitten und somit nicht
vollstandig,
Umfas se nd er e Grundla gen findet man u . a . in L8J , [14] , [30], [31], [48J , [63] [67J. Insbeson-
dere wird in der Einfiihrung von [63] auf ein weites Spektrum der Moglichkeiten unter MATLAB
systematisch eingegangen und mit vielen Beispielen anschaulich dargestellt. Neben den Grafik-
Grundlagen sind viele Ideen unterschiedlichster Darstellungsrnoglichkeiten zusammengetragen.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 4/80
4 1 Einfiihrung in MATLABf<'
In [48J sind neben einer mehr mathematisch orientierten Einfuhrung in MATLABviele Built-
In Function, z. B, zur Eigenwertberechnung. Losung linearer Gleichungssysteme, gewohnliche
und partielle Differenzialgleichungen, FOURIER-Analysis usw., mit wichtigen rnathematischen
Hintergrunden zu finden. Beispiele, Ubungen und Programmcodes dienen der Erlauterung und
geben wertvolle Tipps auch zu Grafikelementen fur den fortgeschrittenen MATLAB-Anwender.[48J ist insbesondere dem mathematisch Interessierten sehr zu empfehlen. In [67J existieren Do-
kurnentationen von ca. 1.000 MATLAB-Befehlen, Die Funktionen der einzelnen Befehle werden
verstandlich erlautert und anhand zahlreicher Beispiele und Abbildungen verdeutlicht,
1.1 Einige Bemerkungen zur Arbeitsweise von l\1ATLAB
MATLABist eine Spraehe der vierten Generation (4GL)4 im Gegensatz zu den (Hoeh-) Sprachen
u. a. wie C, C++, Fortran, Basic der dritten Generation (3GL), Sprachen der vierten Generation
sind weniger prozedural als 3GLs und bestehen aus Ausdriicken, die der menschlichen Spracheentlehnt sind, 4GLs lassen sich daher einfacher benutzen als 3GLs, Die Ausfuhrungszeiten sind
aufgrund der Interpretation oft langsamer als von 3GL, da diese zur Beschleunigung der Ausflih-
nmg in Assembler- oder Maschinencode ubersetzt werden.
MATLABist eine 4GL, die spezifisch fur Ingenieure und Wissenschaftler entwickelt wurde.
Diese intuitive Sprache, cl:ieinteraktive Umgebung und die eingebauten mathematischen und gra-
fischen Funktionen rnachen MATLABzu einer Plattform insbesondere fur teehnische Berechnun-
gen. Ein wesentlicher Vorteil von MATLABist, dass die Variablen eines bestimmten Datentyps,
wie in 3GLs, nicht zu deklarieren sind. In MATLABkann jeder Variablen ein Wert von beliebigem
Typ zugewiesen werden; er kann auch jederzeit wieder geandert werden.
Vor MATLAB6.5 wurde die MATLAB-Sprache in zwei Schritten ausgefuhrt, Zuerst wurde
der Code in einen P-Code ubersetzt. Diesen Befehlssatz fuhrt danach der MATLAB-Interpreter
aus, Einige P-Code-Anweisungen sind hochsprachliche Anweisungen, so dass ihre Ausfiihrung
vie! Zeit in Anspruch nimmt. Hierzu gehoren Programmteile, die mit Skalaren und nut for-
Schleifen arbeiten. Nur bezuglich vektorisierter Ausfuhrungen wird der zugehorige P-Code sehr
schnell ausgefuhrt.
Ab MATLAB6.5 existiert ein Just-In- Time- Accelerator, mit dern Programmteile, die insbe-
sondere Schleifen und skalare Mathematik enthalten, automatisch beschleunigt werden, Der JIT-
Accelerator konvertiert die bisher langsam ausgefuhrten Anweisungen vom P-Code in native
Maschinenbefehle, wodurch sie sehr schnell ausgefuhrt werden. Der JIT-Accelerator Iasst auch
einen vorher nicht vektorisierten Code schneller ablaufen, womit die bisher angestrebte Vektori-
sierung scheinbar an Bedeutung verliert, Die Vektorisierung hat aber weiterhin den vorteil einer
pragnanten Formulierung der Algorithmen und liefert einen iibersichtlichen Programm-Code,
vgl. insbesondere Kapitel 3 und Abschn, 8.2.4.
Unter MATLAB6.5/6.5.1 werden nieht alle Datentypen, Array-Formen, Ausdrucke usw. von
lIT-Accelerator unterstutzt, siehe Abschnitt: Programming and Data Types I Performance Acce-
leration des HTML-Dokuments im Help Browser. Mit MATLAB7 sind diese Einschrankungen
aufgehoben, der Programmeode wird durchgehend beschleunigt.
4 K undenm agazin von T he M athWorks: MA TLAB S elect 2/02 , Hintcrgrundinformationcn ZUI Techno lo gi c, Noch
schnelleres MATLAR
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 5/80
1.2 Basis-Elemente
1.2 Basis-Elemente 5
Zunachst werden wir uns mit wesentlichen Elementen des MATLAB-Sprachumfangs vertraut ma-
chen. Diese ausgewahlten Elemente stellen wir stets am Anfang eines jeden Abschnittes tabella-
risch zusamrnen, es folgen diesbeziiglich kurze Erlauterungen und einfache Beispiele. Die Bei-spiele konnen interaktiv, d. h. tiber die Tastarur hinter dem Prompt (> » im Command Window
eingegeben, mit Return (J) abgeschlossen und sofort ausgefuhrt werden. Die unten aufgeliste-
ten Befehlsfolgen und Daten sind derartige Kopien aus dem Command Window; Kommentare
folgen nach dem -%-Zeichen.Daruber hinaus existiert in [59] das M-File Bas is_Elemente .m,
nut dem sich aus dem Editor zellenweise - vgl, Abschn, 1.3.1 - die folgenden Beispiele am
Rechner abarbeiten lassen.
1.2.1 Skalare Operatlonen und Datenverwaltung
Operationszelchen, Built·In Variable, Online-Hilfe
+ * !\"Variablenzuweisung
Rechenoperatoren
Abschluss einer Befehlskette mit (,) und ohne (;) Ausgabe
i, j
pi
inf
NaN
eps( (var) )
realmax ((classn. » ) , realmin
Imaginate Einheitp, Function:
Kreiszahl z=.14 ...
Unendlich 00 (infinity), z. B. 1.0e309
Not a Number, 'L.B. 010, inf-inf
MaG fur relative Genauigkeit (Floating-Point)kleinster pas. Abstand: lvarl + epst' var) > IvarlgroBtelkleinste pos. Gleitkommazahl
i.m, j.m
pi.m
inf.m
uan.m
eps.m
realmax.m
MATLABOnline-Hilfe; vgl, auch helpwinl docelp ( befehl }
Varlablenverwaltung
clear, clear x . Y Z
who
whossave verz\jile (variablen)
load verz\file (variablen)
diaryt' verz\file' )
diary on, diary off
format ausgabeformat
Loscht aile oder ausgewahlte ( x , Y z) Variablen des Workspace
Variablen-Liste des Workspaces
zusatzlich Dimension u. Datentyp (class)speichert Workspace in file. mat, optional auch ASCIl
ladt Daten ausflle.mal in den Workspace, optional ASCII
speichert nachfolgende (ASCII~) Text/Daten einer Sitzung
Protokolldatei: speichert Sitzung zwischen on und off
Formate: short, long, shorte, longe, rat, ... ,
loose, compact
Variablen miissen nicht deklariert werden. In MATLABsind aile Variablen Matrizen mit mug-
licherweise komplexen Elementen, Ein Yektor ist eine Matrix mit nur einer Zeile oder Spalte
und ein Skalar eine 1xl Matrix. Standardmabig wird jeder numerische Wert als doppelt genaue
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 6/80
6 1 E infiihrung in MATLABf<'
Flielskommazahl _ 8 Bytes _ gespeichert, Eine Zeichenkette (Character) wird ebenfalls als Vek-
tor behandelt, des sen Elemente entsprechend der ASCUs-Zeichensatz-Tabelle in Hochkomma
' .... ' gefasst und abgespeichert werden, vgl. Abschn, 1.2.4.2.
Online- Hilfe zu den folgenden Beispielen unter:
=} help op s , help format, help class, help d.ouble, help single _R14 _
Es wird zwischen GroB- und Kleinschreibung unterschieden, d. h. a und A sind unterschied-
liche Variablennamen (case sensitive). Das erste Zeichen einer Variablen und Konstanten muss
ein Buchstabe sein, folgen konnen Buchstaben, Zahlen, Unterstriche (_). Die Lange urnfasst ab
MATLAB6.5 63 Zeichen (Abfrage mit: namelengthmax).
Ohne Zuweisung wird das Ergebnis cines Ausdrucks der Standard-Variablen ans (steht fur
answer) zugewiesen, das Ausgabeforrnat ist mit format wahlbar, vgl. auch I ? references unter
dem Fi Le-Butron in der Des ktop-Menulei ste, Bild 1.1:
» format compact, format long e % Ausgabe ohne Leerzeilen, Format»(47+1e+02*1.5+4A2)/4 % Abschluss mit Return-Taste
ans
5.325000000000000e+001 % je nach Ausgabeformat, hier long e
D. h. aris ist stets die Variable der letzten Eingabe ohne direkte Zuweisung. Mit
» a=(47+1e+02*1.5+4A2)/4
a =
5.325000000000000e+001
wird das Ergebnis der Variablen a zugewiesen, Mehrere Zuweisungen konnen in eine Zeile ge-schrieben werden, wenn sie durch Komma (,) oder Semikolon (;) getrennt werden
» a=4\(47+1e+02*1.5+4A2), A=(1.2+78.09)A2
a =
5.325000000000000e+001
A
6.286904100000001e+003
» a=(47+1e+02*1.5+4A2J/4; A=(1.2+78.09J~2;
Die Ausgabe wird dUTCh ein Semikolon (;) unterdruckt,Mehrere Zeilen in Form eines kurzen Programmsegrnents werden zeilenweise eingegeben
und jeweils mit Shift + ,J (Return) abgeschlossen, Mit Return nach der letzten Eingabe erfolgt
die Abarbeitung.
Alle Variablen einer Sitzung werden im sog. Workspace gespeichert und sind jederzeit durch
Eingabe des Namens einer vorhandenen Variablen abrufbar, z, Bi liefert in del' bisherigen Sitzung
» a
a =
5.325000000000000e+001 % class double
5 American Standard Code for Information Interchange
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 7/80
1.2 Basis-Elemente 7
Bisherige Variablen sind Fliebkomrna-Zahlen vom Typ double- 8 Bytes -, sie konnen u. a. in eine
vom Typ single - 4 Bytes - konvertiert werden, dies spart Speicherplatz und bei umfangreichen
Rechnungen ab R14 Rechenzeit mit EinbuBen bezuglich der Genauigkeit:
» as slngle(a);
as+a;
% as class single, MATLAB 7
% a class double, bs single, Achtung!bs
Zusatzlich zu den Datentypen tclassnames double, single konnen vorzeichenbehaftete int8, intl6,
int32, int64 und vorzeichenlose (positive) uint8, ...,uintM Integergrollen, Festkornmazahlen gebil-
det werden. Komplexe Grolsen benotigen doppelten Speicherplatz, Real- und Imaginarteil wer-
den getrennt verwaltet.
::::} help datatypes, help class
Komplexe Variablen sind mit der komplexen Standard-Einheit ioder j zu bilden:
» format short e
» zl=0.5+7i
zl
5.0000e-001 +7.0000e+000i
% Ausgabeformat ge~ndert
% 7i komplexe Einheit, berechnet in i.m
% class double (complex)
» z2=2-4*i;
» zl*z2
ans =
2.9000e+001 +1.2000e+001i
% Achtung! falls i eigene Variable
Die Namen der Built-In Variablen pi, i.], int, eps, ... sollten nicht als eigene Variablen eingefuhrt
werden. 1st dies nicht zu umgehen, so mussen diese vor Gebrauch mit dem Befehl clear variable
geloscht werden. Dies gilt z: B. fur: 7 *i; 7i ist in jedern Fall die imaginate Zahl, Ohne Variablen-
Angabe wird mit clear der gesamte Workspace geloscht,
Mit who kann die Liste der aktuellen Variablen im Workspace angezeigt werden, mit whos
erhalt man zusatzlich noch die Dimension (z. B. 1x I fur eine Variable,S x l f i . i . r einen Spalten-
vektor mit 5 Elementen) und das Datenformat sowie den Speicherbedarf Beispiel:
»clear, a=5; b=-single(74); s='Beispiel: who, whos, save, load'; a+b;
» who
Your variables are:
a
»
» save D:\BMATL\Ueb_l
ans b s
% Verzeichnis D:\BMATL muss existieren
% Speichert ~·lorkspace-Daten in ueb_l.mat
» clear % Los cht; den I<ilorkspace» load D:\BMATL\Ueb 1 a ans s % ladt ausgew. Daten, ohne Auswahl aIle
» whos
Name Size Bytes Class Attributes
a Ix1 8 double
ans Ixl 4 single
s Ix31 62 char
Ahnlich ist diese Information im Workspace Browser dargestellt und im Array Editor (133)
auch rnanipulierbar, Speichern bzw, Laden der Daten ist auch uber den Menilpunkt Fi1e/ Save
IiITorkspace As .. bzw. File/Import Data .. im Command Window Bild 1.1 oder bei
aktivem Workspace Fenster mit dem Save Button (Iii) nach Bildl.2 durchzufuhren.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 8/80
8 1 Einfiihrung in MATLABf< :
5
-69 -1 39
'B eisp iel: w ho , w ho .. _
Bild 1_2: Workspace Browser, MATLABj_~7.3
1.2.2 Mathematische Funktionen
MATLAB verfugt tiber eine Vie lz ah l ma th ema tis cher Funkrionen, die u. a. m it
= help elfun, help datafun
angezeigt worden konncn. Einigc Funktionen fur cine elementweise Ausfuhrung der Variablen xsind im Folgenden zusamrnengestellt. Das Argument (x) kann also ein Skalar (J xl-Matrix), ein
Vektor oder eme M atrix sein.
Mathematische Funktionen, elementweise Ausftihrung
sqrt(x)
exp (x)
log (z ), loglO(x)
Quadratwurzel
Exponentialfunkti on
Naturlicher, Zehner-Logarithrnus
sin (x ), cos (x)
tan (x)
atan (x), atan2 (imaK, real)
Sinus, Cosinus, x in Radian
Tangens, x in Radian
Arcus- Tangens ±90°, ± 180Q
abs(x)
sign (x )
real (x ), imag (x)
cunj (x)
angle (x)
Betrag
Signum (Vorzeichen)
Realteil, Imaginarteil
Konjugiert kornplexe Zahl
Phase e in er k omp le xe n Zahl (mit atan2 gebildet)
... Beispiele zum Aufruf rnathernatischer Funktionen:
l> Yl=22+ In (n ) sin (O.75~) + ~
» yl = 2A2+1og(pil*sin(0,75*pi/2)+sgrt(exp(2*pi/3))
yl =
7,9072e+000
» y2=(sin(pi/4))A2+ logI0(cos(O.7A3))
y2 =
4.7394e-00I
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 9/80
1.2 Basis-Elemente 9
'If
C > Y 3 ='4
» y3=exp(i*pi/4)y3 =
7.0711e-001 +7.0711e-001i
» y4=y3-cos(pi/4)-i*sin(pi/4)
y4 =
o
II- Beispiele zur Arcus-Tangens-Funktion
» y5=atan(O.7) % Hauptwert von atan(x)
yS =
6.1073e-001 % Radian
»y6=atan2(0.7,pl) % y=0.7, X=pl; elngeschlossener Winkel
% 4 Quadranten -pi<= atan2(y,x) <= pi
y6
2.1924e-001
» y7=angle(pi+0.7i) % wie y6i vgl. auch phase(pi+O.7i) aus
y7 = % der System Identification Toolbox2.1924e-001
II- Beispiel zum konjugiert kornplexen Wert
» y8=conj (O.7+0.1jl % konjugiert komp1exer Wert
1'8 =
7.0000e-001 -1.0000e-001i
»y 9= (0.7+ 0.1j),; % konjugiert komplexer Wert, wie conj
1.2.3 VektorenUDd
MatrlzenDie Elemente von Vektoren und Matrizen werden in eckige Klammern gesetzt, Die Zeilen wer-
den durch Semikolon (;) oder/und Zeilenumbruch o J (Return) abgeschlossen. Die Elemente kon-
nen durch Leerzeichen oder Komrna (,) von einander getrennt werden. Flir spezielle Matrizen,
z : B. der Einheitsmatrix, existieren BuiLt-In Functions,
;;;;;} help rnatfun
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 10/80
1 0 1 E infiihrung in MATLABf<'
Vektor- und Matrlx-Formulierung
[xl x2 ... ; yl, y2, . .. 1start: schrittweite : ziel
linspace (start, ziel, anzahl)logspace (start, riel, anrahl )
(vekimat) .', (vekimat)'
Vektor- und Matrix-Eingabe
Zahlenfolge; Doppelpunkt-Operator (:), Vektor
lineare Zahlenfolge, Vektor-Ausgabelogarithmische Zahlenfolge, Vektor-Ausgabe
Transposition: komplexe, reelle Vektoren u.Matrizen
eye i zei len; spa/ten (,c ic um . ))
ones (leilen, spalten (,classn. )
zeros (zeiten, spalten (,...classn. »diag(vektor (, k 1)
diag(matrix (. k ))
rand(zeiien, spalten)
Einheitsm, zeilen x spalten, classn. z. B . ' single'
Matrix mit Eins-Elernenten, z.B.ones (3,4, , int 8' )
Matrix mit Null-Elementen
Matrix mit k-ter Diagonalen
Vektor der k-ten Diagonalen
k=O oder leer --,>. Haupt-, kiO ---;Nebendiagonale
Matrix mit Zufalls-Elernenten
a( index)
A( zeile, spalte)
A( end)
Vektor-Element index von a
Matrix-Element von A, aUile,SI)alJe
Letztes Vektor-, Matrix-Element von A
sparse (A) Sparse-Matrix, speichert keine Null-Elemente
.. Beispiele zur Vektorfonnulierung:
» 'IZ = [ 1 2 3]
vz
1 2 J
» vs Ii 2; 3 1vs
% Zei1envektor
% Spaitenvektor, statt (;) auch Return
1
2
3
» vzi = [1+5i, 2+i, 3-7iJ % Zeilenvektor. komplexe Elemente
vzi =
1.0000e+000 +5.0000e+OOOi 2.0000e+000 +1.0000e+000i
Der Spaltenvekt.or lasst sich auch durch Transponieren des reellen Zeilenvektors erzeugen
» vs=[1,2,3]'
vs
1
2
3
» V5 = v z :' j
% transponieren eines Zeilenvektors
% transponieren von vz und Zuweisung
Bei komplexen Vektoren liefert ( .. ) , den zugehorigen konjugiert komplexen Vektor. Der Vek-
tor des transponierten komplexen Vektors gewinnt man mit:
» vsi = vzi.·
vsi =
% transponieren eines komplexen Vekt.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 11/80
1.2 Basis-Elemente 11
1.00002+000 +5.0000e+0001
2.0000e+000 +1.0000e+0001
3.00002+000 -7.0000e+0001
Elementfolgen, z.B. 0, 2,4, 6, 8, bei denen die Folgeelemente mit fester Schrittweite gebildetwerden, sind mit dem Doppelpunkt-Operator in der Form start ..schrittwcite : tiel zu erzeugen.
Der Aufruf start : zie] setzt die Schrittweite +1 an.
.... Beispiele fur Elementfolgen:
» v=0:2:8
v =
» v =
v =
» v = 0:8
v =
o 2
8:-2
% E1ementfolge, Schrittweite 2
4
O J
6 8
% ( 1 i..iberfli.issig,chrithJ. -2
8
o
6 2 o
% Schritbleite 1
1 2 3 4 5 6 7 8
... Beispiele zur Matrizen-Formulierung:
» A=[1 2 3; 3 4 5' 6 7 8 J » B=[ [1 2 3J' , [2 4 7J' ]
A = B =
1 2 3 1 2
3 4 5 2 4
6 7 8 3 7
» C=[1:2:5 7: 9] » Al [14 9' 6 4 5J
C = Al
1 3 5 1 4 9
7 8 9 6 4 5
.. Spezielle Matrizen worden tiber Built-In Functions erzeugt: eye, ones, zeros, diag, spdiags ...
» E=eye(4)
E =
» 1=one5(3)
I =
1
ooo
1
1
1
% 4,4 Einheitamatr1x, Datentyp: double
o
1oo
o
o1
o
o
oo1
% 3,3 Einsmatrix, Datentyp: double
1
1
1
1
1
1
» Z=zerQs(2,3,'sing1e')
Z =
o
o
% 2,3 Nullmatrix, Datentyp: single
o
o
o
o
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 12/80
1 2 1 E infiihrung in MATLABf< '
Bei einem bzw. zwei gleichen Bingangsargumenten, z. B. zeros(2) bzw. zeros(2,2), wird eine
quadratische, sonst, z. B. eye(3,2), eine Rechteckmatrix erzeugt,
l> Eine Matrix kann auch rnit Submatrizen aufgebaut werden, Gegeben seien die quadratischen
MatrizenA, B und gesucht ist die Hyperrnatrix Q :
»A= [2 4; 7 5]; 8=A ( ;, [2 11);
» Q= [zeros (2) eye (2); -Pi B J
Q =
% Hatr. A, B; [2 II Spaltentausch
% Matrix Q
0 0
0 0
-2 -4
-7 -5
1 0
o 1
4 2
5 7
Die Submatrizen konnen auch Matrizenoperationen enthalten.
Die interne Function diag schreibt die Haupt- Diagonalelemente einer Matrix in einen Vektor
»ad=d iaq (Aj
ad
% Olagonalelemente von A
1
4
8
und bildet aus einem Vektor eine Diagonal-Matrix
»Ad=diag (ad)
"'_d
% Oiagonalmatrix
1
oo
o4
o
oo
8
Optional lassen sich Neben-Diagonalelemente mit diag (d , j) (obere Neben-Diagonale jpositiv
untere j negativ) ansprechen. Im folgenden Beispiel ist eine Matrix aus gegebenen Haupt- und
Neben-Diagonalelementen zu bilden:
» d=[2 4 68J; % Haupt-Oiagonalelemente
» d1~-3*ones(1,3); % 1 obere Neben-Diagonale, j~l
» d2=-ones(1,2); % 2. untere Neben-Diagona1e, j=-2
» Dd= diag(d) + diag(dl,l) + diag(d2,-2) % Matrix-Aufbau
Dct
2 -3 0 0
0 4 -3 0
-1 0 6 -3
0 -1 0 8
Auch Nebendiagonal-Blernente lassen sich in einen Vektor schreiben:
» d2=diag(Dd,-2) % 2. untere Neben-Oiagonale
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 13/80
1.2 Basis-Elemente 13
Altemativ kann von einer 4,4-Sparse-Matrix nach S. 14 ausgegangen werden, wobei die Vek-
toren von Haupt- nod Nebendiagonale gleich lang sein rnussen - hier mit full voll besetzte Matrix
gebildet-
»Ods=full(spdiags([[d2'iOi0], d', [Oidl']], [-2,0,1],4,4));
Vektoren- und Matrixelemente werden durch ihre Indizes (1,2, ... ; nieht: 0) in runden Klam-
mem nach dem Namen gekennzeichnet, Gauze Zeilen und Spalten sowie Ausschnitte davon las-
sen sich mit dern Doppelpunkt-Operator ansprechen, Elemente konnen uberschrieben werden,
= help Iists
.. Beispiele fur Elementansprechung:
:>:> vzi (3)
ans =
3.0000e+000 -7.0000e+000i
:» Od(3,4)
ans =
% 3. Vektore1ement von vzi
% Matrixelement 3. Zeile !4. Spalte
-3
» Od(:,2)
ans
% aIle Elemente der 2. Spalte von Dct
-3
4
o-1
» Dd(4,2:3) % 4. Zeile, Spalten-Element 2 bis 3
ans
-1 0
c- Matrixelemente konnen mit ihren Indizes (zeile, ~'Palte) oder mit nur einem Index ange-
sprochen werden. Dieser ergibt sich aus einer vektoriellen Darstellung der Matrix, die aus einer
Hintereinauderschaltuug aller Spaltenvektoren folgt (Speichermodell), Z. B. gilt flir die obige Dd-
Matrix
Dd(3,4) = = Dd(l5) Umwandlung mit: ind2sub (i,j)---7k,Sub2ind (k)---7(i,j)
c- end-Operator: Das letzte Element einer Matrix bzw, eines Vektors kann mit dem end-Operator
angesprochen werden:
Dd(end,end) oder Dd(end) aber auch Dd(end-2).
Fiir das letzte Element einer Zeile sowie aller Zeilen oder Spalten folgt entsprechend
Dd(3,end) sowie Dd(:,end) oder Dd(end,:)
.. Beispiele fur Elementzuweisung:
» vzi(3)=26 7 98
vzi =
1.OOOOe+OOO +S.OOOOe+OOOi 2.0000e+OOO +l.OOOOe+OOOi 2.S480e+003
% 3. Element wird geandert
» Od(4,2:3)=[7 O J
Oct
2 -3 0 0
a 4 -3 0
-} a 6 -3
0 7 0 8
% 4. Zeile, Element 2 bis 3 neu zuweisen
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 14/80
1 4 1 E infiihrung in MATLABf< '
l> Aufgabe: Erweitere Dd, so dass der Vektor u= [5 6 7 8 1 in die letzte Zeile bzw. letzteSpalte geschrieben wird, losche anschliefiend die l-te und 3-te Zeile bzw. Spalte.
» u=[5 6 7 8J;
»D=[Dd;u); E=[Dd u'J; D([13],:)=[]; E(:,[13J)=[J;
% Vektor u
% Losung
.... Beispiele fur Sparse-Matrix: Gegeben sei die Matrix
A=[
6 i 6 ~ j3 0 0
() 0 4 0
gesueht ist. die Darsteilung der Sparse-Matrix S, siehe help sparse:
»A=[O 0 0 5; 0 2 0 0; 1 3 0 0;0 0 4 OJ; % Ausgangsmatrix
» S=sparse(A) % Sparse-Matrix von A
s % class double »spy (S)
°C•
2 •
3"
4 •
° 0 5
% Elemente # - 0
(3,1)
(2,2)
(3,2)
(4,3)
(1,4)
1
2
3
4
5liZ = :5
Es werden also nur die Indizes (z,B. (3, 2) ) und die Werte (z. B. 3) der von Null verschiedenen
Elemente gespeichert, Spezielle mathematische Funktionen (siehe help spar fun) existieren,
einige bearbeiten vollbesetzte und Sparse-Matrizen, vgl eigs. Mit spy(s)
wird die Strukturvon Sgrafisch dargestellt. Anwendung in QuerS chw_l, 2 .mund DrehS chw .maus [59].
1.2.3.1 Vektor-, Matrizen-Operatlonen und Built-In Functions
Die mathematischen Operationen + - * / sowie die Rangfolgeregeln sind auch auf Vektor- und
Matrizenoperationen bei passender Dimension anwendbar, Zusatzlich stellt MATLAB Rechenope-
rationen fur die elementweise Verknupfung sowohl fur reelle als auch komplexe Vektoren und
Matrizen zur Verftigung. Sie werden aus den Grundoperatoren mit vorangestelltem Punkt, z : B.
.* flir elementweise Multiplikation, gebildet.
:::} help op s, help arith, helpmatfun, help slashoder stan slash: mrdi vide (right matrix divide), mldivide, rdivide, [divide
Erlauterungen zur Tabelle Vektor- und Matrix-Formulierung: Ab (R14) konnen die Eingangs-
variablen der Built-In-Functions, z. B. inv, det, linsolve, eig vorn Typ single oder double sein.
Das Ergebnis ist dann vom entsprechenden Typ, vgl. Beispiel zu linsolve.
Fiir das Eingangsargument vek/mat kann sowohl ein Vektor als auch eine Matrix stehen. Ist
in sum ... find das Argument eine Mattix, dann bezieht sich das Ergebnis in del' Regel auf die zu-
gehorigen Spaltenvektoren, so dass ein Zeilenvektor ausgegeben wird. Daruber hinaus wird ein
Index-Vektor del' Matrix-Indizes zu den Maximal/Minimal-Elementen ausgegeben, siehe Bei-
spiele. Weitere Eingangsargumente sowie Ausgaben sind moglich; siehe Online-Hilfe.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 15/80
1.2 Basis-Elemente 15
Vektor- und Matrix-Operanonen, Built-In Functions
.* .\ .j
\ j
transpose ( vek/mat) oder vek/mat .'ctranspose ( vek/mat ) oder vek/mat '
dot (vek, vek), cross (vek, vek)
Inv ( matrix )
det (matrix)
linsolve (matrix, vek/mat \, option j )
eig (matrix), eigs( matrix)
rank (matrix (, toleranz ) )
Elementweise Rechenoperationen
Links- und Rechts- Division
Transposition: Vektor, MatrixTransposi tion, kon jug ie rt -komplex
Skalar-, Kreuz-Produkt
Inverse einer quadratischen Matrix
Dete rm in an te e in er q ua dra tisc he n Ma trix
Iineares Gleichungs-Syst. LU-Zerlegung (ab R14)
Eigenwerte, Eigenvektoren einer quadrat. Matrix
Rangeiner Matrix, siehe auch rref
( [m, »l=) size( vek/mat (, i) )
length/ vek/mat )
Mat ri x- , Vek to rd imension , i=1 Zeilen, i=2 Spalten
Grofster Wert aus Spalten-, Zeilenindex
iclentisch mit max(size( vek/mat y
sum ( vek/mat )
prod ( vek/mat )
[vmin, index] =min(veklmat)
[vmax, index] =max( vek/mat ;
max ( matrix(:) )
sort ( vek/mat )
find ( vek/mat (,'last' I :first') )
Summe d er V e kto re lem en te b zw . S pa lte nv ek to re lem .
Proclukt der Vektorelemente bzw. Spaltenvektorelern.
Kleins te s Vek to re lemenr bzw . Spal tenvek to re lem .
Grobtes Vektorelement bzw. Spaltenvektorelem.
GrtiBtes Matrixelement
Elernente in aufsteigender Folge
Von Null verschiedene Elemente, oder find (A==2)
... Mit den folgenden Matrizen lind Vektoren
»A~[1 2 3; 4 5 6; 7 8 9];
» b=[ 2 4 6 8 10]';
sollen einige Operationen erlautert werden:
» v*b
ans =
160
B~ [1 2 3; 2 4 5; 3 i 8] i
v=0:2:8;
% ode~: dot(v,b) % Skalar-P~odukt
» Dy_pr=v'*b'
Dy_pr
a 04 8
8 16
12 24
16 32
» size (Dy__pr)
ans
0 0 012 16 20
24 32 40
36 48 60
48 64 80
5 5
»c=v+b'; c=v-b';
»C=A+Bi C=A-Bi
» C=A*Bi
% Dyadisches Produkt
% Matrix-Dimension
% 5,5-Matrix
% Vettor-Addition, -Subtraktion
% Matrix-Addition, -Subtraktion
% Matrix-Multiplikation
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 16/80
16 1 E in fiih ru ng in MA T LA Bf< '
» c=A*v(1:3)'
c =
16
34
52
.... Beispiele elementweiser Opera t ionen:
c =
o 8 24 48
% Matrix-Vektor-Mu1tip1.
% VektQrelement-Multipl.
%v(i) *b(i)
80
» c=v./b' % Vektorelement-Rechts-Div.
c = % v t.i ) / b(i)
o 5.0000e-001 6.6667e-001 7.5000e-001 8.0000e-001
» C=V. \b'
Warning: Divide by zero.
c =
% Vektorelement-Links-Div.
lof 2.0000e+000 1.5000e+000 1.3333e+000 1.2500e+000
% b(i) / v t i)
» sin(v) % elementweise Sinus-Bi1dung
ans % 3in(v(i))
o 9.0930e-001 -7.5680e-OOl -2.7942e-001 9.8936e-001
» C=A.*B
C1 4 9
8 20 30
21 56 72
» C=A./B
C
1.0000e+000
2.0000e+000
2.3333e+000
1.0000e+000
1.2500e+000
1.142ge+000
» C=A.\B
c1.0000e+000
5.0000e-001
4.2857e-001
1.0000e+000
8.0000e-001
8.7500e-001
» C=A.AB
C =
1
16
343
625
2097152
» sqrt(A)
% Matrixelement-Multipl.
% A(i,j)*B(i,j)
% Matrixelement-Rechts-Div.
% Jdi,j) / B(i,j)
1.0000e+000
1.2000e+000
1.1250e+000
% Matrixelement-Links-Div.
% B(i,j) / A(i,j)
1.0000e+000
8 ..3333e-001
8 ..88ge-001
% Matrlxelement-Potenz
% A(i,j)AB(i,jl
4 27
7776
43046721
% elementw. Quadratwurzel
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 17/80
1.2 Basis-Elemente 17
ans =
1.0000e+000
2.0000e+000
2.6458e+000
1.4142e+000
2.2361e+000
2.8284e+000
1.7321e+000
2.4495e+000
3.0000e+000
.. Beispiele spezieller Matrizenoperationen und Matrix-Funktionen:
» C=A\B % Matrix-Links-Div.; AA(-l)*B
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. ReONO = 1.541976e-018.
C = % Achtung! A singul~r
-3.33332-001 -4.5036e+015 -4.5036e+015
6.6667e-001 9.0072e+015 9.0072e+015
o -4.5036e+015 -4.5036e+015
» c=A/B
C =
1.00002+000
-5.00002+000
-1.10002+001
o o
9.00002+000 -3.00002+000
1.8000e+001 -6.0000e+000
» detA=det(A), detB-detIB) % Determinante von A und B
detA =
o
detB =
1
% Matrix A ist singular
% Matrix B ist regular
% Inverse von 8; BA (-1)inv(B)ans =
-3.0000e+000 5.0000e+000 -2.00002+000
-1.0000e+000 -1.00002+000 1.0000e+000
2.00002+000 -1.00002+000 0
» B*in'1(B)
ans =
1.00002+000 0
o 1.00002+000
% Kontr.: B * BA(-l) = E oder BIB = E
% Elemente: « 0; numerischer Fehler
4.44092-016
8.8818e-016
o -1.7764e-015 1.0000e+000
» eig (Al % Eigenwerte der JvlatrixA
ans =
1.61172+001
-1.1168e+000
-1.0307e-015 % Hinweis auf Singularitat, O-Eigen-W.
» [V,DJ=eig (B)
V =
-2.8096e-001
-5.0038e-001
% Eigenwerte D und Eigenvektoren V
% Eigenvektoren
3.12762-001 3.1276e-001
2.4854e-002 -3.6883e-00li 2.4854e-002 +3.6883e-001i
-8.1895e-001 -3.2897e-001 +3.074ge-00li -3.2897e-001 -3.074ge-001i
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 18/80
1 8 1 E infiihrung in MATLABf< '
D = % Diagonalelemente sind die Eigenwerte
1.3306e+00l 0
o -1.5313e-001 +2.273ge-00li
o o
oo
-1.5313e-001 -2.273ge-OOli
» rank(A)
2
% Rang der Matrix A
% Rangabfall, lineare Zei1en-, Spalten-
% lIDhangigkeit, vgl. Singularitat von A
ans
I> Losen linearer algebraischer Gleichungssysterne:
Der spezifische Algorithrnus, der zum Losen eines linearen Gleichungssysterns mit dern Back-
slash-Operator, x=A \b, verwendet wird, hangt von der Struktur der n x »-Koeffizientenmarrix
J l . . ab, vgl. docmIdi vide. Ist A vollbesetzi. dann wird der Gxuss-Algorithmus verwendet, Fur
eine In x n-Matrix mit m f = - n, wird eine Ausgleichslosung des uber- bzw. unterbestimmten Glei-
chungssystem berechnet.
» % Beispiel 1: Losen des alg. Gl.-Systems B*x=v(1:3)
» x-B\v(1:3)/; % GAUSS-Algorithmus (Links-Division)
» x=linsolve(single(B) ,v(1:3) ') % LU/QR-Zerlegung mit Pivotsuche
x =
2.0000e+000
2.0000e+000
-2.0000e+000
» % Beispiel 2: Losen des alg. Gl.-Systems B*xl=v
» % B reell symmetrisch (B=B') und positiv definit (B>O)
% Ergebnis: class double / single
% hier wegen "single (B)" single
// X = magic(5); B = X*X';
» opts.SYM = true; opts.POSDEe = true;
» xl = linsolve(B,v',opts);
% symm. Koeffizientenmatrix
% Optionen gesetzt
% Optionen ausgenutzt
• Hinweis ZUT Rangtolgeregel (Potenzieren 'lor Multiplikation oder Division, dann Addition
odcr Subtraktion): Gcgeben sei die algebraische Gleichung
Kx = O.Sh,
mit der quadratischen Matrix K und dem Vektor b passender Dimension; gesucht sei z. Ergebnis:
1.5000e+000
1.0000e+000
richtigit Rangfolgeregel-Fehler
» x=O. 5* (K\b) odel':» x=Kvb eD .5
x = x =
3.7500e-001
2.5000e-001
~ Beispiele zu den Befehlen: sum, max, mill:
» sum(A) % oder sum(A/l), Spaltensummen
ans =
12 15 18
» sum(A/2) % Zeilensummen
ans =
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 19/80
1.2 Basis-Elemente 19
6
15
24
» [vmax,Ij=max(A) % vmax maximale Spaltenelemente
% I zugeh6riger Index von Amax7 8 9
3 3 3
% I Index von A der Maximalelemente
% aIle Maximal-Elemente in 3, Zeile
I =
Entsprechendes gilt fur den Befehl min.
Die Summe aller Matrix-Elernente ergibt sich durch doppelte Summenbildung oder mit dem
Speicherm odell von S. 1 3 zu:
sum (sum (A) ) oder sum (A ( : ) ) ,
1.2.4 SpezielleDatenstrukturen
Unter MATLABs in d weite re Da te nstru ktu re n v orh an de n, d ie k urz e rla ute rt w erd en s olle n.
=} help class, help strfun, help struct, help cell, help char
1.2.4.1 Mehrdlmensionale Matrizen
Mehrd im en sio na le M a trize n-E lem en te w erd en m it m eh r als zw ei In dizes an ge sp ro ch en , M it d en
Built-In Functions zeros, ones, rand, randn konnen derartige Matrizen gebildet werden, z. B.
» O=ooes (2,3,4,3); rnitdemElement »0 (2, 2, 3(1);
An sc ha ulic he r u nd v on g ro ls ere r Bedeutung s ind 3D-An 'ays:
~ Beispiel fur 3D-Array: St:ruktur: K t zeil e , spalte, seite)
Zuweisung:
»K(l,l,l)=l; »K(2,2,2)=2; »K(3,3,3)=3;
Erst letzte Zuweisung erzeugt 3 x 3 x 3-Array.
Aufruf:
» K (;, ;(3) ans 0 0 0
0 0 0
0 0 3
0 02 0
0 0
Seite 3
» K(: , :(2) ans 00
0
:» K(: , :(1) ans 1 0 0
0 0 0
0 0 0
Seite 2
Seite 1
1.2.4.2 Zeichenketten (Character, String)
• Zeichenketten vom Typ cha r werden durch Hochkomma begrenzt, Beispiel:
»' Zeichenketten werden durch Hochkomma begrenzt '
• Mehrzeiliger Text gleicher Lange wird mit einem normalen Array» t: Textzeile 1';'Textzeile 2' J
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 20/80
20 1 Einfiihrung in MATLABf<'
• mehrzeiligerText unterschiedlicher Lange mit einem Cell Array, siehe Abschn. 1.2.4.4, und
ansch liebender Konvert ie rung (cell _, char) formuliert
»char({'Textzeile l';'Textzeile 2 ist L~i.nger'})
• Jedes Zeichen eines Character Arrays benotigt 2 Byte Speicherplatz,
1.2.4.3 Strukturen, (Structure Array)
• In Strukturen lassen sich Variablen unterschiedlichen Datentyps verwalten. Dies bietet sich
fiir die Datenverwaltung einzelner System-Komponenten an, siehe Abschn, 8.6.2
• Der Name einer Structure besteht aus zwei Teilen, dem Structure-Namen VOl" dem Punkt
und dem Feldnarnen innerhalb der Structure nach dernPunkt (Separator).
• Structure-Elemente werden iiber Namen und Indizes angesprochen,
Syntax:
strukt ur=struct (' name!', wert I,'name2', wen2, ... )
struktur.namel
oder Erzeugung uber direkte Zuweisung
struktur. namel +wertl ;
struktur. name2 = wert2;
... Beispiel, Structure erstellen, erweitem und Ausgabe:
% Erzeugen einer Structure
% Zugriff auf Feld-Elemente
» A= [1 2 6; 4 5 9; 7 8 3J; % gegebene 3,3-I'latrix
» user struktur = struct ('daten' ,A,' dimension' , [3 3))
user struktur =
daten: [3x3 doub Le ]
d i.me ris i.on : [3 3 J
» user struktur.dimension
ans
% Ausgabe Feld 'dimension'
3 3
» user_struktur(2) .daten=inv(A)
user_struktur =
lx2 struct array with fields:
daten
dimension
% Erweiterung urn inv{A}
» user struktur.daten
ans
1
4
7
2
5
8
6
9
3
% Ausgabe
% Matrix A, auch mit
% user_struktur(l) .daten
ans % Inverse von A, auch mit
-2.1111e+OOO 1.5556e+OOO -4. 4444e-001 % user_struktur (2).d.aten
1.888ge+OOO -1.4444e+OOO 5.5556e-001
-I.Illle-OOI 2.2222e-OOI -1.IIIIe-OOI
» % Elemente ansprechen, z.B.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 21/80
1.2 Basis-Elemente 21
» user_struktur(l) .daten(2,3)
ans
% Matrix A, Element A(2,3)
9
1.2.4.4 Zellen (Cell Array)
• Daten unterschiedlichen Typs, z. B. Zeichenketten (class char), Matrizen (class double,
single) unterschiedlicher Dimension, Structure Arrays konnen als Zellen in einer Varia-
bien verwaltet werden.
• Cell-Elemente werden tiber ihre Indizes angesprochen.
• Zur Kennzeichnung von Cell-Elernenten dienen geschweifte Klammem,
~ Beispiel, Cell Array erstellen (zwei Moglichkeiten) und ausgeben:
» A(l,l)
» A (1,2)
» A(2,1)
» A(2,2)
oder
» A{l,l)
Aufruf:
( [1 2 3; 4 5 6; 7 8 9]) ; % Zuweisung de r Zelle 1,1
( I Testmatrix,) ; % Zuwei5ung de r Zelle 1,2
{3 + 7i} ; % Zuwei5ung der Zelle 2,1
( 0 : pi/IOO : 2"pi) ; % Zuweisung der Zelle 2,2
[1 2 3; 4 5 b; 7 8 9]; ... % auf Klammertyp achten
[3x3 double]
[3.0000e+000 +7.0000e+OOOi]
, Testmatrix '
[lx201 double]
» All,l)
ans =
[3x3 double]
» A
A
» A{1,ll %
ans %
1 2 3
4 5 6
7 8 9
1. Zelle, [JxJ double]
Element-Aufruf: A{l,l} (2,3) -> 6
[> Ein leeres Cell Array und anschliefsende Besetzung mit einem Structure Array folgt mit:
» Z=ce11(2,4); Z(I,3)=user_strutur
Z = % vgl. Programms.: Basis Elemente.m
[J [] [lx2 struct]
[] [] []
Mit cellplnt kann Z grafisch angezeigt werden: » cellplot (Z,,legend' )
1.2.5 Vergleichsoperatoren und IogischeOperatoren
Verglelchsoperatoren Logische Operatoren
<,<=>,>=
exist (' x')
gleich, ungleich
kleiner, kleiner gleich
grolser, grolser gleich
Existenz von x prtifen
&,&&
I , I I
Negation
Und; Matrix-, Skalar- Vergl.
Oder: Matrix-, Skalar- Vergl.
Exklusiv ODERo r
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 22/80
22 1 E infiihrung in MATLABf< '
=? help ops, help relop, help logical, help bit and
Die Syrnbole s , I und ~. sind die logischen Operatoren AND, OR und NOT. Sie konnen auf
Zahlen, arithmetische Ausdriicke sowie Matrizen angewandt werden. Matrizen werden element-
weisc verknupft, Logisch [alsch wird durch 0, logisch wahr durch einen Wert ungleich Null
gekennzeichnet,
Syntax: a & b oder and(a,b)
alb oder orfa.b)
"-'a oder not(a)
Der NOT-Operator negiert den Wahrheitswert des Ausdrucks, xor(a,b) ist der Exclusiv-Ok-Ope-
rator. Die einzelnen Verkntipfungen sind in folgender Tabelle zusammengefasst,
Eingang and or xor not
a b a&b alb xnr(a.b) rva
0 0 0 0 0
0 0
0 0 1 0
0 0
Die NOT-Verknupfung hat die hochste Prioritat. Der AND-Operator hat gegentiber dern DR-
Operator in MATLAB die hohere Prioritat. Irn Zweifelsfall sollten Klarnrnern gesetzt werden:
I bidcntisch I (b )
a &C----7a .&C
Die Vergleichsoperatoren arbeiten bei Matrizen ebenfalls elernentweise. Logischwahr ist 1, 1 0 -gischfalsch O.Die Operatoren <, <=, >, >= beziehen sic h b ei komplexen Variablen nur auf
den Realteil, die Operatoren ==nd ~= auf ReaJ- und Irnaginarteil.
~ Beispiele einfacher VerknUpfungen:
» a = 5; b=-a;
» ~a
ans =
% Zuweisung, a ist wahL
% Negation von a
o» (7 > 11-5 & 7 <= 5*2 ) I +a
ans
% besser &&-Verknlipfung
1
l> Nachweis des kleinsten Abstandes eps (b) zur nachst grofleren Zahl von b, vgl. S. 5 und
S.24:
» s=(abs{b)-eps(b)) < abs(b) & (abs(bj-O.5*eps(b)) < abs{b)
s = % erster Ausdruck ist wahr, zweiter falsch
o
c > Elementwei ser Matrix-Vergleich:
» X=5; x>= [1 2 3; 4 5 6; 7 8 10] % beide Zei1en ergeben
» X=5*ones (3, 3); X>=[1 2 3; 4 5 6; 7 8 10J % gleiches Ergebnis
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 23/80
ans
1 1 1
1 1 0
0
°
0
1.2 Basis-Elemente 23
c > Die Operatoren & &, I I werden als Kurzschluss-Operatoren (Short-Circuit Operators) bezeich-
net. Ihre skalaren Operanden werden nicht weiter evaluiert als zur Ermittlung des Wahrheitswer-
tes erforderlich. Beispiel zum Short-Circuit Operator & s , siehe Online-Hilfe:
» b=O; a=5 % a ist be1iebig
»x = (b ~= 0) && (alb> 18.5)
x =
o
»x = (b ~= 0) & (alb> 18.5)
Warning: Divide by zero.
o
Es wird deutlich, dass im ersten Fall nur der Ausdruck (b -= 0) auf den Wahrheitswert
untersucht wird, im zweiten Fall- angedeutet durch das lrJarning - aber beide.
1.2.6 Verzweigungen und Schleifen
Verzweigungen und Schleifen
if bedingung ... \ elseif...) (else...; end
switch.i.case .._( otherwise... ) end
for variable = bedingung, befehle end
while bedingung, befehle end
breakcontinue
If-Anweisung
Switch-Anweisung
for-Schleife
While-Schleife
Vorzeitiger Schleifenabbruch in for, whileAbbruch des aktuellen Schleifendurchlaufs
= help lang
.... Beispiel fur: for, if, else, elseif - vgl. For_schleife. min Programmsammlung L59J-
» for t = 1.0: -0.1: 0.0, Befehle , end % 1. F'or-Sch1eifek=5;
for In = l:k
for n = l:k
if m """ 0
A(m,n) = 2;
elseif abs(m-n)
A(m,o)
else
1".(m,o)
end
end
end
l',
%2 _ For-Schleife,
% Ii-Anweisung
Ergebnis:A =
22 0 1 0 0
0 2 0 1 0
1 0 2 0 1
0 1 0 2 0
0 0 1 0 2
o .,
Anmerkung: Obige Erstellung von A ist unzweckmiiBig, besser:
dl=2*ones(k,1); d2=ones(k-2,1);
A=diag (dl )+diag (d2 , 2) +diag (d2 , - 2) ; % bzw.: A=2*eye(k) + ...
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 24/80
24 1 Einfiihrung in MATLABf< '
For-Schleifen: Werden Vektoren, Matrizen, wie in der obigen for-Schleife, elementweise besetzt,
dann sollte man zur Rechenzeitersparnis die Felder, trotz Jl'l-Accelerator _ vgl. Abschn. 1.1 _,
praallokieren. Dies kann dUTChVorabbelegen mit:
A = zems{nmax,mmax); oder durch A (nmax,mmax)=0
geschehen, Sind nrnax, mmax unbekannt, dann geht man von einem Schatzwert aus und passt
nach den Zuweisungen die akmelle Dimension an; vgl. folgende Beispiele mit Rechenzeitanga-
ben- siehe auch praeall .min [59] _, in denen einer Matrix elementweise ein Wert zugewie-
sen wird. Die Rechenzeit wird mit den tic, toe Befehlen, vgl. Tabelle auf S. 28, errnittelt.
nmax=600; mmax=600; wert=12.345;
% ohne Felddimensionierung
tic
for i=l:nmax, for j=l:mmax, A(i.j)=wert; end, end
toc, clear A
% Programm: praeall.m
Elapsed time is 2.515000 seconds. % Pentium (R)4 CPU 3.20 GHz
% mit Felddimensionierung
A=zeros(nmax,mmax);
tic
for i=l:nmax, for j=l:mmax, A(i,j)=wert; end, end
% octer A(nmax,mmax) =0;
toc, clear A
Elapsed time is 0.016000 seconds.
% ROckw~rtsbelegung ohne pr~allokieren, 1. Zuweisung legt Matrix antic
for i=nmax:-l:l, for j=mmax:-l:l, A(i, j)=wert; end, end
toc, clear A
Elapsed time is 0.016000 seconds.
% Felddimensionierung gesch&tzt
nmax=700; mmax=600; A=zeros(nmax,mmax); t=cputime;
for i=l:nmax, for j=l:~~ax, A(i,j)=wert; end
if (cputime-t) > 0.1 , break, end
endA=A (I: i,1: j) ; % tats§chliche FeIdgr50e
Vielfach wirkt sich auch eine Speicher-Defragmentierung dUTChpack positiv auf die Rechenzeit
aus.
.. Zwei Beispiele zur Whlle-Schlejfe
[>Beispiel 1: Gesucht ist der kleinste positive Abstand eps~a von Ivar I, so dass numerisch
Ivar I + eps~a (var) > Ivar I , v gl, eps S. 5, MaD fur relativen F ehler von var.
var=5; eps_a = 1;
while (var+eps_a)
eps_a = eps_a/2i
var
% var=5, Startwert eps_a
% while-Schleife
% eps_a wird fortlaufend halbiert
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 25/80
1.3 Programmerstellung, MATLAB Script und Function 25
end
eps_a ~ eps_a*2 % damit wieder: var+eps_a > var
Ergebnis: » eps_a = 2,2204e-016 % k1einster Abstand: var+eps_a > var
c- Beispiel 2: Iterative Nullstellenbestirnmung von f =0.5 _ x +0.2 sinx mittels NEWTON-
Verfahreu, vgl. Newton. pdf, newton. m, newtonO .m mit Darstellung der Iterationsfolge
in [59J:
+1 . . I' r = dfXl =x'-f(x)Jf (x'), i=O,I, ... ; ax'
MATLABCode:
x = 3.0;
ab=l; to1=1.0e-7;
i-ter Iterationsschritt
% Startwert
% 1. _i'l.bbruch-l\1ertnd Abbruch-Toleranz.
Imax=100; 1=1; % max. Iterationen, 1. Iter. -Schritt
while abs(ab) > tol && I < ImaxXO=X i % Datensicherung
x =xO-(O.5-x+O.2*sin(x)}/(-1+0.2*cos(x))
ab=x-xO; 1=1+1;
end
Ergebnis:x = 6.1547e-001
% Losungsanderung, Iter.-Schritte
1.3 Programmerstellung, MATLABScript und Function
Es wird zwischen Script-File (kurz: Script) und Function-File (kurz: Function) unterschieden,
Beide werden durch den File- bzw. Function-Narnen mit del Endung . m gekennzeichnet unddeshalb kurz M-File genannr. Die Bearbeitung des Files erfolgt mit dem M-File-Editor.
Script- und Function-Befehle
% com, % { com % } % -% name
help filename
Kommentar-Zeile, -Block, Cell-Divider (R14)
Zeilenumbruch innerhalb eines Ausdrucks
zeigt erste Kommentarzeilen des Progammkopfs
eval (string)
feval (F, in_i ..... in_n)
F (in_i ...., in_n)
inline( 'junkti(m','t',,,)
Auswertung des Strings string
Auswertung des Function Handle F
ab (R14)-Version, feval riickwartskompatibel
Inline Function
function [oul_l, ..] '" name (in_i, .. )@
nargchk (min,max,m)
isempty ( 'var')
nargin, nargout
global var var 1, clear global var
persistent var
return
error ( 'bemerkung')
MATLABFunction, Kopfzeile (Definitionszeile)
Function Handle (class: functlon_handle)
Ubergabeparamerer-Anzahl m prufen: min S m S max
Existenz von var priifen
Anzah1 del' Ein- bzw, Ausgangsparameter abfragen
Definition bzw. loschen von Global- Variablen
Definition persistenter (statischer) Variablen
Rilcksprung aus Function bzw. Script-Abbruch
Function-Abbruch mit Ausgabe von bemerkung
clear function_name Loschen der ubersetzten Functions
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 26/80
26 1 E infiihrung in MATLABf< '
=? help function, help funet ion_handle, help funfun
1.3.1 MATLAB Editor und Verzeichnisprteritat
Wichtige Informationen zum Editieren konnen mit dem Help Button unter Using the M-File-Editor der Editor-Menuleiste eingesehen werden, Ein neues M-File (ASCn-Text) ist nach fol-
" l i ! I Edi tDr - C: \BMATI. \K4p_l lkre is .m G J I 9 [ 8 JFile Edit Text Go Cell Tools Debug Desktop Window Help " ~ X
D w f IIiI I l( ~ e, ~ c-. I @ I ~ . . . f . 1 € J ~ I < D . . ~ . . . 1 @ ' j ift I stack~ eJ r n 8 Bl [ Q ]t - ; - - - - ;: '- ; - E 1 : - : . n - - - ; : , ,: : " s : : c ~ ,, :: s - ; S : ; : : " : :< : : i P : : : t : - -- - ' '- - - - - - - - - '- - , - ' - - - , - ; 1 ~ 5 ~ = V : : ; ; " ~ e n ~ d = , u : : ; n1---;:-'------'== = = - - - - - : : 1 1 - . ~. .~ ~ ~ : ; : ~ - ~2 - [-1; ~ Kretsr acn.us IWarnings found, Clicl<to go to the next message, I p~.e.l,m3 - th.t a=Li nsp ..".(O,2'pI, 100); ~ Illnk.UCllge . ...............
" I : - x-r TC::O~ (thete.) ; 't X-Koord~n~te . _ _ ~ DA"E_i.fYI
.5 ¥-r~sin(theta;., 1 1: y-Koordl_natl§! I ~ l"'E'hl~r liJlrd &ngE'2~igt -. etabrzm
6 - fiqure(' name I· I ~kreii!!!l') ~ Grafik-Fenster offnen, vql. epatl!!!!r sim_v1 2SJll x
7 - plol;(x,V) sim_v13D,,rn x
8 _ axis (I equa L")
~ Kr~i~d~~~t~llung
1: Jl.ehs-Ska.li@rung, E'tuch: axis equal krelsrn
9 _ titl,e: C [I Kreis vcm Ra.dius r=1 ~nUIt12:str (r) J )
10
[kreio,m
I script Col 22 IOVR ,::
Bild 1.3; Edito r- Fens te r, MATLAB1 .2
gendem Muster zu crstellen.
• Offnen des MATLAB Editors, Bild 1_1 , aus dem Command Window bzw, der Menu-Leisre:
Eingabe nachdemPrompt: > > edi t
File-Button/Menu: File/New /M-F ile
Leerblatt-Button in der Menu-Leiste
• Programmerstellung: Zeilenweise Eingabe der MATLAB-Befehlsfolgen. Das Function-File
erhalt eine spezielle Kopfzeile mit dern Schlusselwort function
• Speichern des Files in das aktuelle oder mit Angabe eines ausgewahlten Verzeichnisses aus
der Editor-Menu-Leiste, vgl. Bild 1.3, dUTChEingabe des Filenamens (z. B. Ueb. m oder
0: \BMATL\Ueb _m)in die geoffnete Dialogbox:
File-Button/Menu: File/Save As._
Dish-men- ButtonSave and run-Button, wie in Bild 1 .3
Die ersten Programmzeilen eines Script-Files bzw, die bei einem Function-File nach der Defini-
tionszeile mit dem Schlusselwort function foJgenden, sollten Kornmentarzeilen z. B. zum Inhalt,
zur Erstellung und Anderung enthalten. Sie werden bis zur ersten MATLAB-Anvv'eisung, u. a. wie
bei allen Built-In Functions, mit help filename oder type filename im Command Window
angezeigt; type filename _n listet das File auf.
Bemerkungen zum Verzeichnis bzw. Ptad (Path): Vorausgesetzt ein Benutzerverzeichnis z . E-
D : \BMATL fur eine MATLAB-Sitzung sei - entweder aus der Windows- oder MATLAB-Umge-
bung - erstellt. Mit dem DOS-Befehl cd (Change Directory)
» cd D: \BMll.TL
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 27/80
1.3 Programmerstellung, MATLABScript und Function 27
wird es WIll aktuellen Verzeichnis; es wird in der Menu-Leiste des Command Windows, vgl.
Bild 1 . 1 , angezeigt und ist fur spatere Sitzungen wieder anwahlbar, Eine Pfad-Wahl ist auch mit
dem Button rechts neben der Verzeichnis-Anzeige im Command Window zu treffen,
Verzeichnis- und FiJe-Verwaltung
cd verieichnis
die (auswahlj
pwd
Verzeichniswechsel aus dem Conunand Window
Liste des Verz.-Inhalts, z. B. dir *.m, aile M-FilesAnzeige des aktuellen Verzeichnisses
Liste des MATLAB-Pathath
addpath verzeichnis { -begin I -end ) Ubemahme des Pfads verzeichnis in MATLAB-Path
Position-Optionen fur: List-Anfang oder -Ende
Loscht verieichnis aus MATLAB-Path
Liste der m-, mat-, mex-Piles des aktuellen Verz.
Directory-Anzeige von Filefilename im Suchpfad
M-File mit such in erster Zeile, (-Block) im Suchpfad
rmpath verzeichnis
what
which filename -(all)
lookfor such (-all)
Das aktuelle Verzeichnis hat nun, bei Suchstrategien z : B. mit dem which Befehl, erste Priori-
tat, es folgen die des MATLAB-Path - Built-In Function mit Liste ausgewahlter Directories -, in
dem ursprunglich sich MATLAB'eigene Files und das Arbeitsverzeichnis work befinden. Wird
ein anderes Verzeichnis als aktuelles ausgewahlt, so ist 0: \BMATL nicht mehr in dem Such-
pfad enthalten. Dieses kann man andern, wenn 0 : \ SMATL dem MATLAB- Path hinzugefugt wird,
Diesbezugliche Befehle sind:
• addpathD: \BMATL ( -begiri I -end s oder .,.( -0 1 -/ )
Mit den Optionen -begin I -end wird das neue Verzeichnis an den Beginn oder ans Ende derPath-Liste gesetzt, path zeigt dies an. Mit
• rmpath 0 : \ BMATL
kann das Verzeichnis wieder entfernt werden .
• Pile-Button/Menu: File/Set Path ...
offnet ein Fenster, mit dem diese und welter Verwaltungen zum MATLAB-Path moglich sind,
dies wird auch durch die Befehls-Eingabe von pathtool erreicht,
Der erweiterte MATLAB-Suchpfad wird VOlll ersten bis zum Ietzten Listeneintrag nach Functions
oder Files, z : B. mit while filename und nach Ausdrucken u. a. in der Kopfzeile (Hl Line) del'
M-Files mit lookfor ausdruck, durchsucht. Dies erklart auch die Option -begin I -end.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 28/80
28 1 Einfiihrung in MATLABf<'
1.3.2 Datenein- und Ausgabe
Ein- und Ausgabebefehle, Konvertierung
variable=
string
disp (string)
disp ( variable)
num2str (variable (format) )
int2str( variable)
input ( string)
input (string, 's' )
pause \ ( zeit) )
fprintf tfid.format -strlng, variable)
sprlntf tformat-string, variable)
fopen ( datei.endung, write/read)
fclose (fid )
fid
Textausgabe, z.B. string>' Ausgabe'
Unforma tie rt e Da tenausgabe
Konvertiert Real-Variable in String
Konvertiert Integer- Variable in String
Einlesen der Variablen variable
Einlesen des Strings string
Pause bis 'Iastenbetatigung/Zeitablauf
Datenausgabe u. a. in ASCII-Datei
formatierte String-Ausgabe; ANSI C
Datei offnen
Datei schliefsen, fid Datei-Identitat
tic operationen toe Rechenzeit zwischen tic ----7 toe in Sek.
Genaue Angaben zu den Konvertierungs-Syrnbolen u. a. d, e, f, 5, .. un d den speziellen For-
rnatierungshilfen \n, \r, \ t, .. utvformat-string sind unter doc fp r int fund help fpr int f
nachzulesen. Aile File-Eingabe- und -Ausgahe-Functions finden wir mit: help iofun.
... Aus- und Eingabe-Beispiele
» format long ei a=12.34567890; % Fo~mat / Daten
» disp(a) % unformatierte Ausgabe
1.234567890000000e+001
» fprintf('%3.5f\n',a) % formatiert mit Ubergang \n in neue Zeile
12.34568
» fprintf('%s %3.2f\n','mit Variablenzuweisung a = ',a)
mit variablenzuweisung a = 12.35
» sprintf('%3.2e' ,a)
ans =
1.23e+001
% Ausgabe als Character bzw. String
% class char, endgUltige Ausgabe mit disp
» disp (['a» disp (['a
» disp (['a
a = 12.35
',num2str(a,'%3.2f')]) % [... J beacht.en, oder',TIum2str(a,4')]) % oder
, r sprintf (t %3. 2f' ,a) I)
> > % 1'.usgabemit Text in Hochkomrna, r -> "
»disp(["'Ergebnis: ", a = ',num2str(a,'%3.2f')))
,Ergebrus: ", a = 12.35
[> Ein typisches Programmsegment mit einer Aufforderung zur Tastatureingabe und einer an-
schl ieBenden Uberprufung dieser Eingabe, siehe aueh newt OTI_S ys _m in [59J, folgt in:
disp ('vgl. Programm: ne~Jton_sys. m der Programmsammlung im vr",·v.J')
disp (' ') % Leerzeile
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 29/80
1.3 Programmerstellung, MATLAB Script und Function 29
beispiel=input('Beispiel 1 oder 2? ')j % Eingabeaufforderung
if isempty (beispiel) I I beispiel> 2 I I beispiel < 1,
disp(['Eingabe-Fehler: beispiel = ',num2str(beispiel) l) ,
return % E'rog. beenden
end
Fur disp ( [' Eingabe- .. kann auch die Function error ( [ , Eingabe- .. , die gleichzeitig
das Programm beendet, verwendet werden,
[> Abschliefiend legen wir ein Text-File mit zunachst erzeugten Daten an:
»t=0:pi/2:2>'pi; x=[t; sin(t)];
» fid = fopen('Text_File.text', 'w');
» fprintf(fid,'%3.6f %10.6e\n',x);
» fclo5s(fid);
% Datenerzeugung
% Datei 5ffnen, fid Ident.
% formatierte Ausgabe
% Datei 5chlieBen
- vgl. auch save, load -, Den Inhalt des Files Text_File. text zeigen wir mit dem Editor
-z.E.» edit Text.-File.text -an:
0.000000 O.OOOOOOe+OOO
1.570796 1.000000e+000
3.141593 1.224647e-016
4.712389 -1.000000e+000
6.283185 -2.449294e-016
1.3.3 MATLABScript
Ein Script-File ist ein Programm mit MATLAB- Anweisungen, siehe Bild 1.3. Ein Script-File kann
auf Daten des Workspace zugreifen und legt erzeugte Daten dort aboSie sind nach Programrn-
Ablauf verfugbar und konnen somit zur Datenkontrolle abgerufen oder zur grafischen Ausgabe
weiterverarbeitet werden. D. h. die Variablen sind global.
Script-Files enthalten keinen Deklarationsteil und keine Abgrenzung durch begin J end.
Kommentare sind zeilenweise durch vorangestelltes % zu kennzeichnen, Unter MATLAB 7 wird
eine Block-Korrunentierung - eingeschlossen durch % { . . Block .. % } - , ahnlich der C-Verein-
barung, moglich: % ( und % ) stehen in separaten Zeilen. Ein Zeilenumbruch innerhalb eines Aus-
druckswirddurchdiePunktfolge ... erreicht,z.E.: 5+6- ... und 5+6 ... -Leerzeichen
beachten -. Scripts konnen von anderen Scripts autgerufen werden,
Messbar ist die Rechenzeit einer Befehlsfolge innerhalb der Zeitmarken tic .... toc. Die Function
tic speichert den Srartzeitpunkt, toe ermittelt die Rechenzeit. Mit return kann eine Progranunaus-fiihrung vorzeitig beendet werden.
Die Ausfiihrung (Start) eines zuvor gespeicherten M-Files aus dem Command Fenster erfolgt
durch Eingabe des File-Namens ohne Endung ( .m) oder mit dem Save and run Button in der
Editor-Menu-Leiste nach Bild 1.3.
Ab MATLA8 7 (R14) stehen zusatzliche nennenswerte Tools zur Programmentwicklung zur
Verfiigung. Ausfuhrliche Information findet man im Help Browser unter MATLABJRelease
Notes/New Features und in den Video-Demos, z. B, The Editor. Zum einen Iasst sich
def Programm-Code in Programrnsegmente so genannte Zellen (Cells) unterteilen, vgl. [33]. Jede
Zelle beginnt, wie in Bild 1.4, mit einem doppelten Prozentzeichen %% (Cell divider) und einem
Zell-Titel. Die Zelle selbst enthalt mehrere Anweisungen, Zur Ausfuhrung des Prograrnrns muss
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 30/80
30 1 E infiihrung in MATLABf<'
C"ll-Pnl\l"=-~t.n'I<"\l"
2 - dis~ (( ICell strl..1,C'ture ': I ,date] J
'>~.St.."t 'll 1.(ell title
"l - t-=inspace (Of;;;:';pi); l!Lusdruck:e!
'> ~ F....J<ti!>"
6 , - t=sin(t.-) ;
7 '> ~ P~Qt
S - ploCit.,t)
l!Lusdruck:e!
'll 3(ell titl",
l!Lusdruck:e!
Bild 1.4: Editor mit elngeblendeter Cell-Toolhar und Programrnstruktur unter MATLAB 7.2
die zugehorige Menuleiste tiber den Editor-Button Cell, Mentipunkt Enable Cell Mode ein-
gebLendet werden, Steht der Cursor in der Titelzeile, z. B. Start wie in BiLd 1.4, so ist der
Programmabschnitt bis ZUlli nachsten Zellteiler %% farbig (gel.b) unterlegt. Durch Betatigung
des Button Eval uate cell and. advance wird dieser Programmabschnitt ausgefiihrt. Die
abschnittsweise berechneten Daten und Grafikcn konneu, z. B. im Command Fenster oder im
Array Editor, auf ihre Richtigkeit iiberprlift werden. Ein kompletter Programmdurchlauf er-
folgt mit Button Evaluate entire file oder mit dem Save and run-Button der Editor-
Menii-Leiste. Beispielprogramm: Cell_structure.Ill in [59].
Mit dem Button Publish to HTML am linken Rand der Cell-Tool bar, bzw. dem Menu
File /Publish To HUlL wird der Code eines Scripts einschlieBlich der Ergebnisse und Grafi-
ken in ein HTML-Dokument konvertiert. Besitzt das Script Cell-Strukrur, wie z : B, Basi s_E-
lemente. min [59], dann wird zusatzlich ein Inhaltsverzeichnis mit den Links der Cell-Titles
angelegt. Die Zellen enthalten nun den Cell-Title, den Programmcode und die Ergebnisse. Uber
das Menu File/Publish To konnen andere Dokumente, z.B. Latex, Power Point, erstellt
werden.
ZU[1J anderen existiert ein Code-Checker, der unter dem Tool s-Button mit dem Menu-Punkt
Check Code with M-Lint gestartet wird. Es wird ein Report erstellt, in dem Hinweise auf
rnogliche Fehler aufgelistet sind. Ab (R2006a) wird damit die Programmerstellung fortlaufend
kontrolliert und mit Farbkennung auf mogliche Fehler hingewiesen, siehe Bild 1.3.
Daruber hinaus ist ebenfalls unter Tools ein Profiler zu offnen (Open Profiler). Er
unterstutzt die Verbesscrung der Code-Performance, vgl. Abschn. 1,6.
Mit der Desktop-Architektur ab (R14) ist auch ein An- und Ausdocken u. a. des Editor-Fensters
in den Desktopbereich mit dem Button: ~ im Editor-Kopf nach Bile! 1.3 moglich, Dadurch sind
die wesentlichen Arbeits-Fenster in einer Ebene verfugbar.
~ Beispiel zur Programmerstellung: Es soli ein M-File zur Darstellung eines Kreises vom
Radius r geschrieben werden, Zu definierren Winkeln aus dem lntervall 0 s; e S; 2n: sind da-
flir die kartesischen Koordinaten x, y zugehoriger Kreispunkte zu berechnen, womit der Kreis
grafisch darzustellen ist; Plot-Befehle siehe Abschn.I.4.2.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 31/80
1.3 Programmerstellung, MATLAB Script und Function 31
r=l;
theta=linspace(O,2*pi,lOO);
x=r*cos(theta) i
y=r*sin(theta) i
plot (x,},)
% Kreisradius
% l'1inkelfolge
% x-Koordinate
% y-Koordinate
% Kreisdar5tellungaxis('equal') % Achs-Skalierung, auch: axis equal
title(['Kreis vorn Radius r=',num2str(r) J )
Das Programm speichern wir mit dem Namen kreis.m in das aktuelLe Verzeichnis, vgl.
[59], DeI Start erfolgt z,B. mit der Eingabe von k r e is in das Command Window. Nach der
Ausfilhrung stehen alle Variablen r I theta, x , y im Workspace.
Sind Kreise unterschiedlicher Radien zu zeichnen, so ist rin der ersten Programmzeile stets
neu zuzuweisen bzw. einzulesen: r=input [' r = ?');. In jedem Fall ist es sinnvoIJer fur die
obige Befehlsfolge eine Funct.ion mit der Eingangsvariablen rzu schreiben, Dies zeigen wir im
foIgenden Abschnitt.
1.3.4 MATLABFunction
Zwei Function-Typen unterscheiden wir, Erstens Functions die in einem M-File stehen und zwei-
tens solche, die in einer Command- oder Script-Zeile ausgewertet werden. Zum ersten Typ zahlen
die traditionellen Standard-Functions und die ab MATLAB 7 neuen Nested (eingebettete) Func-
tions. Zum zweiten Typ diejenigen die eine in String gefasste Funktion auswerten und die in
MATLAB 7 neu aufgenomrnenen Anonymous Functions.
1.3.4.1 Standard-Function und FunctionFunctions
Fi.ir cine standardmaliige Unterprogrammstruktur stehen die sog. MATLAB Functions (Schltissel-
wort function] zur Verfligung, es ist ebenfalls ein M-File. Bis auf die Ausgangsvariablen sind alle
vor kommenden Va ria ble n lokale Variable und stehen somit nicht im Workspace. Der Function-
Kopf hat die Struktur
function[ausgangsvariablen] '" funct ion_name(eingangsvariablen)
function_name und File-Name soIlten identisch sein, Ein zusatzlicher Variablenaustausch
kann mit del' global-Vereinbarung
global variable L variable Z; Anzeige: who!whos global
erfolgen, Diese Vereinbarung muss gleichzeitig in dem M-File (Skript, Hauptprogramm), in der
die Function aufgerufen wird, stehen; d. h. die aufgefiihrten Variablen rnussen vor dem Function-
Aufruf als globale GraBen im Workspace stehen, vgl. wur f .m, S. 253.
Daruber hinaus konnen in einer Function persistente Variable mit
persistent variable ] variable Z
vereinbart werden. Irn Gegensatz zu den global vereinbarten Groben, sind die persistenten Grolien
nur in del' Function, in der sie deklariert werden, bekannt; es kann also keine andere Functions
darauf zugreifen, Persistente Variable werden nur geloscht, wenn die Function aus dem Speicher
entfernt wird (clear function~name) oder die Function geandert und danach abgespeichert wird.
Programmbeispiel: fcnPersist .mund Basis~Elemente _m in [59].
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 32/80
32 1 Einfiihrung in MATLABf< '
.. Anhand zweier Beispiele wollen wir die Handhabung mit Functions erlautern,
[> Beispiel I: Zunachst sollen, entsprechend dem besprochenen Script zur Kreiserzeugung,jetzt
Kreise unterschiedlicher Radien r gezeichnet werden: es bietet sich eine Function-Pormulierung
an. Der Eingangsparameter ist r, als Ausgange wahlen wir die kartesischen Koordinaten .e , y;
Plot-Befehle siehe Abschn. 1.4.2. Die Function mit dem Namen fkrei s kann wie folgt aufge-baut sein:
function [x,y]= fkreis(r)
theta=linspace(O,2*pi,100);
% F'unction-Kopf
% IHnkel £olge
................ wie oben, d.h. wie in kreis.m
title(['Kreis vom Radius r=' ,nurn2str(r)])
DeI Aufruf aus dem Command Window oder einem M-File kann ohne oder mit Ausgabe der
kartesischen Koordinaten erfolgen:
» fkreis(2l;
» [x,y]=fkreis(4);
% zeichnet Kreis mit r=2, keine Ausg§nge
% mit Ubergabe von x, y; Workspace-Daten
oder mit Function Handle func~h, vgl. u. a. auch Function eulerApprox:
» func h=@fkrelS % F'unction Handle
» [x,yJ=feval(func~h,2); % F'unction evaluation bis MATLAB 6.S ..
» [x , y] =f uncjh (2); % ab I"lATLAB 7
Die Befehle nargin, nargout (number of function input, output arguments), konnen zu r Kon-
trolle der Ein- und Ausgangsargumente oder zur Steuerung des Programmablaufes eingesetzt
werden. Wir zergen dies unten mit der modifizierten Function fkrei s ; vgl, fkreis~Rr .m in
[59]. Es lassen sich sowohl einfache Kreise mit den Radien R ais auch zusatzliche Innenkreise
mit den Radien r < R zeichnen. Dazu muss die Anzahl der Ein- und Ausgangsargumente variiert
werden. Mit R als Eingang wird ein einzelner Kreis, mit R, rein zusatzlicher Innenkreis bearbei-
tet, Die Rtickgabe-Matrizen VR, V r enthalten spaltenweise die kartesisehen Koordinaten x, y, es
konnen wahlweise beide oder nur V R ausgegeben werden.
function [VR,V~]= fkreis_Rr(R,r)
theta=linspace(O,2*pi,lOO)';
% Auf)en- (R), Innenkreise (r)
% \"ii nkel £olge
VR=R*[cos(theta) sin (theta)I; % X-, y-Koordinaten ftirR
plot(VR(:,l),VR(:,2)), axis('equal')% Plot des Krsisss
if nargin == 1 && nargout == 2 % elnzelner Kreis, Radius R
Vr= [1 i % Leer-JvJatix
return % Rficksprung u.a. ins M-File
elseif nargout <= 2 && nargin == 2 % AuBen- u. Innenkreis
Vr-r* [cos (theta) sin(theta) J % X-, y-Koordinaten fUr r
hold on, plot(Vr(:,l) ,Vr(:,2)), hold off % Innenkreis zeichnen
end
Aufruf. z.Bc: [VR,Vrl=fkreis_Rr(2,1)~'~'~'oder--'- [VR]=fkreis_Rr(2,1), .....
[> Beispiel 2, Function Functions Forrnulierung: Es soil der Differenzialgleichungstyp erster
Ordnung
~v=f(t)y)
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 33/80
1 .3 P ro grammerste llu ng , MATLAB Script und F unction 33
yexakte Lusting
Yk
Differenzialgl.: y =(t,y), Losung y e t )
Approximation: )'k =Yk-J - I - hf(tk-l, Yk-l)
Definition: t« := kh, Yt:= y ( t k ) , k = 0 ,. 1 ,2 , . .
Beispiel: y =/),; ( .)= f d t
exakte Losung: y =2t + 1
Bild 1.5 : Eut.sa-Approximation
mit Hilfe der EULER-Approximation mit fester Schrittweite h nach Bild 1.5 naherungsweise
berechnet werden. Dabei ist es zweckmalsig, wie in Bild 5.6, neben dem Hauptprogramm bzw,
Script (dg1.rn) eine Function (f dg1 .m) fur die zu bearheitende Differenzialgleichung y =1/ Y
und eine Function ZUI problernunabhangigen Approximarionsmethode (eulerApprox. m) -
hier: EULER~Vorwartsverfahren nach Bild 4,3- fur beliebige rechte Seiten J ( t ) y), einzurichten,
Schreiben wir fest, dass die diskreten Zeitpunkte t" und die zugehorigen Funktionswerte
Y k := y ( t , , ) als Ergebnisse ins Hauptprogramm einflieBen sollen, dann mussen dies Ausgangspa-
rameter von euLe r.App rox .m sein, Ferner ist zu bedenken, dass in die Approximation nach
Bild 1.5 zu jedem Integrationsschritt k die Ableitungsfunktion )\-J=(tk -l: Y k-l) der zu inte-
grierenden Differenzialgleichung, sie soli in der Function fdgl. m stehen, zu berechnen ist, Dies
geschieht durch den Aufruf von fdgl in eulerApprox, wcnn )'k-l A usgangsgrofse ist. 1 11die-
sem Fall muss die Function fdgl, reprasentiert durch den zugehorigen Handle func=@fdgl
- bzw. ' fdgl! bis MATLAB 5.3 -, Eingangsargument von eulerApprox sein; vgl, Tntegra-
toraufruf im Hauprprogramm, Daruber hinaus muss das Inregrationsintervall z. B. aus Anfangs-
und Endzeitpunkt ( ta , t ,,), der Anfangswert ( v o = y(t a ) sowie die Schritrweite h als Eingangsgro-
Ben dell niert werden. Selbstverstandlich brauchen die Bezeichnungen des aktuellen Aufrufs von
eulerApprox. m in dgl. m nichr mit denen der Integ ra tion srou tine eulerApprox uberein-stimmen, Um die allgemeine Giiltigkeit dieser Function deutlich zu machen, fiihren wir andere
Bezeichnungen ein:
function [X,yJ =eulerApprox (func,startx, endx, starty,h)
x=startx:h:endx; y=O*x; y(I)=starty(l);
for i=2:length(y)
% 1'(i)=1'(i-l) + h * feval(func,x(i-1),y(i-1)); % t-lATLAB...6.51
y(ij=y(i-l) + h * func(x(i-l) ,y(i-l) J; % MAT LAB 7
end
Da eine Eingangsgrolse wieder eine Function (func) ist, spricht man von Funct ion Func-
tions, deren Aufruf in der Function Regeln unterliegt, vgl, newton_Sys. min [591- Bis ZUI
Version 6.5.1 erfolgte der Aufruf mit der feval Formulierung, dies wurde mit MATLAB 7 geandert.
Beide Formen sind in der obigen Function eulerApprox gegenubergestellt.
Die von eulerApprox aufgerufene Function fdgl der Dgl.y = 1/y, in der die Ableitungs-
funktion (y) naherungsweise berechnet wird, hat die einfache Form:
function [yp] = fdgl(t,y) % da eine Ausgangsv. auch: function yp= ..
yp = l/y; % D~fferenz~alglelchung
Die Ableitungsfunktion y ---'> yp wird an eulerApprox iibergeben und Yk berechnet, Schliefs-
lich ist fUr die Integration von j =1 /y das Hauptprogramm als Script-File (hier: dgl .m) mit der
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 34/80
34 1 E infiih ru ng in MATLAB f< '
7,--------------------------,
5
6
2
1L-----~----~----~----~o 5 150
0.35 ,---------------------------,
0.05
0.3
0.25~
" 0.2'"¥0.15.0
' " 0.1
OL_----~----~----~----~o0 15 2010
Bild 1.6: Trajektorien und Integrationsfehler, - Approximation .... exakte Losung
Pararneterinitialisierung, dem Aufruf der Inregrations-Function und der grafischen Darstellung
der Ergebnisse Zli schreiben, Da die exakte Losung bekannt ist, konnen wir einen Approximati-
onsfehler angeben. Programm dg 1 . m, siehe auch [59]:
%---- Hauptprogramm
ta=O; te=2 0;
h=(te-ta)/20;
% dgl.m
% Startwert, Endwert
% feste Schrittweite
yO=l .. % An fanqswert
[t,y]=eulerApprox(@fdgl,ta,te,yO,h);% Integrations-Aufruf
y_exakt = sqrt(2*t+1); % bekannte exakte L6sung
figure (1) % grafische Auswertung
subplot (221) % Grafik 1
plot(t,y,t,y_exakt,'r.'), xlabel('t!l, ylabe l t ry , y_{exaktj')
subplot (222) % Grafik 2
plot (t,abs(y-y_exaktJ ), xlabel('t'I, ylabel('abs(y-y_(exakt])')
(Plot-Befehle siehe Abschn, 1.4.2)
Der Datenaustausch mit dem Script und den Functions ist in Bild 5.6 veranschaulicht. In
Bild 1.6 sind die Simulationsergebnisse dargestellt,
1.3.4.2 NestedFunction
Nested Functions sind eingebettete Functions, die innerhalb einer anderer Function, der Parent
Function, angeordnet sind lind mit ihr als M-File gespeichert wird. Der Aufruf erfolgt meist aus
einem M-File seltener aus einer Command Zeile. Die Parent Function haben Zugriff auf den
Parent Function's Workspace. Abgeschlossen wird jede Nested Function und die iibergeordnete
Parent Function mit einem end. Dies unterscheidet diesen Function-Typ von den traditionell ver-
wendeten Standard-Functions. WiT erlautern dies am Beispiel der NEWTON-Iteration von S. 25.
Die Parent Function sei newton_pa r .m- siehe [59] -, die Nested Function newt on_i t,sie
enthalt die NEWTON-Methode.
function 'l = newton_par (,s·tart~.'ert,oll % Parent Function
% Ermittelt iterativ die Loesung ausgehend von y=startwert
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 35/80
1.3 Programmerstellung, MATLAB Script und Function 35
ab=l;
Imax=100; 1=1;
y=nel'rton_iti
% 1. Abbruch-Vergleichs'tiert
% max. Iter., 1. Iter.-Schritt
% Aufruf ohoe Parameter-Uebergabe
%
function y=newton_it % Nested Funct. iuer NEWTON-Iter.y=startwert; % Startwert-Umbenennung
while abs(ab) > tol && I < 1max
yO=y; % Datensicherung
y=yO-(O.5-y+O.2*sin(yl )/(-1+0.2*cos(y));
ab=y-yO; % Loesungsaenderung
1=1+1; % Iterations-Schritt
% end While-Schleife
% end Nested Function
% end der Parent Function
end
end
end
Die Nested Function newton_i t kann auf die Variablen des Parent-Function's Workspace
(hier von: s ta rtwe rt,ab , tal, Lmax , I) zugreifen und sie verandern. Dies machtdenDa-
tentransfer zwischen mehrfach geschachtelten Function (multiple nested functions) einfach, Wir
k on nen d ie F u nc tio n in g ewohn te r We is e a uf ru fe n, z. B. fur startwert=3 und tol=le- 6:
» y=newton_par(3,1.0e-06)
y
6.1547e-001
Die Fahigkeit von Nested Functions auf den Parent's Workspace zuzugreifen ermoglicht ei-
ne ubersichtliche Kontrolle der eiugehenden Variablen, Insbesondere, wenn sie in mehrfach ge-
schachte he Function s eingehen. Der unangeneh me Effekt einer unkontrollierten Uberschrei bung
von mit global vereinbarten Variablen entfallt. Daruber hinaus wird der Speieherbedarf bei ge-
meinsamer Nutzung groBer Datensatze reduziert.
Das obige Beispiel liebe sich auch mit einer tradition ellen Function erzielen und bietet so-
mit keinen wesentlichen Vorteil, Dies sieht anders aus, wenn wir die Struktur - siehe auch
newton_parent .min [59J - geringfugig andern, vgl. Zeile 1, 5, 6, 11:
function y = newton_parent(tol) % Parent Function
% Ermittelt iterativ die Loeeung auegehend von y=etartwert
ab=l;
Imax=100; 1=1;
% 1. Abbruch-Vergleichewert
% max. Iter., 1. Iter.-Schrit.t.
y=@newton_it;
function y=newton_it(startwert) %
% Funct.-Handle y bez. newton_it
Nested Funct. fuer NEWTON-Iter.
y=startwert; % Startwert-Umbenennung
while abs(ab) > tol && I < 1max
wie oben
end
ab=l; 1=1
% end While-Schleife
% mussen zurUckgesetzt werden
% end Nested Function
% end der Parent Function
end
end
Wird newton_parent aufgerufen, dann wird der Function Handle y bezuglich der Nes-
ted Function newton_i t zuruckgegeben, welcher individuell gemaB del' Parameterubergabe
- hier: tol=le-7 bzw. tol=le-2 - der nbergeordneten F unction (P arent F unction)newton_parent angelegt ist, z : B.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 36/80
36 1 E infiihrung in MATLABf< '
» yl
» v2
y2
ne\1ton_parent(1.Oe-07) ;
ne\1ton_parent(1.Oe-02)
% Handle yl fUr tol=le-7
% Handle y2 fUr tol=le-2
@newton_parent/newton_it
Wir konnen jetzt, wie bisher, diese individuellen Functions z. B. fur die Startwerte 3 und 6
auswerten.
»yl (3)
ans =
6.154681694899654e-OOI
»y2 (6)
ans =
6.154681B76614523e-OOI
% Rechnung mit tol=1.0e-07
% Rechnung mit tol=l.Oe-02
In diesem Fall werden einige Variablen der Parent Function nur einmal zugewiesen bzw. be-
rechnet, was u. a. bei komplexeren Ausdrucken Vorteile bietet. Dies entspricht del' Vereinbarungals persistente Variablen,
Bemerkung: Da die beiden Variablen ab, I in der Nested Function verandert werden, mussen
sie VOl' dem Verlassen der Function auf die ursprunglichen Werre zuruckgesetzt werden. Ohne
diese Rucksetzung mussen die Function Handle nachjeder Ausfuhrung neu erzeugt werden.
Beispiele mit unterschiedlichen Functicn-Pormulierungcn sind im M-File Fun ct ion_C re-
ation. illder Programrnsammlung [59] zu finden. Darin sind neben den groberen Textpassagen
die Befehlszeilen enthalten, so dass einerseits Ergebnisse im Command Fester und andererseits
Grafikausgaben verfolgt werden konnen, Das M-File ist in Zellen (Cells) unterteilt, so dass ausge-
wahlte Programmabschnitte (Zellen) mit dem Button 1 1 ! 1 in der Editor-Kopfzeile gestartet werden
konnen - vgl. Kommentarzeilen irn M-File -. Zuvor sind die gekennzeichneten Functions in das
aktueLle Verzeichnis zu kopieren, Ein HTML-Dokument kann erstellt werden, vgl. S. 30.
1.3.4.3 String-Auswertung und Anonymous Function
Die folgenden Function-Typen dienen der Formulierung einer Function in einer Command-Zeile
odcr in einem M-File ohne dafur ein eigenes File anzulegen. WiT fuhren drei Typen beispiclori-
entiert auf:
• Del' eval-Befehi (evaluation) - vgl. auch S. 374 und newtone .illin [59] -
Syntax: [u, v, 'rI, ••• J
String-Ausdrucks stdg.
= eval (string) liefert Ausgangsargumente u, v, w, •.. des
» x='l/y.sin(y)';
» y=O.875;
» a=eval(x)
a =
% String-Ausdruck, vgl. newtone.m
9 6 loJertzuT"eisung
% AusfUhrung des String-Ausdrucks
8.77192573984030ge-OOl
• Die inline Function -vgL S. 374 und u. a. newtoD_syS .illin [59] -
Syntax: inline (e xpr) erzeugt ein inline function object des String-Ausdrucks e xpr.
» g=inline('5*a+7*sin(bJ 'J % gist Function Randle oder
» g=inline('5*a+7*sin(b) ','a','b') % a, b Eingangsvariablen
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 37/80
1.4 Grafik 37
9
rnline function:
9 (a,b) = 5*a+7*sin (b)
» 0=0:2; b=pi/4;» z=g(c,b)
Z =
4.9497e+000 9.9497e+000 1.4950e+001
% neue Variablen eingefGhrt% c -> a, AusfGhrung der Funct.
Da g Functiun Handle gilt auch: z=feval (g, c, b) .
• Die Anonymous-Function (ab R14) - vgl. S. 374 und newtona. m, newton_sys. illund
insbesondere Function_Creation. m bzw, Funct ion_Creat. pdf in [59]-.
Syntax: fhandle = @ (argumliste) Ausdruck
» om=5;
» £ = @(y) cos(om*y);
» t=lin5pac~(0/2*pi/om);
ȣ (tl;
% Variablenzuweisung
% Function-Form. class: function_handle
% Zeitfolg~
% Auswertung der Function, f=cos(om*t)
Im Beispiel zur numerischen Integration mit der EULER-Methode S. 33 kann die Function
fdgl.ffi der zu bearbeitenden Differenzialgleichung y=I } ' durch eine Anonymous Function
im Hauptprogramm ersetzt werden:
£dg1 = @ (t,y) 1/ y :
[trY] = ~ulerApprox(fdglrta,te,yO,h);
% Function Handle der Dgl.
% rnt~grator-Aufruf
Die Anonymous-Functions Iosen insbesondere den Typ inline sowie die Auswertung mit dem
feval-Befehl von Function in einer Function, wie auf S. 33, abo
1.4 Grafik
Visualisierung von Ergebnissen als 2D- und 3D-Grafiken tragt rnalsgeblich zur Veranschauli-
chung der un te rs uc hte n Vorgiinge bel. MATLAB b ietet d iesb ezug lich v ielfaltig e Moglichkeiten.
Wir werden, bezogen auf die Buchthernen, einige Grundlagen zur grafischen Darstellung pra-
sentieren. Erweiterungen sowie Grafik-Beispiele in [8], r48], [63], [67] und insbesondere die
MATLAB-Demo-Beispiel .e abrufbar im Help Browser c ! J , vgL BiJd 1.1, Button Demo - Gra-phics liefern zusatzliche Anregungen,
;;;;;} Wertvolle Links: .!ll Contents-Button!MATLAB/Functions-Categorical List/Handle Graphics
Um die im Folgenden eingefuhrten Objekt-Eigenschaften und ihre Zuordnung besser zu ver-
stehen, gehen wir zu nach st ku rz au f die G rafik -S truk turieru ng ein, D ie MATLAB -G rafik b esitzt
einen objektorientierten Aufbau mit der Hierarchie nach Bild 1.7. Danach besitzt ein eindeuti-
ges Eltern-Objekt (Parent) beliebig viele Kind-Objekte (Children). Das einzige Grafik-Objekt
Root korrespondiert mit dern Bildschirm lind besitzt als Eltern-Objekt die Kind-Objekte Grafik-
Fenster (Figure) - umfasst alle erzeugten Fenster - r - . D, h. sollen Eigenschaften aller Grafik-
Fenster, Z. E. die Linienstarke der Grafen, gegeniiber den Standardwerten geandert werden, clann
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 38/80
38 1 Einfiihrung in MATLABf<'
Bild 1.7: Vereinfachte Grafik-Objekt-Hierarchie
kann dies nur dUTChdas Root-Objekt - Kennung 0 - erfolgen. Jedes Figure-Objekt ist wiederum
Eltern-Objekt zum Axes-Objekt als Kind. Letztendlich sind dem Axes-Objekt u. a. die Kind-
Objekte: Image, Light, ..... , Text - auch als Kern-Objekte bezeichnet - zugeordnet, Die vollstan-
dige Hierarchie ist im Help Browser.!l unter dem Contents-BuUonflvIATLAB!Handle Gra-phics PropertyEro""ser nachzulesen.
In der Root-, Figure- und Axes-Ebene sind nach dem Start von MATLAB Standardwerte fest-
geschrieben, sie konnen beispielhaft fur die Line-Objekte mit:
set(O, 'DefaultLineFropertyName' ,FropertyValue, J
set (gcf,'DefaultLinePropertyName' ,FropertyValue, J
set (gca,'DefaultLinePropertyName' ,PropertyValue, J
neu gesetzt werden. Grols- und Kleinschreibung dient nur der Ubersichtlichkeit. PropertyName
ist der Name der Line-Eigenschaft" - LineWidth, Color, usw. - und PropertyValue ist der zu spe-
zifizierende Wert, z: B. fur die Linienstarke. Mil' DefaultAxesPropertyName' sind die
Axes-Eigenschaften usw, in den oberen beiden Anweisungen (0, gef) anzusprechen.
.... Beispiel: Die bezuglich der Root-Ebene (0) festgeschriebenen Standardwerte, u. a. fur die
Bildschirmausgabe das Ausgabe-Format s ho r.E und fur die Grafik die Linienstarke sowie
Linienart-Reihenfolge (LineStyleOrder) aller angelegten Figure. kann mit get
- z.B. get (0, IDefaultTextFontName') fur die Schriftart - abgefragt und nach Bedarf
mit set geandert werden, Beispiele:
» get(O,'format'J
ans =
.shortE
» set (0,'format', 'longE.')
» get (O,'DefaultLineLineWidth' )
% Format-Abfrage
% vorhandenes Format
% es geht einfacherl
% Linienstarke ?
ans =
5.000000000000000e-001
» set(O,'DefaultLineLineWidth' ,1) % Linienstarke geandert
» get(O, 'DefaultFigureColor'); % FigureColor abgefragt
»set(O,'DefaultFigureColor',[O.5 0.5 0.5]) % FigureColor gesetc:t
» set(O, 'Default ...','remove') % Standardeinstellung
Mit der Anweisung der letzten Zelle wird die Standardeinsrellung wieder hergesrellt, Uber-
sichtlicher ist die Berucksichtigung ausgewahlter Eigenschaften, z. B. LineWidth, Figuref.olor,
direkt am einzelnen Objekt Line, Figure usw .. Dies wird in den weiteren Abschnitten gezeigt.
6 siehe: Help Browser/lndex/LLme/defining default properties
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 39/80
1.4 Grafik 39
Aile im Folgenden behandelten 2D- und 3D-Grafik-Beispiele sowie zusatzliche Experimente
aus Plot_Expl.m, Plot_Exp2 .m, sind im Programm Grafik_Elemente. mmit Zell-
Struktur in [59] zusarnmengefasst; es kann schrittweise abgearbeitet werden.
1.4.1 Grafikfenster (Figure), Erstellung und Verwaltung
Grafikfenster-Befeble
figure (nummer)), ...(PropertyName, -Value);
subplot (zeile,spalte,ziihler)
gef (gel handle to current figure)
el f (clear current figure)
el f reset
delete (figure(n.ummer», delete (nummer)
close (nummer)
close all
drawn ow
shg entspricht figure (gcf)
Erzeugen, Ansprechen einer Figure
Erzeugen eines Subplots
Aktuelle Figure-Handle
Rucksetzen, loschen der Children
wie el f +figure properties zuriickgesetzt
Figure, Handle mit nummer loschen
Figure nummer schlieBen
aHe Figures schlielien
Bildschirmaufbau
Figure anzeigen (show graph window)
Der Befehl figure erzeugt ein leeres Grafik-Fenster (kurz: Figure), wie in Bild 1.9 ohne Grafik,
mit zugehoriger Nummer, Die Nummer entspricht dem Object Handle, welcher die Eigenschaft
des Fensters beinhaltet, AIle folgenden Grafikbefehle beziehen sich stets auf das aktuelle Grafik-
Fenster.
Den Handle (nummer) der aktuellen Figure erhalt man mit gef. Die aktuelle Einstellung inder Form: P rope rtyName, Propertyvaiue mit get (gcf) oder get (nummer) bzw. die PropertyVa-
lues ausgewahlter PropertyNamens z. B. mit get (get, 'Position' ); fiir gcf' kann der Handle
gesetzt werden. Z. B. lassen sich Eigenschaften mit
(hO",) figure (' Unit s' , ' points' , ...
'Position', [100 100 300 100 i,'"
'NumberTitle', 'off',...
'Name' , 'name~, ...
'MenuBar' ,'none')
% Einoeiten, z. B. auch centimeters, pixels
% linke untere Bildecke, Breite, Hohe
% Figure nummer nieht einblenden
% name neuer Figure-Name
% Menu -Leis te aus blend en
andern oder setzen und bei Bedarf mit set (hO, PropertyName, Propertyvalue i , z.B. set (gcf,
'HenuBar' , 'figure'), nachtraglich wieder andern; mit get (gcf,PropertyName) Iasst sich
die Einstellung abfragen, z. B. get (hO, ' Po sit ion' ) . Das Ansprechen bzw. aktualisieren de!
Figure erfolgt mit figure (gcf) oder figure (hO) .
,. Beispiel: Nachtragliche Anderung de! Fenstergrobe (Figure):
P '" get(gcf,'Position');
set(gcf,'Position',Ip(1:2) O.75*p(3) p(4)])i
% aktuelle GroBe
% Breite reduziert
Anderung der Plot-Fenster-Grolse, siehe Abschn. 1.4.2, wenn oben gcf durch gca ersetzt wird,
Durch elf (clear current figure) kann der Inhalt der aktuellen Figure geloscht werden. Mit
delet (figure tnummer) ) oder delet (nummer) - gilt fur jeden Handle - wird die Figure geloscht,
mit elose(nummer) geschlossen und mit close all werden alle ge6ffneten Figures geschlossen,
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 40/80
40 1 Einfiihrung in MATLABf< '
1.4.1.1 Subplot-Fenster,der subplot-Befehl
Eine Figure kann mit subplot(zeilen,spairen,ziihler) in eine zeilenx~palten-Matrix von Subplot-
Fenster unterteilt werden, Mit der Variablen zahler wird zeilenweise von links oben durchnum-
meriert, z. B. fur das zweite BildSlIbplot(2, 1,2) oder slIbplot(212) oder subplot 212
Vertragliche Kombinationen u. a. wie in:
I (2,2,1) I I (2,2,2) I
I (1 ,2 ,1)I (2,2,2) I I (2,2,1) I I (2,2,2) I
I (2,2,3) I I (2,2,4) I I (2,2,4) II
( 2.1 ,2 )
I
sind rnoglich, wobei fiir subplot(1,2,1) auch subplot(2,2,[1 3]) bzw, fur das Argument (2,1,2)
auch (2,2,3:4) stehen kann.
Abweichend von dieser Bildteilung kann auch die Position und die Subplot-Grebe mit
( hs = ) subplot (' Posi tion' , [left bottom width height] ) manuell festgeschrieben werden;
optional mit Handle h s handhabbar,
.. Typischer Aufruf zum Anlegen einer Figure mit Subplots:
figure(nummer) % Erzeugt Figure mit der Kennung nummer
elf % Rucksetzen des handle der Figure
subplot(zeilen,spalten,zahler) % Erzeugt ein Subplot-Fenster
1.4.2 2D-Grafik
Standardmoglichkeiten zur grafischen Ausgabe von Daten werden zusarnrnengestellt. Beispiele
erlautern die Handhabung, mit Plot_Expl.m, Plot_Exp2 .m und Grafik_Elemente. m
aus [59J kann am Rechner experimentiert werden.
1.4.2.1 Plot-Befehle
2DPlot-Befehle
plot ( (x, ) y (,plotstit), ...)
line (x, y, 'Propertyblame',» Value, ... )
line ( 'PropertylvumePropertyvalue, ... )
cornet ( (x,) y (, Kamet-Ldnge i )
stairs ((x,) y (,plotstil), ...)
stem((x,) y(, 'filled',plotSlil), ...)
spy (matrix (, plotstil ) )
semilogx«(x,) y (,platslil, ))
semilogy«(x,) y (,platstil, I )loglog « ( x,) y (, p lo ts-til, ... ) )
Plot der Funktion y=(x), lineare Achsteilung
Plot, High-Level Aufruf, vgl. S. 45
Plot, Low-Level Aufruf, vgl. S. 45
Animation einer Trajektorie
treppenrormige Grafik, lineare Achsteilung
Plot, diskrete Linien zu Xj mit o-Marke, linear
Visualisierung, Sparse-Matrix -Besetzung
Plot, x-Achselogarithmisch
Plot, y-Achse logarithmisch
Plot, x, y-Achsen logarithmisch
fplot (funkiion, bereich) Funktion-Plot, z.B, fplot (' x "2 I , [0 2 J ) ;
hold ( on I aff I all ) Vorhandenes Objekt halten, schlielien
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 41/80
1.4 Grafik 41
Der plot-Befehl
plot ([xl, x2, x3, .. , xNJ, [yl, y2, y3, .. , yNJ (.plotstil), ... )
bzw. vektoriell: plot (x I Y \ ' plots til), ... ) ,
mit gleicher Dimension von x , y, zeichnet die Punkte zu den reellen Wertepaaren x j, y j, die
standardmaftig durch Linien verbunden werden. Entfallenim Aufruf Abszissen- bzw Ordinaten-Werte d. h.x oder y, z.B.:
plot (x (,plotstil > ) , - entspricht plot ( 1.Iength, x (,plotstil > ) - ,
dann werden die enthaltenen Komponenten iiber ihren Index autgezeichnet, Ist x komplex, dann
wird plot (real (x) ! imag(x ) ) ausgefuhrt.
DeI plotstil ist ein String, der im einfachsten Fall aus einem Buchstaben ZUI Farbenkennung
(Color) und einer Zeichenfolge fur den Linien- und Markentyp (Line Style, Marker) inbeliebiger
Reihenfolge besteht; z. B. wird mit
plot(x,y,'r-') bzw. plot(x,y,'r-',u,v,'-.b*')
eine rote gestrichelte bzw. eine zusatzliche strichpunktierte, blaue Linie mit der *"-Markeerzeugt;
vgl. Beispiel S. 42 sowie die Online-Hilfe:
=} helpplot
Eine Auswahl fur Color, Line Style, Marker isr in den folgenden Tabellen zusammengestellt:
Farbeu Liuieu Marken
k schwarz r rot .durchgezogen 0 Kreise
b blau m magenta - - gestrichelt * Steme
c cyan y gelb gepunktet + Kreuze
g griin w weif Punkte x x-Marke
vgl.:LIIOJ gelb-
strichpunktiert usw,usw.
Jeder folgende plot-Befehl loscht zunachst das vorhandene Objekt deTaktuellen Figure bzw. der
Subplots. Urn mehrere Graphen mit mehreren plot-Befehlen in ein Bild zu zeichnen, kann das
Loschen mit dem Befehl hold on nach/vor dem ersten plot-Aufruf unterbunden werden - die
Axes-Eigenschaften werden an die folgenden Plots vererbt-. Mit hold off nach dem letzten plnt-
Befehl wird dieser Zustand aufgehoben - die Axes-Eigenschaften sind Standard -. Wir zeigen
dies sowie Erlauterung von: Line Styles, Colors, Markers im Beispiel unter Bild 1.8, siehe u. a.
auch D2p_O .m in [59].
Der benutzerfreundliche plot Befehl ist kein Kern-Objekt, wie Bild L.7 zeigt, in die Function
geht u. a. zur Liniengenerierung der line Befehl als Kern-Objekt ein.Eine Variante ZUI oberen Liniengestaltung mehrerer Grafen in einem Bild mit Hilfe eines
Cell-Arrays sowie zur Bildteilung des Grafikfensters wird u. a. im Programmcode des Einmassen-
Schwingers S. 43 gezeigt, das zugehorige Grafikfenster ist in Bild 1.9 zu sehen. Wie die Plot-
Anweisungen in Bild 1.8 mit Hilfe des line Befehls zu formulieren sind, wird auf S. 45 gezeigt.
1.4.2.2 Achsen und Beschriftung
Die Befehle der folgenden Tabelle werden u. a. im unten ausgefuhrten Beispiel erlautert. Be-
merkung zur Beschriftung: In den Stringausdrucken string sind auch griechische Buchstaben
sowie einige mathematische Darstellungen, z. B. 5A
2 --+ 52 , wie irn Textverarbeitungssystem
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 42/80
42 1 Einfiihrung in MATLABf< '
Programrn-Code
figurer 1) ;
elft=O:pi/20:2*pi;
plot(t,sin(t) I '-.r*')
hold on
plot (t,sin(t-pi/ 2) , ' -rno' )
plot(t,sin(,t-pi),' :bs')
hold off
% Zeitfolge
% 1.Plot
%
% 2. Plot
% 3. Plot
% NextPlot
axis tight % Achsen an Extremwerte angepasst
Graf k-Ausdruck
BUd 1.8: Beispiel zu: Line-Style, Color, Marker
TEf'{bzw. Ihl"EX [43] moglich, Mit dem Textinterpreter, z.B. ' interpreter' " latex', er-
folgt die Auswahl, In der Symbol-Tabelle unter: Button : . t J Index/T---',Tex commands in
text sind die zulassigen Zeichen zu finden. Einige Beispiele werden im Demo-Programm
LatexBeschr .min rS9] gezeigt.
Achs-Skalierung lind Grafik-Beschriftung
axis ( [x_min, xmax, y_min, 'y_max] )
L=axis
axis ( [L( 1:3), Lmax] )
axis ( [-inf x_max y_min y_max] )
axis ~on I off I auto I equal I square I tight Ixlim ([x_minx_max]), ylim, (zlim)
Manuelle Achsen-Skalierung, axis ist Vektor
Zuweisung der aktuellen Skalierung
Umska lie ru ng e in es /mehr ere r Achsmals e
mit inf folgt automatische Skalierung
Achs-Befehle: Ein- Ausblenden, Skalierung
Achs-Skalierung 2D, (3D)
grid ( on I off I Gitternetz ein-, ausblenden
gca (get handle to current axis) Aktuelle Achs- Handle
X-, y- Achsen-Beschriftunglabel (Siring), ylabel (siring)
title (string)
text (x _J Jo s itio n , Y _ JJ o ~ ·itio n , s tr in g )
legend tstring ], string_2, ... ( ,position))
Grafik -Uberschrift
positionierten Text einbringen
Linienlegende mit Positionsvereinbarung
\alpha I \omega I \Omega I _ I A I . •
interpreter {tex} I latex I none
TEi<-Mode, griechische u. mathe. Zeichen
Umschaltung des Textmodes, TEX, IbTEX
.... Beispiel: Gesucht ist der Amplituden- und Phasenfrequenzgang eines gedampften Einmassen-
Schwingers mit der Bewegungsgleichung und del' Losung x(t):
.\'+ 2aJoDi + wJx =co s Q .r, wobei x(t) =C cos (Q .t - P)
sowie den Parametern D Dampfungsmals , ill() Eigenkreisfrequenz des ungediimpften Systems, q
bezogene Erregenamplirude, Q. Erregerkreisfrequenz sowie der Schwingungsamplitude C und
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 43/80
Phase If'
1.4 Grafik 43
2DT jarctan ---2'
1-7]
C und If' sind numerisch in Abhangigkeit von 11auszuwerten und grafisch darzustellen,
Hinweis: Zusatzlich zur Achs- und Grafik-Beschriftung wird eine Moglichkeit zur manuellen
Achsteilung (Tick-Marken ) mit zugehoriger Beschriftung eingefuhrt, Die aktuelle Achs-Einstel-
lung wird mit gca im set-Befehl ubernommen und mit den Eigenschaften ytick, yticklabel eine
neue Unterteilung und Beschriftung der y-Achse (bzw. x-Achse) gesetzt, Dartiber hinaus wird
eine zweifach auftretende Befehlsfolge einmalig als String func formuliert und sparer mit den
aktuellen GroBen unter eval ausgewertet, vgl. Programm Freq_G. min [59].
%---- Programm Freq_G.m
%---- Amplituden- uud Phasen-Frequenzgang fur unterschiedliche Dampfungs',.'erte
om_O=lO.O; % Eigenkl:eisfreq. [rad/s]
q =1.0; % bezogene Erregerampl. [m/SA 2]
eta=linspace(0.O,2,200); % bezogene Erregerfrequenz
D=[O.0125 0.025 0.075 0.15]; % DampfungsIVerte
%---- Stringaasdruck far Achsmanipalation, spcitar mit eval aasgewertat
func='axis(xa); set {gca,xyt,skalal ; set (gca,xylab, skalal 'i
%---- Aasgabadaten and Linastyle
for 1=1:4, Dl(I)=sprintf!'%s %8,4f' ,'D=',D(IJ l;and , Aasgabe-Cell-Array
farblin={'r--';'g:';'b-.';'k'}; % Linestyle in Cell-Array
figure('name' ,'Amp/Ph' ,'NamberTitle', 'off' 1 % Amplitaden, Phase
elf;
for ii=l: length (DJ % Seh lei fe liber Dampfungswerte
C=q/oNLO"2./sqrt(ll.O-eta."2) ,A2+4.0*D(ii)A2*eta.A2Ji % Amplitade
fsi=atan2(2.0+D(ii) *eta,I.O-eta."2);
subplot (2, 1, 1)
plot(eta,C,farblin[ii)J, hold on
if ii=-length(D)
ylabel ('i'<.mpliude C [ro]')
title(',~plitadengang')
legend(Dlll:4},2)
grid, hold off
xa=[O et a t erid) 0 O.~l;
skala=O:O.2:eta(end) ;
xyt='xtick'; xylab='xticklabel';
eval (fane) ;end
sabplot (2,1,2), hold on
% Prra se
% Amplitadenfrequenzgang
% Amplituden-Plot
'I; Beschriftang im letzten Durchlaaf
% Beschriftang y-Achse
% Bild-Titel
% Legende, links angeordn.
% Ras t.e r
% neae Acllsdaten In tunc
% Skalenvektor
% aktaelle inderung
% Stringau3wertung
plot(@ts,Psi"d80/pi,fsrblin{ii}), hold on % Phs3@n-Plot
if ii==length(D) % Beschriftang im letzt@n Durchlauf
% Phasenfrequenzgang
xlabel('Erregerfrequenz \eta [-I')
ylab@l('Phas@ \Psi [grad]')
title('Phasengang')
L=axis; xa=[L(1:21 -20 L(4)];
skala = -20:45:L(4);
xyt=' yt.ick'; xi"lab='yticklabel';
e"al(fanc)
legend(Dl(1:4},2)
text(1.5,80,'Phasangang' )
% Beschriftung x-Achse
% Beschriftung j-Achsa
% Bild-Iitel
% Daten aus autom" _o,chsbest.
% Skalenvektor
% aktuelle Anderung
% Stringauswertung
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 44/80
44 1 E infiihrung in MATLABf<'
end
grid, hold off
end
Arnplitudenqanq
0.4rr=====:;------;-T--,--------,----;-,---i- - D~ 0.0125 1 \------- D~ 0.0250 - - - - - - : - - - - - - - I y - - - - + - - - - -- - - D~ 0.0750 ' , ,
-- D~ 0.1500 - - - - - - : - - - - - - U t - - - - - ~ - - - - - -: F ' \ 'r _ 7 : : ~ T
oo~~0~2==0~.4===0~.6~=oi.8===r==~I~.2~~1~.4===1.b6==d1.=8==J
u
IO.3
Phasengang" I I I ,
I I I I I I I
I;~~-_-~~:.~~~~: : : : L : : : : i r ~ ~ : ~ ~ : - : r : ~ - : ~ : - : ~ : ( : - : J: 70 -- D~ 0.1500: :: Ph~ senganiJ_ :
~ 25 - - - - - - ; - - - - i ~ J : ~ - - - ; ~ } j : : : : : : ] : : : : : : ; : : : : : : : ~ : : : - : : ~ - : : : : : ;_2oL_~L-~--~--~--~--_L---L---L---L--~
o 0.2 0.4 0.6 0.8 1.2 1.4 1.6 1.8
Erregetfrequenz '1 [-[
Bild 1.9: Beispiel: Amplituden- und Phasengang zum Einmassenschwinger
1.4.2.3 Erganzcnde Grafik-Befchle
Neben dem Linienstil (Line Style), u. a. die Linienstarke (Line Width), lassen sich weitere Eigen-
schaften wie Farbe, Markengrolse, Beschriftungsgrofe, Schriftart usw. manuell einstellen. Die
Syntax derartiger Befehle, hier zunachst am plot Befehl gezeigt, haben die Struktur:
plot (xL, y l , LineSpec, ... ), bzw. plot ( ... ,'PropertyName',PropertyValue, ... ).
... Handhabung einiger Linien- und Marker-Spezifikationen.
figure (2)
plot(t,sin(2*t),'-mo', ...
'LineWidth',2, ...
']v]arkerEdgeColor' ,'k' , ...
'MarkerFaceColor' , [ .49 1 .53 L ...
'HarkerSize',121
l> Einstellungen von Text-Eigenschaften:Mit' FontS ize' ,grQf3e ist die Schriftgrobe, mit' FontliJeight' ,'stiirke' die Schriftstarke
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 45/80
1.4 Grafik 45
und mit' Color' .farbe die Beschriftungsfarbe, z. B.
»text (10,0.8, 'Test' ,'Color' ,'r' ,'FontSize' ,15)
einstellbar, Angewendet auf die Achsbeschriftung folgt
»xlabel('Zeit' ,'fontSize' ,16,'FontWeight' ,'bold')
Einige Linienspezifikationen (LioeSpec) und die Standardfarben, mit denen Mischfarben
z. B. [0.49 10.63] abgeleitet werden konnen, sind in der folgender Tabelle zusammengestellt:
Linlen-, Marker-Spezifikationen und Farben
PropertyName Property Val ue Color (Grundfarben)
LineStyle { - } I - I '< I : .1none [1.10] y yellow
LineWidth { 0.5 I. 1, ... [ 1 ( ) L 1 m magenta
Color '1 '''1 .• . , [ 0.50.20.4 ], ,. [01 1 ] c cyan
Marker +101*1.1<1, ... [ I 00 r red
MarkerSize ... ,2, ... [010 g green
MarkerFaceColor 'm', ...~ [0.50.10], ... [001 b blue
MarkerEdgeCoior 'b', ...• [ 1 1 0.5], ... [ I l L 1 w white
FOl1tWight light I {normal} I demi Ibold [000 1 k black
FontSize ...15 I, . ..1{I O} I, ... 1121, ... [0.10.80.1 J Mischfarbe
Sind mehrere Grafen gleichzeitig zu modifizieren, dann sind einerseits die Bigenschaften
LineSty leOrder und ColorOrder usw,und andererseits die bekannten Eigenschaften, wie
LineWid.th,. Color im Zusammenhang mit Cell Arrays zu verwenden,was die foigenden An-
weisungen verdeutlichen:
h=plot(t,sin(t),t,sin(t-pi/2) ,t,sin(t-pi));
% oder: h=plot(t, [sin(t);sin(t-pi/2); sin t t=pij t j ,
set (h, 'LineWidth' , 2, {,LineSty Le ' }, {' --' i ' : r i ' - _ ' } )
.% oder set (h, 'LinelrJidth' s 2), set (gca, 'LineStyleOrder, r -- I : I - . ' )
set (h, (' Color' r . ( ' r';'g' ; 'b' })% oder set (gca, 'ColorOrder', [1 0 0; 0 0 1; .7 .7 .7])
Die Grafen der letzten Plot-Anweisungen, siehe auch D2p_1 .min [59J, sind in BUd 1.10
wiedergegeben.
Mit den oben angegeben Eigenschaften konnen nun die Plot-Anweisungen in Bild 1_8durch
den line Befehl ersetzt werden. line ist Kind-Objekt zum Axes-Objekt (Parent) 1m Gegensatz
zum plot Befehl bleibt beim line Befehl das Grafik-Fenster offen, hold on kann entfallen, vgl.
auch E'lot_Expl .min [59]. Ein folgender lineBefehl loscht also nicht den vorhandenen Tnhalt.
Dementsprechend lautet die Befehlsfolge des Beispiels aus Bild 1.8:
• High-Level-Befehlsfolge:
t=Qpi/20:2*pi; % Zeitfolge
line (t, sin (t) ,'Color' ,'r' ,'LineStyle' ,'-.' ,'MarkE"r' ,',*')
line(t,sin(t-pi/2),'Color','m','LineStyle','--','Marker', '0')
line (t, sin (t-pi),' Color',' b',' LineStyle',' :', '["larker',' s')
• Low-Level Befehl: (strenge Reihenfolge 'Propertytvame', Propertyvaluet
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 46/80
46 1 Einfiihrung in MATLABf< '
1--7----..,~--I ,
rr
0_6 ",,I
,0)\.
- .- .
-0.5
3 4
Bild 1.10: Beispiele zur Linienspezi fikation
line (' XData' ,t,' Ydata' , sin (t) , 'Color' s
, LineStyle' , , -. ' , ,Marker' I ' *' )1 0 0 L ...usw.
Grafik in Grafik: Weiterhin soli gezeigt werden, wie sich Beschriftungen auberhalb eines
Grafik-Fensters anbringen lassen. Dies Iasst sich auch als Grafik in einer Grafik - siehe Ab-
schn. 8.6.2 Bild 8.43 - interpretieren,wobei im Gegensatz zu hier mit 'Visible' , 'on' , 'Box' , 'on'
die Achsen einzublenden sind.
figure (1)I elf
h = axes('Position', [001 IJ,'Visible','off'); % Def. 1. Achssystem
axes('Position',[.35.1 .6.8)) % DeL 2. Achssystem
% 1st aktlv
t = 0:900;
plot(t,0.25*exp(-O.005*t))
% Zeitvektor
% Plot der Funktion
% Textfeld erstellen und im ursprtinglichen Fenster positionieren.
str(l) ('Plot der Funktion:' I; % oder: str{ll='Plot der Funktion';
str(2) I ' y = A{\iteIA{-\alpha(\ittl 1 ' 1 ;
str(3) {'Paramete;:-:'}: % str ist Cell Arr ay
str(3) {' A = 0.25' J;
str (4) {' \alpha " .005'};
str(5) {' t = 0:900'};
set (gcf,'CurrentAxes' ,h)
text(.025, .5,str,'FontSize' (12)
% 1. Achssyst. aktiv
% Text einbringen
1.4.2.4 Interaktive Plot-Erstelhmg und .Tuning
Alternativ zur Erstellung und Bearbeitung von 2D- und 3D·Grafiken mit Plot-Befehlen bietet
MATLAB7 interaktive Moglichkeiten insbesondere zur Anderung/Erganzung - Feintuning - er-
zeugter Grafiken uber entsprechende Fenster mit speziellen Plot-Eigenschaften. Einzelne sind
mit dem Edit- und/oder View-Button in der Menu-Leiste des Figure-Fensters zu finden, alle wer-
den mit plottools on/off tiber das Command Window oder tiber den Button show und Hide
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 47/80
1.4 Grafik 47
D.2
D2i,----_~-_-____
P[ot cer r : unkti 0 ItY = A . e " [ ) ' . t
A = 025
"'" .005t" 0:900
015
0,1
Bill! 1 , 1 1 : Text auferhalb der Grafik, bzw, Grafik in Graf k
Plot Tools, wie in BUd L12, ein/aus-geblendet. Die Fenster-Layouts ab MATLAB 7 sind ge-
geniiber den Vorgangerversionen neu gestaltet, neue Features sind hinzugekommen. Die meis-
ten Eigenschaften sind bereits in den Vorgangerversionen enthalten. Wir wollen stichwortartig
eine Plot-Erzeugung und Gestaltung unter MATLAB 7 vornehmen. Dabei soli in einem Subplot-
Fenster die Ausgangsgrafik, in einem zweiten die neu gestaltete und verfeinerte Grafik angeord-
net werden.
Eine mogliche Vorgehensweise:
1. Erzeugung der Plot-Daten im Command Window und offnen des Grafikfensters:
»t=(O:O_1:2)*pi; y=sin(t); yl=O_5*y; figure
2, Aufbau der Plot-Umgebung: Offnen der Fenster E'igurePalette; Plot Browae r :
Property Edi tor im View-MenU des Pigure-Fensters oder mit dem Button Show
Plot Tools; siehe Bild 1 . 12_
3. Grafikfenster einrichten: Im Fenster Figure Pa Lett.e zNewSubplot ist das Symbol
fur 2D Subplot auszuwahlen, irn daraufhin geoffneten Matrixfenster ist mit dern Mauszeiger
und linker Maustaste die gewunschte Struktur einzufarben und die Taste wieder frei zugeben.
4. Grafik-Erstellung: In Figure Palette/Variables die drei Vektoren t, y I yl aus-
wahlen (linke Maustaste + Shift/Strg). Shortcut-Menu mit rechter Maustaste offnen (Zeiger
aufHl), Darstellung auswahlen: Plot as two series against t. Es folgt die Gra-
fikerstellung, wobei der aktive Graf durch Marken gekennzeichnet ist und der Proper-
tyEditor im zugehorigen Mode Lineseries eingeblendet wird. Bezeichnungen und
Graf-Bigenschaften konnen hinzugefugt oder geandert werden. Entsprechend konnen wir
den Property Editor-Figure/Axes mit der Mauszeigerposition im Figure- (grau)
bzw. Plot-(weiB) Fenster und anschlie.Bendem Klick einblenden und die Eigenschaftennut-
zen. TmPlot Browser erscheinen die Bezeichnungen der dargestellten Vektoren, die zu-
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 48/80
48 1 Einfiihrung in MATLABf< '
iOdt 'llIeW .in;;03rt io~~ l)~ktopVl,I"Id:!w He'D IIHlde'PI5t Took f
[J '"" iii@ W I ~ E l . ( ') ~ / ~ 0 ~ Ll'!!! l 'h=""To.,1
~ : : ~ ' E B ' I D " o < ' : : 1 : ~ ~ "l . . . ,. . . S C t A Y . ! ? ; i ; S3~ -;;::: V ~
,0
, ,
1 > : "
1<21
-1].5
. . . Ann:t :dorJ :! i
"Lin;.
",::r,ltO~~
'[toiJJlE:Artow
'Te;(lA~r:!W
E li Propc:ny Inspector ~@~
~..r.te tru f),'li,je
:--- . . . ,. . . .ertHardC>:!Pl '
:" kj::1Pr;:,=,~cn
:··-Minre
i ~;(iP,bI
( f'.rlrir;m",
I.t]A)(eS(r'I0mle)
[;;]-B-0A~:;:(nQlillE)
0-'(
~ -0- 'f_1
~ 8 00 ....... ~y rc "uIr1~cr I mne pro , .: : .BrtJe: :..
I b:p:rl S€rop...
Bild 1.12: Plot-Umgebung zur interaktiven Grafikgestaltung linter MATLAB 7
gehorigen Grafen lassen sich aus- und einblenden, Zur Aktivierung der Grafen muss clef
Mauszeiger auf einen Punkt des Grafen gebracht und die linke Maustaste betatigt werden,
die zugehorigen Fenster offnen sich. Urn die Grafen ebenfalls im unteren Fenster darzustel-
len, wird dieses aktiviert und die obige Vorgehensweise wiederholt.
5. Eigenleistung: Entsprechend Bild 1.12 ist die Grafik zu erganzen. Hinweis: Die Legende
wird tiber den Button Insert Legend oder das Short-Cut-Menu (Mauszeiger im Plot-
Feld/rechte Maustaste) eingeblendet und mit einem Mausklick aktiviert,
6. M-Code-Erzeugung: Es kann der Code bezuglich der Figure (gesamtes Bild) oder/undder Subplots erzeugt werden. Den jeweiligen Code erhalt man tiber das zugehorige Short-
Cut-Menu mit dem Menu-Punkt ShowM-Code, tiber File-Button/Generate M-File
oder dem Kommandozeilenbefehl makemcode. Es wird die Function mit Zell-Struktur
cr e at.e fi.qu r-e ( ... ) oder createaxes ( ... ) erstellt und im Editor angezeigt.
7. Dieser Code kann einerseits zum Siudium der Grafik-Befehle und andererseits W Integra-
tion ins eigene M-File herangezogen werden, wie in plot urn.m aus [59J gezeigt.
Weitere Information sind u. a. dem Video-Demo zu entnehmen; siehe unter:
HelpBrowser!Dernos-Button/NewFeaturesinVersion7!Graphics
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 49/80
1.4.3 3D-Grafik
1.4 Grafik 49
Die Darstellungsmoglichkeiten dreidimensionaler Zusammenhange reichen von einfachen Li-
nien- bzw. Punkt-Plots bis hin zu ausgeleuchteten, realitatsnahen Objekten. Wir konnen nur auf
einen sehr kleinen Anwendungsbereich eingehen, wofur einige Betehle angegeben und erlautertwerden. Einen Befehlsiiherblick und Details erhalt man mit
=} hell) graph3d und help hegrijf
Daruber hinaus bietet die Online-Hilfe eine ausfllhrliche Beschreibung (einschlielllich vieler Bei-
spiele), insbesondere im Zusammenhang mit der Such-Option (search) im Help Browser z, B. fur
die hier autgefiihrten Befehlen, Einige werden naher erlautert:
3D Plot-Befehle
plot3 (x, )~ Z ( , plotstil ) )
comet3 (x, » z (, komet-Iunge ) )mesh (x, y , Z (,jarbe)
surf ( x, y, Z (, farbe ) )
surfc (x, }~ Z (,farbe)
patch (x, y (, z) ,.larhe)
waterfall (x, y , z )
contour'S (x, y, Z (, v) )
contour (x, y , z (, v J )
3D-Linien-Plot z.B. Parameterdarstellung einer Funkt.
3D~Animalion einer Trajektorie3D~Gitter-Plot, Drahtrnodell expl. Funkt.: z = f ( x , y )
3D-FHi.che~Plot, siehe auch surfl mit Ausleuchtung
wie surf + Hohenlinien
2D~, 3D~FHiche~Plot, vgl. auch fill, fill3
3D~WasserfaU~Plot
3D-Plot von Hohenlinien
2D~Plot von Hohenlinien
[X, Y] =meshgrid (x, y)
box ( on I ofl ;
view (nz, el)
zlabel (string)
Koordinarenrnatrizen fur Schnitrpunkte in der x, y-Ebene
Box ein- bzw, ausblenden
Blickwinkel: Perspektive andern, Azimut-, Elevation-L
z-Achsen-Beschriftung, + xlabel, ylabel
• plot3: Es konnen Linien mit/ohne Marken in einem 3D~Raum dargestellt werden (vgl. plot).
Z.B. von Funktionen in Parameterdarstellung: x ( t ) =j l ( t ) , y ( t ) =( t ) , z ( t ) =f I ( t ) mit
dem Kurven-Parameter taus tmin S; t S; tmax. Beispiel- vgl. Plot_Exp _min [ 'n - :»t = Iinspace (-5, 5, 2001) ; % oder t=-5: 0.005: 5;
> > x= (1+t . A 2) . -sin (20 -t);
> > Y = (1+t . A2) . *cos (2O*t) ;
» z =exp (t) ;
> > ploL~ ( x r y, Z f ' • - r' )
• mesh: Gitterdarstellung einer expliziten Funktionen z=(x , y ) zweier Variablen, z.B.
z =y cos 2 (2nx) wie im 1. Beispiel S. 52:
»mesh(X, Y, Z); % C_farbe==Z, vgl. Programmcode des 1. Beispiels
Die Matrizen x und Y ergeben sich aus dem Wertebereich von x, y, wobei in X zeilenweise
der Vektor x und in Y spaltenweise der y-Vektor mehrfach angeordnet ist, Diese werden
mit
» [X, Y] =meshgrid (x, y)
erzeugt. Paarweise beschreiben die x-, Y-Elernente einen Punkt der X-, y-Basisebene, so
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 50/80
50 1 Einfiihrung in MATLABf<'
dass
> > Z =Y • * cos ( 2 * p i *X) • ~ 2
die zugehorigen z-Werte ergibt, Wird _ wie oben _ keine Farbmatrix C_farbe vorgege-
ben, so ist C_farbe =z. Die Farbstufung kann wie in surf u. a. durch colnrmap (name)
und/oder caxis beeinflusst werden .
... Beispiel eines 3D-Linien-Plots: Die erzwungenen Schwingungen des Einmassen-Schwingers
nach Beispiel S. 42
x (t ) =Cco s(Q t- IJ I) , x(t) =QCsin( .Qt- lJI)
sind im Bewegungsraum (t,x,x) darzustellen. Zusatzlich sind die Projektionen jeweils in die
(t , x)-, (t, i)-Ebene sowie in die Phasenebene (x, .r) aufzunehmen, siehe Bild 1.13. Wir setzen im
Programm Freq_G. mvon S. 43 fort:
% ---- Oac:stellung lm Bewegungsraum, 3D-Plot
eta_O=l.O; % bezogene Frequenz
Omega=eta_O*om_O; % Erregerkrelsfrequenz
t=linspace(O,4*pi/Omega) % Zeitvektor
C=q/om_OA2. /sqrt ((1.O-eta_OA2) A2+4. O*D (l) A2'eta_OA2); % Amplitude
Psi=atan2(2.0*O(1)*eta_O,1.O-eta_O'21;
x=C*cos(Omega*t-Psi);
% Phase
- " t : : : Losung x(t)
- " ' t l ; Losung xp(tl
figure ('name' ,'3D')
plot3(t,x,xp,'r','linewidth',3), hold 00
plot3(t,x,1.2*min(xp) *ones(size(t)) ,'k')
% B@TJ!l@gungsl_'aurn
% Projektion in (t,xp)-Ebene
plotJ(t,1.2*max(xl*ones(size("l:I),xp,'k') % PLojektion in ("I:,x)-Ebeneplot3(t.O,x,xp,'b') % Phasenebene xp(xl
axis([t(l), t(eod),1.2*[min(x) max t x r }, 1.2*[min(xp) max(xp)JJ)
box on
xlabel<'Zeit'); zlabel('xp'l; ylabel('x')
"Vie'",28, 42)
% Rahmen eingeblendet
% Achs-Beschriftung
% Blickwinkel
... Beispiel: Mit dem mesh- und surf Befehl lassen sich auch Elementgrofsen einer Matrix
v isualisieren : z. B . fu r d ie Matrix M
»mesh (M); oder »surf (M) , ' FaceColor' , " v : ' r ' EdgeColor' , r k ' ) ;
In Bild 1.14 sind die Massen- und Steifigkcitsmatrix eines federnd gelagerten Balkens mit mittigbesetzter Einzelrnasse, die sich deutlich abhebt, mit dem mesh Befehl ausgewertet.
Fldchen-Plnt: Des Weiteren geben WiT eine Kurzbeschreibung einiger Darstellungsmoglich-
keiten fur farbige Oherflachen-Grafik-Objekte, die sich insbesondere zur Animation eignen, an.
Dabei unterscheiden wir die High-Levet-Svniss; bei deru. a. die Farbanlagen weitgehend autorna-
tisiert sind und die Low-Level-Syntax, bei der die Eigenschaften stets durch Property Name,
P ropert y Val ue paarweise festgeschrieben werden .
• patch: Grafikfunktionen zur Darstellung einer oder mehrerer 2D- und 3D-Polygonzligen.
Die umschlossenen Flachen werden farbig angelegt und ausgeleuchtet (Coloring, Lighting).
Anwendungen: Pachwerkstrukturen, Linienmodelle (Flugzeug, Autornobil). Beispiele sind
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 51/80
1.4 Grafik 51
Zeit
Bild 1.13: Beispiel: Schwingungs-Darstellung im Bewegungsraum mit Projektionen in die Unterraume
8
6
2
~ . -
;--~20
~ 10
o a
Oi
-"'4
2
o
E 0z
- 2
o a
Bild 1.14: Matrix- Visualisierung
in Patch_Exp.m in [59] programrniert,
Syntax (Eigenschaften unter search --+ patch im Help Browser)- High-Level: patch (x_koordt y_koordt c_farbel, 20-Plot
patch (X, Y, Z,C_farber -weitere Eigenschaften-) 3D-Plot,
X, Y, Z Matrizen der Koordinaten, C_farbe Matrix der Farbanlagen
- Low-Level: patch (' XData' , X,' YData' , Y,' ZData' ,Z, I CData' ,C_farbe)
.. Beispiel einer 2D-DreiecksfHiche, vgl. Patch_Exp. rn und lin_ani_2 .min [?]:
»patch([O 0.25 -0.25 0], [0 -0.5 -0.5 0], [00.7 OJ};
Bemerkung: fill ist ebenfalls ein 20- und fi1l3 ein 3D-Patch-Objekt.
• surf: Oberflachenobjekte zweidimensionaler Funktionen in Gitterstruktur (Drahtrnodell)
mit farbigen Flachenelementen. Es werden die Punkte mit den Koordinaten der Matrizen
x, Y, z, erstellt mit mesh, grafisch dargestellt und die umschlossenen Flachenelemente far-
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 52/80
52 1 Einfiihrung in MATLABf< '
big angelegt und u. a. ausgeleuchtet, siehe auch surll Befehl,
Syntax
-High-Level: surf (X, Y, Z, C_farbel
- Low-Level: surf('XData', x, 'YData', Y, , ZData', z,' CData', [J , .0.
, FaceColor' I 'red' I -wei tere Eigenschaften-)
surf Daten X, Y, Z konnen in patch Daten Xp konvertiert werden, z. B.:
> > Xp=urf2patch (X I Y, Z) ; % Xp Structure
»patch (Xp, 'FaceColor' , [I 0.2 0.2],' EdgeColor' , , k' ) ;
Jedes Element von C_farbe entspricht einem Parbwert, del' als Index fur eine Farbtabelle
verwendet wird, Der grolite und kleinste Eintrag von C_Jarhe wird autornatisch auf den obersten
b zw . unte rs te n Tabe lle ne in tra g s ka lie rt. Die Skalierung der Faroe kann mit caxis ( fa rbe_mi n,
farbe_max) testgelegt werden. Mit colormap neuejarbtabelle wird eine neue Farbtabelle ak-
tiviert. Flir z : B. C_farbe=Z passt sich die Farbgebung an die Visualisierungsdaten an. Verfor-rnungs-, Spannungs-, Temperatur-Anderungen usw, werden sichtbar, Weitere Hinweise in den
folgenden P ro grammen s ow ie am Anschluss damn.
.... I. Beispiel: 3D-Darstellungen mit mesh, surf, waterfall, contour3; siehe [59]
% - - - - D3p_1. m
x=O:O.025:1; y=-1:0.2:1;
[X, Y]=meshgrid(x,y);
Z=Y. *cos (2*pi*X) .A2i
figure (1), elf
subplot (221)mesh(X,Y,Zj
view (40,45)
grid off
s1Jbplot(222)
surf(X, i, Z,'MeshStyle', 'row' II % 3D-Fl~ehen-Plot
view(-40,30); % Perspektive
box on % 3D-Box einblenden
% Koordinatenmatrizen
% Z-Koordinate, vgl. griddata
% 3D-Gitter-Plot
.subplot(223)
itJaterfall(X, Y, Z)
view(-60,30);
.subplot(224)contour3(X,Y,Z)
% 3D-Wasser fall-Plot
% 3D-Hohenlinien-Plot
.... 2. Beispiel: 3D-Grafikgestaltung mit surf; vgl. [59}
% ---- D3p_2.m
t = O:pi/lO:2*:pi; % Zeitvektor
[X,Y,ZJ = cylinder(O.5*t.*eos(tj); % Zylinderdaten
figure (1)
elf reset
.subploc(2,2,1) % 1. Grafik
% colormap hot % Rot-/Gelb-Tone
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 53/80
1 -1
1 -1
1.4 Grafik 53
-1 0
--1
-1 0
Bild 1.15. Beispiele dreidimens ionaler Graft kvari anten
% colormap cool % Elaut6ne
% colormap(hsv{128))
surfc(X,Y,Z,'MeshStyle'.'row')
subplot(2,2,2)%
2. Grafiksurf(X,Y,Z,O.6*ooes(s~ze(Z)) )
c axis t I O II);
colorbar
subplot(2,2,3)
% Farblegende einblenden
% 3. Gz a f z.k
surf (X,Y,Z,'EdgeColor' , r interp' ,'E'aceColor' r [0.7 0.7 0.71)
subplot(2,2,4) % 4. Grafik
surf(X,Y,Z,'FaceLightiog' ,'phong', ...
'EdgeColor' ,'oooe' ,'AmbientStrength' ,0.25)
caxis([-11.2511;
colorbar
light ('Position', [-2,2,10])lighting phoog
% Lichtposition x, y, z
Auf die Farbgebung lind Ausleuchtung iIn2. Beispiel S. 52 wollen wir noch eingehen. Hierzu
gehoren die Farboperationen (Color Operations)
caxis I colormap I colorbar
Die Colormaps (siehe Kommentarzeilen im Programmcode sowie gray, flag, spring IlSW.)
Iegen eine Farbtabelle mit vorgegebenen Farbtonen - u. a. aus rot (R), grun (G), blau (B) - fest;
vgl. Colorbar (Farblegende) in Bild 1.16. Diesen einzelnen Farbtonen sind Farbwerte zugeordnet,
deren kleinster und grtiJ3ter Wert automatisch auf C_farbe (Farbmatrix) bezogen wird, Die
Extremwerte der Farbtabelle konnen mit
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 54/80
54 1 Einfiihrung in MATLABf< '
05
0.5••.
0.5 " · t ' · ,.
, 2I ."
5
o5
o n
5
-5 -5
Bild 1.16: Beispiele zur dreidimensionalen Grafikgestaltung
caxis (farbe_min, farbe_max)
nell skaliert werden, so dass nur ein Ausschnitt aus der Colormap zur Objekteinfarbung dient; vgL
Programmeode und Bild 1.16 zu Beispiel 2. Dadureh wird im 1.Bild von Bild 1.16 die gesamte
Farbpalette auf die Objekt-Hohe (z-Werte) bezogen. Im. 2, Bild is t die Farbtabelle durch [0, 1]
begrenzt und tiber C_farbe =0,6 ein Gelbton ausgewahlt. Im 3. Bild ist eine eigens kreierte
Facecolor umgesetzt, die Colonnap bezieht sieh nUT auf das Gitternetz (Edge Colo r), 1m 4. Bild
wird ein Ausschnitt der neu skalierten Colormap verwendet, das Gitternetz ist ausgeblendet,
Ein weiterer optischer Effekt wird durch die Ausleuchtung (Lighting), wie im 4, Bild von
Bild 1.16 und ill Patch_Exp.m aus [59].,erreicht; z. B. mit:
camlight
light
Lichtposition
Lichtrichtung
hier: x-Richtung
Lichtposition inspharisehe Koordinaten
Ausleuchtungsart
Materialreflektion
l.ightangle
lighting
material
headlight, right, left
light ( , Posit ion',[1 0 OJ , ' , .
{
'local',Sty Ie' , ,. f' , ,
In lnlte
lightangle (a z, e1 )
flat, gouraud, phong, none
shiny, dull, metal
Dariiber hinaus stehen viele Eigenschaften ftir Lichteffekte wie z. B.
AmbientLightColor IOiffuseStrength IFaceLighting IEdgeLigh ting
BackFaceLightingI FaceColor ledgeColor ...
zur Verfiigung. Deren Beschreibungen sind dem HTML-Dokument im Help Browser zu entneh-
men, In den hier behandelten Beispielen, insbesondere im Zusammenhang mit der Animation
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 55/80
1 .5 Animation von 2D-und 3D-Modellen 55
von Objekten, sind einige Befehle in den Programmcodes in [59] enthalten, so dass hiermit die
Auswirkungen auf die Grafiken unmittelbar am Rechner nachvollziehbar sind.
Sollen die Objekte transparent sein, dann benotigt man die Eigenschaften transparency mit
a l ph a j a l ph a m a pl a li m
surf(X,Y,Z)
alpha('color') % color-C_farbe
Z.B.
siehe auch Pa t ch _Exp. m in [59].
1.5 Animation von 2n- und 3D-Modellen
Der Informationsgehalt einer auf dern Bildschirm dargestellten Bewegung u. n. bezliglich der
Kinematik, z. B. bei kompIexen Getrieben oder ZUI Klarung von Schwingungserscheinungen,
ubertrifft vielfach den eines einfachen Linien-Plots zur Ergebnisdarstellung. Die Visualisierung
von Bewegungs ab la uf en , d ie Animation, ist h eu te , e rmo glic ht d urc h d ie s te tig ste ig en de Rechner-
leistung, ein wesentliches Hilfsrnittel zur Veranschaulichung einfacher und komplexer Vorgange.
Modell-Optimierungen lassen sich anschaulich und schnell durchfilhren. In dieser Einfuhrung
werden wesentliche Elemente zur Animation unter MATLAB zusammenstellt, auf einfache Bei-
spiele angewendet und in spateren Kapiteln vertieft.
1.5.1 Modellerstellung
MATLAB stellt eine Vielzahl von Moglichkeiten zur Darstellung von 2D- und 3D-Grafikobjekten
zur Verfugung; einige sind in den vorangegangenen Abschnitten genannt. Darnber hinaus ver-
feinert die Farbanlage und die Ausleuchtung der Modelle die Animations-Grafik. Wir konnten
bisher nur einige Eigenschaften anfuhren, Weitere Ansatzpunkte liefern die Beispiel-Programme
lin_ani_l.m, lin_ani_2.m, zyl_l.m, zyl_3DH.m (zyl_3D.m)
DrehSchw. m, QuerSchw_l/ 2/ . m Demo-Programme zu Kapitel 3
mit ihren zugehorigen Functions aus [59]. Die dart verwendeten Eigenschaften (Properties) las-
sen sich bequern mit der Online-Hilfe interpretieren und vervollstandigen. Folgende Built-In
Functions eignen sich zur Animation:
2D-Modelle (Linien, FUichen):
plot I line I patch I fill
patch, fill fur farbig angelegte Flachen
3D-Modelle (Oberflachen):
patch I fiU3 I surf I surf
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 56/80
56 1 Einfiihrung in MATLABf< '
1.5.2 Animations-Grafik
MATLA8 unterstutzt zwei Vorgehensweisen zur Generierung einer Animations-Grafik, einer
Bildfolge:
I. Eraselvlode-Methode: kontinuierliches Loschen und Erstellen der Grafik-Objekte auf demBildschirm mit unterschiedlichen Eigenschaften bezuglich des Losch- und Schreibvorgan-
ges,
2. Filmerstellung (Movie): Speichern einer Folge von Grafik-Objekten und anschliefendes
Abspielen des Films mit der Built-In Function movie.
Die EraseMode- Methode eignet sich insbesondere fur lange Sequenzen einfacher Plots. Die Zeit
des Frame-Aufbaus und die Bildqualitat hangen vorn EraseMode
{normal} I nonelxor I background
ab. Wir geben einige Eigenschaften an:
• {no rma 1 }: Berechnet und zeichnet jedes Grafik-Objekt neu, dadurch grafisch hochwerti-
ge aber lang same Wiedergabe.
• none: Uberschreibt das vorhandene Grafik-Objekt; es wird alles ubereinander gezeichnet.
Das Bild kann nicht gedruckt werden, da keinerlei Information gespeiehert wird.
• x o r :Zeichnet und loscht pixelweise die Bildanderungen unter Einbezug der Exklusiv-Oder-
Logik (xor). D. h. nUTVeranderungen werden neu dargestellt, dies ergibt einen sehr schnel-
len Bildschirmaufbau al1erdings mit Qualitatsverlusten insbesondere bezuglich del' Farbe.
• background: Hiniergrundobjekte werden iiberschrieben, sie verschwinden auf dem Bild-
schinn.
FUr eine Animation sind im Allgemeinen nUTdie Modi normal und xo r geeignet. Werden die
Grafik-Ohjekte aufwendiger, dann kann del' Zeitschritt fur die Berechnung und Darstellung sehr
grof werden; wir erhalten keinen tlussigen Bewegungsablauf. In diesem Fall werden Einzelbilder
(Frames) mit
M ( k ) = getframe k = 1, 2, ...
erzeugt, auf dem Bildschirm ausgegeben und in dem. Structure M gespeichert. Mit moyie (M)
konnen his zu 12 Frames pro Sekunde, vorausgesetzt der Rechner ist schnell genug, auf dem
Bildschirm gebracht werden,
Syntax
1. movie(M(, n, fps l )2. movie (h, M, n , fps, lac)
zu 1:movie (M) spielt den Film (Frames von M) zweimal ab, wobei der erste Durchgang als Vor -
lauf bezeichnet werden konnte. Dies ist abweichend von der MATLAB-Beschreibung, wonach ein
Durchlauf stattfinden sollte. Optionen: (n+ 1) 7 (einschliefllich eines Vorlaufes) Abspielungen,
fps Frames pro Sekunde, maximal 12.
zu 2: movie (fign, M, [J, [J, [0.1 0.1 0 01): Film wird in fign=figure( ... ) ab-
gespielt mit der Position der unteren linken Ecke (0. 1 O. 1 ) ; die heiden letzten Positionen
sind ohne Bedeutung. Optionen n , fps wie unter 1.
7 Widerspruch zur MATLAB-Angabe
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 57/80
1 .5 Animation von 2D-und 3D-Modellen 57
AnhamL einfacher Beispiele sollen beide Methoden erlautert werden,
1.5.3 2D-Animatioll einfacher Linien-Modelle
< P ( t )
4.2
Erste Schritte zur Erstellung einfacher 2D-
Animations-Linienmodelle wollen wir bei-
spielorientiert erarbeiten, Dazu Jegen wir
das in Bild skizzierte Fachwerk, welches
urn den Knoten 1 eine Schwenkbewegung
[-1r!4, n:j4] ausfuhren soll, zu Grunde,
y
1 1 1 * - + _ _ ..>i____1C~
1 2
l1.1 _ J _ 1 . 1 _ _ . j
x
Zum Linienmodell gehort die Knotenfolge (Polygonzug)
lind damit die zugehorigen Koordinatenvektoren
x=2.2, 2.2, 1.1, 2.2, 0.0, i.r)
Y= (0.0, 4.2, 1.0, 0.0, 0.0, 1.0)
der Knoten. Die Plot-Anweisung
h=plot (xd, yd, ..... ) oder h=line (xd, yd, ..... )
mitx,y --+ xd , yd zeichnet das Fachwerk in der Anfangslage. FUr die zeitliche Verdrehung um
1 setzen wir
c P = 4>max sin (2 t)
an. Die zugehorigen Knoten-Koordinaten im x.y-Systern folgen dann mit der Drehmatrix T, siehe
(2.14), zu
_ sin 4 > ]
cos 4 > •
Darnir ist die oben angegebene Plotanweisung bezuglich X'r zu jedem Zeitschritt zu wiederholen,
Dies erreichenwir mit
set(h, 'Xdata' ,x_T(l, :}, 'Ydata' ,x_T(2,:})
fur eine gewahlte Zeitfolge (II, tz, .. .), so dass ein Bewegungsablauf erzeugt wird. Die heiden
Methoden: EraseMode, Movie sind in den folgenden Programmsegmenten programmiert:
EraseMode; Programm: 1i n_an i_l .m aus [59 J
% EraseMode {normal} I none I xor I background; Standard: normal
setlh,'Erasemode','normal'); % Erasemode gesetzt
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 58/80
58 1 Einfiihrung in MATLABf< '
numframes=l 000 i
t=linepace(O,2*pi*4,num£rames) ;
for count=l:numframes,
Phi=pi/4*sin(2*t(count) );
T= [ccs (Phi) sin (Phi); -sin (Phi)x_T=T* [xdiydl i
% Anzahl Zeitschritte
% Zeitvektor
% t-Schritte
% Zeitsignal
cos(Phi)J;% Drehmatrix% gedrehte Koord.
set (h,'xdata', x_I (1,:),'ydata', x_I (2,:)); % Datenuber:gabe
dr:awnow; % Bildschirmaufbau
end;
Movie; Programm: lin_ani_l. In aus [59]
nframes=50;
t=linspace(O,pi,nframes) ;
for cQunt=l:nframes,
........ vier: Zeilen wie oben .M(count) = getfr:ame;
% Anzahl Zeitschritte
% Zeitvektor
% Frame-Erst. + Ausg.
end;
pause(0.5)
movie (M,8) i
, Zeitver:zbgerung
% Vorlauf+8 Durchl.
Weitere Elemente lassen sich in die Animations-Grafik integrieren. Wir stellen ein Lager im
Knoten 1 in Form eines Dreiecks dar:
£i11([O 0.25 -0.25 0]' [0 -0.5 -0.5 0]' [00.7 OJ);
wobei der letzte Vektor fur die gewahlte Farbe steht. fill kann auch durch patch ersetzt werden.
Zusatzlich kennzeichnen wir den Bereich der Schwenkbewegung durch ein unterlegtes Kreisseg-
rnent, Hierzu dient wieder der fill oder patch Befehl:
phi=-pi/4:pi/20:pi/4i % Winkelbereich
£i11([O 2.2*cos{phi} 0]'[0 2.2*sin(phi) O],'y','FaceAlpha',Q.5)
Die Eigenschaft FaceAlpha sorgt fiir die Transparenz des Kreissegments, Diese Anweisungen
mussen hinter der ersten Plot-Anweisung und vor der Zeitschleife stehen, vgl. 1in_ani_l .ill
aus [59]. In BiLd 1.17 ist eine Momentaufnahme der Animation dargestellt,
ObungsvorscWag: Die in Bild 1.18 skizzierte masselose Schraubenfeder wird all ihren Endendurch die Zeitfunktionen
l l [ ( t ) = 1O+5sin(15t) [LE], ur(t) =20cos(2t) [LE]
ausgelenkt. Die Feder hat 5 Windungen (w = 5), in der entspannten Lage die Lange 1 0 = 52 [LE]
und den Windungsradius von R=10 [LE]. Dabei steht LE fur Langeneinheit, mm oder em sind
realistisch,
In einer Animation ist die Federdeformation zu veranschaulichen. Dazu isr in einem ersten
Schritt die Feder zum Zeitpunkt I=, wie in Bild 1.18unten, per Plot-Anweisungen darzustellen,
im zweiten Schrit.t ist die zeitliche Verformung zu integrieren.
In [59] ist mit dem Programm fede r_ao i.lleine Uisung angegeben, in Pende l_q. mzu
Kapitel 5 ist die Feder in ein Animationsmodell eingebunden.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 59/80
1 .5 Animation von 2D- und 3D-Modellen 59
Bildl.17: Momentaufnahme der Animation mit dern einfachen Fachwerk
y
x
unverforrnte
Feder
verformte
Feder
Bild 1.18: Un- und verformte Feder mit Bezeichnur.gen
1.5_3.1 Erstellung komplexer Linien-Modelle
Fi.ir das einfache Fachwerk lieJ3 sich ein geschlossener Polygonzug erzeugen, so dass die Plot-Koordinaten einfach anzugeben waren. Ist dies nicht rnehr moglich, dann liefert die Functi-
on gplot Generierungsmoglichkeiten aus einfach zu erstellender Information, gplot erstellt x, y-
Vektoren ZUI grafischen Darstellung eines Gitternetzes mit n . Knoten nach grafentheoretischen
Gesichtspunkten, Hierzu muss in einer Boot.ssche Matrix (z.B. A) die Knotenverbingungen
des i-ten mit dem j-ten Knoten (au) einschlie.BLich des Koordinatenursprungs (aI,dund in ei-
ner weiteren zweispaltigen Matrix die x, y-Koordinaten (Langenangaben) festgeschrieben wer-
den. Diese Beschreibung ist nicht eindeutig; es worden Verbindungen mehrfach gezeichnet, was
von der Struktur der Verbindungen abhangt, In A konnen Verbindungen oder Knoten mehrfach
benannt werden. Wir wollen dies auf das bereits behandelte Fachwerk anwenden. Es sind die
Matrix der Verbindungen und die der Knoten-Koordinaten zu erstellen.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 60/80
60 1 E infiihrung in MATLABf< '
Mattix A der Verbindungen i - - - + j (eine Moglichkeit), i = j = 1 Koordinatenursprung:
Knoten-Koordinaten:
r
0.0 0.0 12.2 0.0
xl' = 2.2 4.2
1.1 1.0- -
Koordinatenursprung K noten 1 , K notenverbindung: 1 - - - + 2
keine Verbindungen 2 ___,2
Knotenverbindung: 3 - - - + 2Knotenverbindungen: 4 ___,1, 4 ___,2, 4 --4 3
Knoten I
K noten 2
Knoten 3
Knoten4
Die Plot-Daten werden nun mit
[x, y] =gplot (]l.~, xy) ; % fu r die Ausgangslagee rz eugt u nd wie zuvor mit plot grafisch ausgegeben. Einzelheiten und we ite re L os un gsa usa tz e z u
dieser Vorgehensweise sind im Programm lin_ani_2 .min [59] nachzulesen.
1.5.4 3D-Animation emes Rotorelements
Die Modellierung und Animation in 3D-Darstellung sollen an einem zylindrischen Rotormodell
gezeigt werden, Rotoren und aufgesetzte Scheiben setzen sich in der Regel aus einzelnen Zy-
linderelementen und den zugehorigen Stimflaehen zusammen, ein solches Element wollen wir
erstellen. Fur die dreidimensionalen Zylindcrelemente steht in MATLAB die Function''
[X,Y,Z] = cylinder(R,N)zur Verfugung. Fur gegebenen Radiusvektor R= [R_l i R_2] mit den beiden Stirnflachen-Radi-
en R_l, R_2 werden die Daten x, Y, Z fiir den Zylinder (R_1=R_2) oder Konus (R_l # -
R_2) der Lange eins aus NMantelflachen erstellt, Zugehoriger Code: »type cylinder. m
Zur Ubung wollen wir hier alle Zylinderdaten selber generieren. Dam legen wir das 3D-
Koordinatensystem (xu, v «, z,u) in nor-maier Orientierung nach M ATLAB (vgl. Xdir, YDir,
ZDir) zu Grunde, vgl. Bild 1.19. Die xM-Richtung soli der Zylinderlangsachse und die YM-, ZM-
y
X I< = COSek
Yk = R sinek
Bild 1.19: Orientierung des 3D-Koordinatensystems und Breite der Mantelflachen
Achsen den Querachsen der Zylinderelemente zugeordnet werden. Gedanklich fiihren wir eine
8 weitere verfugbare Madelle, sphere. rn, eLl.ipsoid. m
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 61/80
1.5 Animation von 2D-und 3D-Modellen 61
Umbenennung der Achsen, wie in Bild 1.19, in (x,)" z) durch, Wir betrachten die Erstellung
ein es Z ylin ders d er L an ge £2, der im Abstand E j auf der z-Achse nach Bild 1.19 beginnt. Der Zy-
linder besteht aus dem aufleren Mantel sowie den beiden Stirnflachen, evtl. noch mit einer Boh-
ru ng fu r ein g le ich gro.BesAn sc hLuss elemen t v ers eh en , Daru be r h in au s s oll e in e o ptisc h g un stig e
Nullmarke zur Beobachtung von Drehschwingungen festgelegt und grafische eingebracht wer-den. 1m Folgenden beschreiben wir die Vorgehensweisen fur die drei Elernente: Mantelfiache,
Stirnflachen, Null-Marke.
1.5.4.1 MantclfHichedesZylinders
Der Zyli ndermantel wird aus N Rechteckflachen der Lange 6 und der Breite 2R sin (Ae /2),
wobei R del' Zylinder-Radius und .de das Winkelinkrernent ist, erstellt, Die Orientierung der
Kreissegmente in der x, y-Ebene ist in BiLd 1.19 festgeschrieben, Die e-FoLge und die benotigten
Koordinaten generieren wir in MATLAB d urch fo lg en des Programmsegment
R=lO; 11=2; 12=12;
N=20;
theta=linspace(O,2*p~,N)i
theta=theta+pi;
Rz=[R;RJ;
xz=Rz*cos(theta) ;
yz=Rz*sin(theta) ;
zz=[11;11+121*ones(1,size(xz,2)) ;
Die grafische Darstellung erfolgt durch
cz=O.5;
surf(zz,xz,yz,cz*ones(size(xz))) ;
% Zyl.-Parameter
% Unterteilungsgrad
% N-l Winkelelemente
% neue Nu11-Lage, wegen Optik
% Radien-Vektor
% x- Koo J: di n at e n
9 , y-Koordinaten
% z-Koordinaten, [rechts; Link s]
% Farbgebung
% Zylinder-Erzeugung+Farbe
wobei c z die einheitliche Zylinderfarbung festlegt, Bild 1.20 a zeigt das bisherige Ergebnis
10··
o ·
-s
-10
1 0 · : . . . . . .
5-~··'-=-. . .----
o .<..- = - - .e-:__~---..-::' "10
-5 -.............:-..._~ __----.
-10 · - . . . . : : . 0
a: Zylindermantel
Bild 1.20: Zylinderelemente
b: Stirnflachen mit Null-Marke
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 62/80
62 1 E infiihrung in MATLABf< '
y
x
Bildl.2J: Zur Erstellung der Stirnfiache
1.5.4.2 Stirntlachen
Die Stimflache setzt sich wie in Bild 1.21 aus approximierten Kreisausschnitten (Polygonzug)
zusammen, wobei wir von einem Anschlusselement bzw, Hohlzylinder mit dem inneren Radiusr ausgehen. Der Polygonzug I, 2, 3, 4 nach Bild 1.21 beider Stirnflachen des Zylinders hat die
x-Koordinaten
mit Bk+l =k + t..e, was wir - erganzt um die y-Koordinaten - als dyadisches Produkt
rRRrr
= [ cosBk,
schreiben, N - I solcher Elemente ergeben die Stirnflachen nach Bild 1.20b, die sich mit den
folgenden MATLABAnweisungen erzeugen lassen:
r=2;
c=2;
for k=l:N-l
x=[r R R rl'*cos(theta(k:k+l));
y=[r R R r]'.sin(theta(k:k+l));
surf(zz(ll*ones(size(xl) ,x,y,c*ones(size(xll I; % Stirnfl. vorne
hold on
'i; InnEn-Radius
% Farbinformation
.% N-l Sektoren
% Stirnfl~chen-Sektoren
surf(zz(21*ones(size(xll ,x,y,c*ones(size(xll I; % Stirnfl. hinten
end
1.5.4.3 Kennzeichnung der Null-Marke
FUr die Null-Marke wahlen wir eine einfache Rechteckflache der Breite r mit hervorgehobener
Umrandung, vgl. Bild 1.20 b. Sie ist in der neuen Null-Lage an der Zylinderaullenwaud positio-
niert, macht aber die Drehung nicht mit.
xla=[R+r R R R+r]*cos(theta(l));
yla=[R+r R R R+rl*sin(theta(l));
% Koordinaten
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 63/80
1.5 Animation von 2D-und 3D-Modellen 63
z.la=[zz(l) zz(l) zz(2) zz.(2)J;
fil13(zla,xla,yla,'y','edgecolor','k','linewidth',2);
Bild 1.22: Koruplettes Zylinderelernent
1.5.4.4 Animation von Drehbewegungen
Mittels Animation wollen wir einerseits Verdrehungen des Starrkorpers und andererseits Verfor-
mungen des Zylinders durch gegenseitiges Verdrehen der Zylinderstirnseiten verdeutlichen. Im
Hinblick auf Probleme der Schwingungstechnik flihren wir fur die Extremlagen der Verdrehun-
gen Verformuugsvektoren (Eigenvektoren) ein. Sind mehrere Zustande zu simulieren, dann fas-
sen wir sie spaltenweise zu einer Matrix (Modalmatrix) zusarnmen. Fur unset Vorhaben bedeutet
dies:
C f i 2 j ] z , g . [ 0.25C f J 22 0.25
0.25 ]-0.25 :
d. h. zur ersten Spalte gehort die Starrkorperbewegung mit ( {Jmax =.25 rad, zur zweiten Spalte
die gegenseitige Verdrehung der Zylinderstirnfiachen mit ( {Jmax = 0.5 rad. Uberlagern wir den
einzelnen Moden (Spalten von V) das Zeitsignal
2n:
W ( IJ ) =a sin (k-),kmaxk=, 1, 2 ... , kmru :,
2nh=k--
k m r u : ' a Verstarkung,
dann erhalten wir die Winkelfolge
Q J o , , ( k ) = a [ q J n l ] si n ( 2 J rk
k) , n = 1,2.
fPnl max
Hiennit wird jedes zu bewegende Element des Zylinders beaufschlagt. Fur die Bewegung der
ZylindermantelfHiche bedeutet dies: c P l l ( k ) geht additiv in den Sektorvektor e jetzt aber getrenntfur beide Stirnseiten ein, wie im Programmsegment zur Mantelflache:
% theta Sektoren-Vektor
V=[O.25 0.25 ;0.25 -0.25J;
% bereits berechnet
% Max.-Verformungen, zwei Moden
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 64/80
64 1 Einfiihrung in MATLABf< :
kmax=30i a=l; h=2*pi/kmaxi
for k=O,kmax
w=a*sin(k*h);
ang=V (:,1)*w;
costhl=cos(theta+ang(l)) ;costh2=cos(theta+ang(2)) ;
sinth1=sin(theta+ang(1)) ;
sinth2=sin(theta+ang(2)) ;
% Schritte, Verst., Schrittw.
% Bewegungsschritte
% Anregungssignal
% Winke1inkrement, Mode 1
% A b k i . i r z u n g e n
xz [Rz(1)xcosth1; Rz(2)~costh2J; % x-Koordinate
yz [Rz(1)*sinth1; Rz(2)*sinth2]; % y-Koordinate
zz [11;11+12]*ones(l,size(xz,2) );1 z-Koordinate
%---- zeichne ~uBeren Zylinder
surf(zz,xz,yz,cz*ones(size(zz)) I;
if k==O, ax=axisi else axis (ax); end
M=getframe; % Bilderfolgeend
Fur jede Position wird mit getframe ein Frame erzeugt und hier in M abgespeichert, so dass fur
die Animation eine Bildfolge vorliegt, die mit: movie (M(, Opt .ione n) ) abgespielt werden kann,
Eine Mornentaufnahme der gegenlaufigen Bewegung ist in Bild 1.23 dargestellt, Die aufgefiihr-
Bild L.23: Animation mil gegenlaufiger Verdrehung c1erStirnseiten
ten Programmteile sind Bestandteil des Programmpakets [59] mit der Struktur nach Bild 1.24.
Es setzt sich aus dem Hauptprogramm zyl_3DH. m sowie der Function zyl_3D. m, in die
dJ:alt,l_zyl eingebettet ist, zusammen,
1.6 Code-Beschleunigung, der Profiler
Im Abschn, 1.1 wurde bereits darauf hingewiesen, dass ab MATLAB 6.5 ein Just-In-Time- (J1T-)
Accelerator existiert, der insbesondere die skalare Mathematik unterstutzt, so dass u. a. einnicht
vektorisierter Code, z. B. innerhalb einer for-Schleife mit skalaren GroGen, beschleunigt wird.
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 65/80
1,6 Code-Beschleunigung, der Profiler 65
zy1_3DH.1Il zyl_3D.m
Modalmatrix (Drehung) Zylinder-Initial. ~ dnlw_z,yl.m
Grafik-Zeitprofil Speicher-, Grafik- ~
ElementeAnimation Eigenschaften
Hauptprogramrn Function
Bile! 1.24: Programmsuukrur fur Rotoranimation
Der MATLAB Il'I-Accelerator kann den Benutzer-Code dadurch beschleunigen, dass er High-
Level M ATLA B-K orrunandos in native Maschinen-Befehle umsetzt, D. h. del' Accelerator (oder:
Just-In-Time Compiler) ubersetzt eine komplette Kommandosequenz so, dass sie anschlieBend
schnell in Maschinencode ausgefiihrt werden kann,
Daruber hinaus konnen mit Hi!fe des MATLAB Profiler die Ausfuhrungszeiten des Codes
schrittweise verbessert werden. Dies soIl wie in [32J an dem Programm-Code zur Berechnung
eines Mandelbrots nach http:lwWw.stlldents.tllt.fi/rvwarplMandScript/ erfolgen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear
xmax=2;
st:eps=1000;
maxiter=32;
% und 200
for m=l:steps
for n=l:steps
c=-xmax+2*xmax*n/steps-.5 + i*(-xmax+2*xmax*m/steps);
z ; ; ; ; ; c i
for r=O:maxiter
z=z*z+c;
if abs(z»2 break
end
end
Z(m,n)~sqrt(r!maxiter) ;
end
end
Dieser Code (mandelbrl .m aus [59]) ist einerseits aus der Command-Zeile mit
» profile on, Mandelbrl, profile reportandererseits aus dem Profiler-Fenster, welches durch Eingabe von
» prof~le viewer
bzw. mit dem Menu Tool IOpen Pro filer des Editors geoffnet wird, zu starten,
Das Ergebnis wird im Pro tiler-Report angezeigt. Er enthalt u. a. die Gesarntrechenzeit (hier:
T,N54 s flirlOOO Steps; CPU-Takt 3.2 GHz.), eine Tabelle mit den rechenintensivsten Zeilen,
wie in Bild 1.25, Ergebnisse eines Checks mit M-Lint sowie eine Programmliste mit den voran-
gestellten Spalten
time: benotigte Rechenzeit, calls: Anzahl der Aufrufe, line: Zeilennummer
Nach Bild 1.25 benotigt Zeile 8 die meiste Rechenzeit. Die Hauptursache liegt in der Built-In
Variable i,weil bei jedem Aufruf sqrt (-1) auszuftlhren ist. Dies lasst sich durch Einfuhren
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 66/80
66 1 E infiihrung in MATLABf< '
Lines where the most time was spent
L in e N um be r Code C~ lls Tota l T im e % Time T im e P lo t
s _ c==xm.a:x+2'txm.ax*nJsteps=.5 + i ' 'i: ' • .• 1 0 0 0 0 0 0 22.783 s 42,2%
15 Z(m,n)=s~rt(c/maxit e~) ; 1 01 J0 oaO 1 0.389 s 19,2%
-2 if ebs(!:)2, b~eek 5227855 6,542 s 12 , 1% •11 ZiiiiZ':I:Z+C; 5227855 3,873 s 7.2% • -1 4 . erid 432991 2 3,335 s 6,2% I
O ther lin es & overh aad 7 , 125 s 13,2% •-ToI8,1" , 54.047 s 100%
Bild 1.25: Profiler-Report: Lisle der recheniutensivsten Zeilen fur sleps=lOOO
der Variablen i VaT der ersten for-Schleife
i=sqrt (-1) ; % Zeile 5{ einmaliger Aufruf
oder durch ersetzen von i durch 1i in Zeile 8 andern, Wir wahlen den ersten Schritt, wie in
mandelbr2 .m, Nach Neustart ergibt sich die reduzierte Gesarntrechenzeit von T z ;: ;: :;6.8 s.
Hinweis: In MATLAB6.1 , also ohne JIT-Acc., fuhrt dies kaum zur Rechenzeitersparnis, vgl. [58].
Als weitere rechenzeitreduzierende MaBnahme bietet sich das Praallokieren; vgl. S, 24, des
erforderlichen Array-Speicherplatzes von z mit
Z=zeros(steps) ;
- File mandelbr3.m - an. Die Rechenzeit betragt nun T3 =15.5 s fur step.s=lOOO. Aufdiese Malsnahme wird bereits im M-Lint Report hingewiesen, Bei kleineren Arrays, z. B. fur
step 3=200 ist der Rechenzeitgewinn minimal.
Was ist noch zu versuchen? Daruber hinaus kanH dUTCheine gunstige Code-Gestaltung, z.B.
beziiglich Zeile 8, die Rechenzeit weiter minimiert werden, Aufgrund der geringen Ausflihrungs-
zeit von Zeile 8 gegeniiber der Gesamtzeit HIlt dies kaum ins Gewicht,
Schlielslich fuhren wir eine rein reellwertige Rechnung durch, Hierzu sind die komplexen
Ausdrucke in Real- und Imaginarteile zu zerlegen; vg!. Programm-Code mandelbr4 .m in
[59]. Diese Vorgehensweise ist ziemlich ungewi:ihnlich und rnacht den Code auBerst undurch-
sichtig, Es zeigt sich aber, dass die Berechnung mit reellen Ausdrucken gegenuber komplexen
ab MATLAB 6.5, im Gegensatz zu MATLAB 6.1, erheblich schneller ablaufen: 14 = 4.8 s fursteps=lOOO.
Gegenuberstellung der Rechenzeiten: 1m Bild 1.26 sind die bezogenen Rechenzeiten fur
steps=l 000 und steps=20 0 gegenubergestellt, Die Rechenzeiten sind jeweils auf die von
mal1delbrl .m, also dem Ausgangs-Code, bezogen.ln belden Fallen ist insgesamt eine Rechen-
zeitreduzierung von ca. 90 % erreicht worden. Daruber hinaus ist festzuhalten, dass bei groBen
Arrays die Speichervorabbelegung trotz lIT-Accelerator nlitzlich ist. Bemerkenswert ist der star-
ke Einfluss einer reellwertigen Rechnung mit erheblich mehr Rechenoperationen gegenuber der
kornplexen Formulierung. Dies und insbesondere die Auswirkung der komplexen Variablen i auf
die Rechenzeit scheint eine Besonderheit des Accelerators zu sein,
Zusamrnenfassung: Der Profiler unterstutzt den Prograrnmierer, einen bezuglich der Rechen-
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 67/80
1 .7 Computeralgebra unter MATLAB, die Symbolic Math Toolbox 67
o 0.5
Bezogene Rechenzeit
1.5
Bild 1 . .26: Gegenuberstelhing der Rechenzeiten
zeit ausgereizten Code zu erzeugen. Wichtig ist, dennoch einen gut strukturierten und damit
leicht nachvollziehbaren Code zu schreiben, wobei tibliche programmiertechnische und zeitre-
duzierende MaBnahmen, u. a. praallokieren des Speicherplatzes eines Arrays, beachtet werden
sollten. Nach wie vor ist dabei die vektorisierung sehr ntitzlich.
1.7 Computeralgebra unter MATLAB, die Symbolic Math Toolbox
Die Symbolic Math Toolbox mit/ohne der Erweiterung der Extended Symbolic Math Toolbox
ermoglicht die syrnbolische, d. h. exakte Behandlung mathematischer Probleme in der numeri-
schen Umgebung von MATLAB. Dies werden wir insbesondere fur eine symbolische Herleitung
von Bewegungsgleichungen und deren numerische Auswertung nutzen.
Basis der Toolboxen ist der Maple-Kern, ursprunglich an der Universitat von Waterloo, Ka-
nada (1980) entwickelt und heute kommerziell von Maplesoft", Inc. vertrieben, MATLAB 6 undhoher baut aufMaple V, Version 5 (Symbolic Math Toolbox, Version 2.1) ab MATLAB 6.5 Release
13Spl auf Maple 8 (Symbolic Math Toolbox, Version 3.01) auf.
Die Inhalte der beiden MATLAB Toolboxen sind:
• Symbolic Math Toolbox: Zusammenfassung von mehr als 100 MATLAB Functions, die auf
den Maple Kern aufserzen, wobei Syntax und Stil dem MATLAB-Sprachumfang entspre-
chen .
• Extended Symbolic Math Toolbox: Enndglicht den Zugang zu allen nichtgrafischen Maple
Funktionen aller Pakete und vergrollert dadurch die Funktionalitat von MATLAB.
Mit beiden Toolboxen lassen sich eigene M-Files mit Zugang zu den Maple Functions und dern
Maple Workspace schreiben.
Wir wollen hier einige Elcmente der Symbolic Math Toolbox, die fur unsere Betrachtung
wesentlich sind, kennen lernen. Einen Ausschnitt der mathematischen Themen, denen die ver-
fugbaren Functions zugeordnet werden, zeigt Tabelle 1.1.
Einen erganzenden Uberblick geben die MATLAB-Demo-Beispiele. Sie werden mit der Com-
mand-Zeile > > s ymdemo s im Help Browser einsehbar und lassen sich hieraus auch starten, Die
zugehorigen M-Files s ym... demo. mstehen im MATLAB-Verzeichnis ... \ toolbox \ sym-
bolic.
9 http//www.maplesoft.comi bzw .. de
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 68/80
68 E infiihrung in MATLABf< '
Tabelle 1.1; Themen der Symbolic Math Toolbox
Zuordnung Operationen
Analysis Differenziation, Integration, Grenzwertbildung,
Summation, T'IYLOR-Polynome
Lineare Algebra Determinante, Inverse, Eigenwerte,
Singularwerte SVD, kanonische Formen
Losen von Gleichungs-
systemen
S ymb olisch e u nd n um eris ch e L osu ng en lin ea re r
algebraischer Gleichungen und Differenzialgleichungen
Spezielle mathematische
Funktionen
SpezieIJe Funktionen der klassischen angewandten
Mathematik, z. B. Cos-Integral
Variable Exaktheits-Arithrnetik Numerische Auswertung mathernatischer
Ausd ruc ke un te rs ch ie dl ic h er Genaui gke it
Transforn-ationen Fourier-, Laplace-, z-Transformationen
mit zugehorigen inversen Transformationen
1.7.1 Online-Hilfe
Einen Uberblick bezuglich des vollstandigen Function-Angebots - gegeniiber Tabelle 1.1 - erhal-
ten WiTmit
= »help symbolic oder »helpwin symbolic oder »doc symbolic
Die Symbolic Math Toolbox overloads viele numerische Functions von MATLAB, d. h. die sym-bolische und die numerische Function hat den gleichen Function-Namen. Wenn solche existieren,
dann lautet der On line-Hi lfe-Aufruf beziiglich der syrnbolischen Function help sym/junction
Beispiel: »help diff
»help sym/diff
% numerische Version von diff
% syrnbolische Version von dHI
Ob zu einer oumerischen Version eine symbolische existiert, wird am Ende der Hilfe-Ausgabe,
z. B. fur »help diff durch
Overloaded methods
help sym/diff.m
help char/diff.m
angezeigt; es existieren (je nach implernentierten Toolboxen) hier zwei weitere dIff Befehle und
zwar der Klasse (class) symundchar. Hilfe bezuglich der Maple-Befehle erfolgt mit mhelp,
z.B.» mhelp diff.
1.7.2 SymbollscheObjekte
Den symbolischen Objekten ist der Datentyp sym zugeordnet. Ein sym Objekt ist eine Da-
tenstruktur, welche ein String des Symbols darstellt, Es existieren symbolische Objekte, die
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 69/80
1 .7 Computeralgebra unter MATLAB, die Symbolic Math Toolbox 69
symbolische Variable, Ausdrucke und Matrizen reprasentieren. Den Unterschied zum MATLAB-
Standarddatentyp double zeigen die beiden Beispiele
»a = sqrt(2) » a sqrt (sym (2) )
a = 2'(1/2) % class (a) ---tsym= 1.4142 % class (a) ---tdouble
Einerseirs ist a erne numerische Variable vom Typ double und andererseits eine symbolische
Variable vom Typ s ym, also ein exakter Ausdruck, Die syrnbolische Variable a wird u. a. durch
» double (a) % Daten -Konvertierung s ym ---t do ub 1e
in eine numerische gewandelt, wie sparer noch ausfiihrlich erlautert.
1.7.3 Vereinbarung symbolischer Variablen und Ausdriicke (Objekte)
Wie oben gesehen, rniissen symbolische Objekte vereinbart werden:
»a sym('a'), b = sym('b'), c = sym('c'), x = sym('x')
oder kurz
»syms abc x
wobei angenommenwird, dass sie u. a. auch komplex seien. Die Deklarationen mit den Optionen
real, unreal, positive schranken den Wertebereich der Variablen ein, z. B.
»x=sym (' x',' real' .: w=sym(' w' " positive');
oder
».syms x a real uSW.
Durch die Eingabe von syms werden aIle vereinbarten symbolischen Variablen angezeigt, Ein
symbolischer Ausdruck flautet
»f = sym (' usz -2 + v * Z + W ')
Allgemein: Stehr rechts vom Gleichheitszeichen eine symbolische GroBe, dann ist auch die linke
Seite (ohne vorangegangene Vereinbarung) ein syrnbolisches Objekt, Z. B.
»g = 5 % class(g) double
»a = .sym(' a' i : 9 = a % class (g) sym
Das Aullinden aller symbolischer Variablen in einem Ausdruck f erfolgt mit
» findsym (f)
Standardmahig benutzt die Symbolic Math Toolbox rational arithmetic operations, d. h. Ma-ple's exakte Symbolik-Arithmetik. Werden symbolische Variable mit de! sym Function verein-
bart, dann wird die rationale Arithmetik aufgerufen, Die syrn Function konvertiert eine Variable
sowie eine Matrix vom Typ double in die syrnbolische Form.
Beispiel: gegeben sei die Matrix A, gesucht ist die symbolische FOTIn S
» A [ 1.1000 1.2000 % c1a5s double
2.1000 2.2000 ];
»S = sym (Al
S
[ 11/10, 6/5
21/10, 11/5 J
% class syrn
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 70/80
70 1 Einfiihrung in MATLABf< '
Die Elemente von S werden durch rationale Zahlen, d. h. Britche mit Integerzahlen (hier klein),
dargestellt, Existieren keine rationale Zahlen, so konnen sie durch Gleitkommazahlen (floating-
point) in symbolischer Form dargestellt werden. Die Matrix
»E = l exp (1) pi; sqrt (2) rand 1
liefert die numerische Form (class (E) daub Ie)
E =
2.7183e+OOO 3.1416e+OOO
1.4142e+000 2.311Qe-00I
und ihre symbolische Form
»sym (E)
ans =
6121026514868074*2" (-51) , pi]
sqrt (2), 8327642588833064*2" (-55)]
Optional kann durch ein zweites Argument irn Aufruf von sym zwischen vier Darstellungen
unterschieden werden:
Arg. Darstelluug Befehl
f Gleitkomrna sym (1/3, r f' )
r Rational (Standard) sym (1/ 3(, r r'»)
d Dezimal sym [1/3,' d')
e Rat. + Abweich. sym [1/3,' e')
Ergebnis
'1.5555555555555' *2 A (-2)
1/3
.33333333333333331482961625624739
1/3-eps/12
Daruber hinaus steht unter MATLABdie Variable Precision Arithmetic (vpa), in der Regel zur
hochgenauen Berechnung syrnbolischer Ausdrucke, ZUI Verfugung. Es konnen syrnbolische Zah-
lenwerte im Gleitkommaformat mit vorgebbarer Stellenzahl dargestellt und bearbeitet werden;
z. B.: "pa (ph7 .38). Das Ergebnis erscheint standardmallig mit 32 Stellen. Eine abweichende
Stellenzahl iz wird mit
digits (i z) , z. B. »digits ( 4 0 )
eingestellt, Die Auswirkungen sollen mit dem folgenden Programm aufgezeigt werden, Hierzu
wird mit einem funfstelligen (digits (5) ) symbolischen Wert (vpa (b) oder kurz: vpa b 5) die
Differenz zu einem symbolisch sowie einem numerisch ermittelten Wert berechnet.
b=sym(exp(l))i a=sym(1/3) i % symbolische Ausdrucke
21= a*bj
digits (5)
e2=aH7pa (b) i
e3=1/3*exp{l);
diff_l= double(el-e2)
diff_2= double(e2)-e3
% symbolisches Ergebnis
% Rechnung mit 5 Stellen
% Rechnung mit reduzierter Stellenzahl
% numerische AusfGhrung
% Differenz der symbolischen Ausdrticke
% Differenz gegenuber dem num. Wert
Die daraus entstehenden Differenzen aufgrund der eingeschrankten Stellenzahl sind:
diff 1
diff 2
-1.QOQOQOOOQOQOQOOe-005
6.057180318208566e-006
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 71/80
1 .7 Computeralgebra unter MATLAB, die SymbolicMath Toolbox 71
1.7.4 Substitution symbolischer und numerischer GroBen, der subs Befehl
Substitution einer symbolischen Variable dureh einen numerischen Wert oder dureh eine ande-
re symbolische Variable oder Ausdruck erfolgt mit dem subs Befehl (vgl. auch Abschn. 1.7.9),
dieser ist sehr vielseitig, Beispiel: gegeben sei ein syrnbolischer Ausdruck h(x) in dem x = 2 zusetzen ist
»x=sym('x'); h = 2 * x'2 - 3*x -t - 1 % h class sym
» subs (h, 2) oder »subs(h,x,2) % class double
d. h. ersetze im Ausdruck h die Variable x durch 2. Da x die symbolische Standardvariable
(default) und daruber hinaus die einzige Variable ist, liefern beide Argumente in subs das glei-
che Ergebnis.
Definition der syrnbolischen Standardvariablen: Wird u. a. bei der Substitution keine Variable
im Argument von subs angegeben, dann ermittelt MATLABdie Standard-Variable nach folgen-
del' Regel: Als Standard-Variable wird die Variable (Buchstabe) gewahlt, die dem. x am nachsten
im Alphabet steht. Sind zwei gleich weit entfernt, wird der hinter dem x stehende gewahlt. Vor-
ausgesetzt die Variable besteht aus nur einem Buchstaben!
Mit dem findsym Befehllassen sich die Standardvariablen injedem Fall ermitteln. Beispiel:
»syms s t, 9 =s + ti finds,:'m(g,l) % l-te Standard-Var.
Die meisten Befehle der Symbolic Math Toolbox ermoglichen ein Uberschreiben der Standard-
variablen x. Beispiel:
% class char, oder
»f = sym(' a-Z*x-Z + b x + c'); % class sym, be ides moqLach»diff (f,' a') % o f / C i a , Standardvariable iiberschrieben
ans= 2*a*x'2
»diff (f,' a', 2)
ans= 2kX'2
1.7.5 Beispiele aus der Analysis
In der folgenden Tabelle sind einige Function angegeben, dabei ist S ein syrnbolischer Ausdruck
und var eine symbolische Variable.
Analysis
difl' (S (, va r , n I )
int(SCvar,a,b;)
limit (S (, x, a,, left'
'right' 1 )
n-te Ableirung nach var, a l ls / a v a r lIntegr. von S beziiglich var in den Grenzen a, b
class (a, b) s ym oder double; J ; , ' S dvarMACLAUR[N -Polynom der Ordnung 5 bzw, n-1
TAYLOR-Polynom (n-1) -ter Ordnung bezuglich a
I· S R' h ' left' d . . Gr1mx---+a , 1C tung, es einseit, enzw., 'rlght'
JACOBI-Matrix dS/dv, S Skalar/Vektor, v Vektor
taylor (S (, n;)
taylor (S (, D, a))
jacobian (S , v)
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 72/80
72 1 Einfiihrung in MATLABf< '
Anwendungsbeispiele:
»syms x y
»diff(x-3)
% Vereinbarung der sym. Gr65en
% Differenziation
ans =
3*x-2
»nt (s in (x ) r 0 , p ~/ 4 )
a n s =
-1/2*2- (1/2)+1
» double (ans)
a n s =
% Integration
% Kor rve r t. ae r unq s ym --'> double
2.928ge-001
» taylor (exp (x) -sin (x ) (4) % Maclaurin-po1ynom
ans =
x+xA2+1/37x
A3
»limit (l/x, X, 0, r le ft ' ) % Grenzi;/ert
a n s =
-inf
»jacobian([exp(x*y) x'2*y], [x yl) % JACOBI-Matrix
a n s =
ywexp (x·..-y), x-exp (x e y l ]
[ 2*x*y, x-2]
1.7.6 Algebraische Gleichungssysteme, der solve Befehl
Der solveBefehl ist ein vielseitiger Gleichungsloser, Er ist anwendbar auf einzelne Gleichungen
sowie auf Gleichungssysterne, z. B.
»solye('a*x + b') oder »solve('a*l-: + b =0')
ans =
-b/a
lost die Gleichung nach der Standardvariablen x auf. Ist nach einer anderen Grobe aufzulosen,
so muss dies angegeben werden, z. E.
»solve('a*x-2 + b- x + cr,rar) o d e r »solve('a*x-2 + b- x + cr,rc')
Hat eine Gleichung mehrere Losungen, dann werden sie im Ausgabevektor aufgelistet.
»s =solve (' a*x-2 + b-.x + 0')
S =
[ 1)2/a* {-b+ (b~2-4·ka·kC) - (1/2))]
[ 1/2/a* (-b- (b' 2-4*a'c) - (1/2) )1
Ubersichtlichere Ausgabe:
»retty (s (1) )
2 1/2
-b + (b - 4 a c )
1/2 --------------------
a
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 73/80
1 .7 Computeralgebra unter MATLAB, die Symbolic Math Toolbox 73
Den numerische Wert fiir vorgegebene a, b, c erhalten wir mit
» a 5/16; b = 0.3; c = 1/4;
»sn = subs(s)
an ~
-4.8000e-001 +7.5472e-001i
-4.8000e-001 -7.5472e-OOli
Kann keine symbolische Losung gefunden werden, wird selbststandig eine numerische mit
definierter Stellenzahl berechnet
»5 =solve('x + 2 =exp rxz j ")
s =
1.0571035499947380777922377221533
»5n = double (5)
an =
1.0571e+000
% class sym
9 , class double
Die syrnbolische GroJ3e s enthalt standardmalsig 32 signifikante Stellen, sie lassen sich mit digits
andern, t; B.
»digitS(40) , s ~ solve i'x + 2 ~ exp(x'2)')
s =
1.057103549994738077792237722153280429451
Beispiel fiir ein algebraisches Gleichungssystem mit rnehreren Losungen
% Auegabe der L65ungskomponenten
> > [ x , yI=solve ( , x A2 *YA2 - 2 * x -1 0', 'x'2 - y"2 -1 0' )
x =
-1/2+1!hhr (1/2) ]
-1/2+1!2*hY (1/2) I
-1!2-1!2*i*3A(1/2) ]
-1!2-1!2*i*3A(1/2) ]
1!2*5A (1/2)+1/2]
1/2*5A (1/2)+1/2]
1!2-1!2*5A (1/2) ]
1!2-1!2*5A (1/2)]
y
[ 1!2*(-6-2*i*3A(I/2))~(1!2)]
( -1/2*(-6-2*i*3~(1!2))~(1/2) 1
1/2*(-6+2*i*3~(1/2))A(1/2) ]
-1/2*(-6+2*i*3~(1/2))-(1!2) ]
1/2*(2+2*5-(1/2))-(1/2) 1
-1/2*(2+2*5-(1/2))A(I/2) ]
1/2*(2-2*5-(1/2))A(1/2) ]
-1/2*(2-2*5-(1/2))A(1/2) ]
% Ausgabe als Structure XY, Ergebnis: XY.x bzw. XY.y»Xy = solve('x~2·'·y~2 - 2*x -1 = 0','x~2 - y-2 -1 = 0')
XY
x : [8xl sym]
y: [8xl s ym]
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 74/80
74 1 Einfiihrung in MATLABf< '
1.7.7 Gewohnliche Differenzialgleichungen, der dsolve Befehl
Vorausgesetzt es existiert cine exakte, analytische Losung einer Differenzialgleichung bzw, eines
Systems, so kann die Function dsolve
::::} help dsolve
eine allgem eine oder spezielle, d. h. an A nfangsw erte angepasste Losung, finden. D ie Syntax
lasst sich am einfachsten an Beispieien erlautern.
1.Differenzialgleichung 1. Ordnung: Gesucht sei die allgemeine Losung von
y+y=te t
»y =dsolve ('Dy + 'i = t*exp (t)') % Y _ _ . Dy, DOperator
y =
% C1 Integrationskonstante
MATLAB erkennt die unabhangige Variable I als Standard-Variable. Tritt z.B. x als Parameter in
der G leichung auf, dann m ussen w ir
»y = = dsolve('Dy + y = = x*t*exp(t)','t')
schreiben,
2. D ifferenzialg leichu ng 2 . O rdn un g: B in linearer E in -M assen-S chw ing er m it D arnp fu ng g en ug t
del' Differenzialgleichung
ji + 2Dwrd + w J y = cos .Qt . (1.1)
Es sollen die Schwingungen y(t) fur die Anfangswcrte zum Zcitpunkt t = 0
y ( O ) = 0, y ( O ) = 0
sowie fiir die Parametersatze
a) U J o = 15 rad/s, Q
b) ~ = 10 rad/s, .Q
ermittelt werden.
Wir schreiben das M-File bei_dgl .III in [59]:
16 rad/s, D = 0.005
10 rad/s, D =0.0
1
2
3
clear, close all; clc
sylllsOm amO t d % 0 ist Differenzialaperatar, D -> d
4 %---- Beispiel a: lineares, gedampftes System
5 y=dsolve (' D2y+2*d*ornO*Dy+ornOA2*y=cas (OITI*t)' ,'y (0) =0, Dy (0) =0' ,'t')
6 y=simple(y) % Vereinfachung der AusdrUcke
7
8
subexpr(y) , sucht nach gleichen Ausdrlicken
9 pretty (y), latex (y) % Ausgabe
10 y=aub s t y, (Om omO dl, {16 15 0.005)); % Param.-Subst.itution
11 ezplot(y, [O,8*piJ,l) % Grafische Darstellung
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 75/80
1 .7 Computeralgebra unter MATLAB, die Symbolic Math Toolbox 75
12 % • • • • • • • • • • .• • • • • • • • • • •• • • • • • • • . •. • . • • •• • • • • • • • • • • •• • • . . .. • . • • • •
13 %---- Beispiel b: 1ineares ungedampftes System, Resonanz
14 y=dsolve('D2y+omO~2*y=cos(omO*t)' ,'y(O)=O,Dy(O)=O', 't')
15 y=simple(y); % Ausdruck vereinfachen
16 yr=subs(y, {Om oroO},[10 10l); % Parameter-Substitution17
18
19
20
e zpLot;(y r, [0, 6*piJ, 2) % grafische Darste11ung
%---- Ermittlung der Geschwindigkeit fu r den Resonanz-Fall
%---- 1. Differenziation
21 yp=diff(yr,t)
22 ezplot (yp, [0,6kPiJ, 3)
% zeitliche Ab1eitung
% grafische Darstellung
23 ylabel('Geschwindigkeit m/s')
24 %---- 2. Differenzialgleichungssystem
25 Y12=dsolve('Dyl=y2, Dy2=-omOA2*yl+cos(omO*t)', ...
'y1(0)=0, y2(0)=O','t')
26 omO=lO;27 Yp=subs(Y12.y2)
28 ezplot(Yp, [0,6*piJ,4)
29 xlabel('Zeit tis')
30 ylabel('Geschwindlgkelt m/s')
Danach werden die Losungen y ( t ) zu a), b) aus (1.1), d. h. einer Diffe re nz ia lg le ic hu ng 2 .
Ordn ung entsprechend dem Operator 02, ermittelt; vgl. Zeile 5 und 14. Im gedam pften Fall a)
is t die Losu ng s ch on re ch t um fa ng re ic h, Unter Umstanden Iasst sie sic h m it dem simple Befehl
wie in den Zeilen 6, 15 vereinfachen, Mehrfachanwendung simple (simple ( .. )) kann
weitere Vereinfachungen liefern! Daruber hinaus konnen mehrfach vorkommende Ausdri.icke mit
7 subexpr (y) gefunden und darnit die Losung ubersichtlicher dargestellt werden, Mit pretty
erfolgt eine Bildschirmausgabe, mit latex wird ein Ausdruck fur das Textverarbeitungssystem
TEX erzeugt. In den Zeilen 10, 16 werden die symbolischen Parameter durch ihre numerischen
Werte ersetzt, Die Ausdrticke sind weiterhin vom Typ sym, da die syrnbolische Variable t noch
e nth alte n is t, S ch lie fslic h k on ne n m it der Plot -Function
ezplot (funktion, [t_anfang, t_end], figure_nr)
- oder wie bisher mit plot, wenn t substituiert wird - die Ergebnisse grafisch dargestellt werden;
vgl, Bild 1.27. Das Plot-Fenster lasst sich naturlich mit den bekannten Befehlen xlahel, legend,
title vervollstandigen.
Der ungedampfte Schwinger b) befindet sich in Resonanz, d. h. die Erregerkreisfrequenz Qstimmt mit der Eigenkreisfrequenz r o o tiberein. Dementsprechend enthalt die Losung sakulare
Terrne
1 .y ( t ) =-- t SLn ~t,
2wo.Q =tl.{l,
was auch dem Ze it ve rl au f in B ild 1 .2 72 an zu seh en isr.
Soli daruber hinaus auch die Geschwindigkeit y(t), z . B. fUr eine Darstellung in der Phase-
nebene, ermittelt werden, kann das Wegsignal ) ' ( 1 ) nachtraglich differenziert ( vgl. Zeile 21
ditf (y ,t))werden oder man bearbeitet von Anfang an die aquivalenten DifferenzialgLeichun-
gen erste Ordnung
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 76/80
76 1 Einfiihrung in MATLABf<'
Y I = Y2,
. ?
yz = -COr") Y I + cos (M:)t,
Y I = y, Y2 = Y
)'1 (0 ) = 0, Yz(O) = 0(1.2)
wie ab Zeile 25.
Zeit Vs
-10'---5:----10--1:"::5--'
Zeit Vs
Bild 1.27: Weg-Zeit- Verlaufe des gedampften a) und ungedampften b) Schwingers
1.7.8 Beispiel zur linearen Algebra
In der Schwingungstechnik treten insbesondere im Zusammenhang mit Starrkorperbewegungen
von Strukturen Eigenwertproblerne mit mehrfachen Eigenwerten auf. die numerisch schwer zu
handhaben simi, siehe Kapitel 3. Wir wollen deshalb ausgehend von einer speziellen 3 x 3-Matrix
12
-20
9
1 9
-33
15
dieses Problem angehen. Urn sparer die Ergebnisse beurteilen zu konnen, geben wir sie teilwei-
se vorab an. Die Matrix A besitzt einen einfachen Bigenwert Zj Llndeinen doppelten A2.3 der
Vielfachheit p =. De!"zugehorige Rangabfall bzw. Defekt d2.3 = - rang (A..2.3E -A) ist eins,. .
Dernnach existiert zu / 1 . , 2 , 3 nur ein (linear unabhangiger) Eigenvektor, Der fehlendc, vgl. [15],
kann rekursive aus
( , A . .2,3E - A )V3 = v2, 1 1 2 berechneter Eigenvektor (1.3)
ermittelt werden. Mit der kompletten Modalmatrix V = ( 1 1 I , V2, 1 1 3 ) folgt die JORDAN-Matrix
r
A
J=y-1AV= ~I (1.4)
Urn nun einmal die Unterschiede einerseits bezuglich einer nurnerischen lind andererseits ei-
ner symbolischen Rechnung aufzuzeigen, werden wir beide Vorgehenswcisen parallel behandeln.
Hierzu dient der unten aufgelistete Programm-Code s ym_8 ig1 _maus [59]
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 77/80
1 .7 Computeralgebra unter MATLAB, die Symbolic Math Toolbox 77
1
2
3
4
56
7
8
9
%---- numerische Berechnung
A=[6 12 19; -9 -20 -33; 49 15J % Systemrnatrix
n=length (A)i
%---- numerische Bearbeitung
rn=rank(A)OETn=det(A)
% Dimension von A
% Rang-Ermittlung% Determinante
[Vn,DnJ=eig(A)
In=inv(Vn)*A*Vn
% Eigenwertproblem
% Einheits- oder JORDAN-Matrix?
10 %---- symbolische Bearbeitung
11 syrns x y z
12 l<~=syrnA)
13
14 r=rank(A)
% symbolische Matrix A
% Rang-Ermittlung
15 DET=det ( ] I _ ) % Determinante
16 %---- Defekt, Rangabfall zum doppelten Eigenw. 117 d=n-rank(A-eye(n))
18
19 [V,DJ=eig(A)
20
21 %---- Reihenfolge der Eigenwerte [-1 1 1] sowie der Eigenvekt.
22 [Ox,Lj==s ort; (subs (diag(D))); % Reihenfolge: Eigenwerte
23 if I(l) > 1V=V(:, [2,1]); end % Reihenfolge: Eigenvektoren
24
25 Aeq=(eye(n)-A)*[x;y;z]+V(:,2); % lin. Gleichungen fUr Eigenvekt.
% Eigenwertproblem, symb.
26 [x,y,z]=solve(l<.eq(I),Aeq(2),Aeq(3)); % Los unq
27 xyz=[x;y;z]; % LOsungsvektor28 :sy=findsym(xyz); % 5ymb. Variable im Ausdruck?
29 xyz=sym(subs(xyz,sy,I)) % Substitution sy -> 1
30 %---- Kontroll-Rechnung
31 Ve=[V,xyz] % vollstandiger Eigenvektor
9 6 JORDA1N-Natrix2 Je=inv(Ve)*A*Ve
33
34 %---- direkte Berechnung aller Eigenvektoren
35 [VJ,J]=jordan(A) % J JORDAN-Matrix
Erlauterungen zum obigen Programmcode und Ergebnisse: Ein ubereinstimmendes Ergebnis er-
halten wir bezuglich des Ranges und der Determinanten von A ( Zeile 5, 6, 14,15). Die nume-
rische Bestimmung der Eigenwerte (On) und der Eigenvektoren (Vn) erfolgt in Zeile 8 mit dem
Ergebnis
Vn =
~4.740998230350172e-OOI
8.127425537743157e-001
-3.386427307392984e-OOl
On =
-9.99999999999988ge-001
oo
-4.082483146127938e-001
8~1649G5734972854e-OOl
-4~OB2482Bl1758122e-OOl
-4.082482663149308e-001
8.164965883581664e-OOl
-4.082482997519134e-OOl
o
1~000000081903542e+OOO
o
o
o9.999999180964527e-OOl
Danach existieren drei voneinander verschiedene Eigenwerte II.)~ -I, 1 . 2 ~ 1, A.J~ 1 u nd somit
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 78/80
78 1 E infiihrung in MATLABf< '
drei linear unabhangige Eigenvektoren. Die Bedingung (1.4) liefert demnach keine JORDAN-
Matrix, sondern eine Diagonalmatrix aus den Eigenwerten.
In Zeile 11 beginnen die symbolischen Operationen, der erste Schritt ist die Symbolisierung von
A mit der Typ-Konvertierung class (A) ---> s ym, In Zeile 17 wird der Defekt d zu A23 berechnet;
Ergebnis: d=l. Demzufolge liefert das Eigenwertproblem in Zeile 19 das Ergebnis
V 0
[ 7/5, 1] [ -1, 0, o ][ -12/5, -2] [ 0, 1, 0]
I, 1l 0, 0., 1l
D. h. zum doppelten Eigenwert 1 existiert nul' ein Eigenvektor, derfehlende (V3) muss aus (1.3)
mit singularer Koeffizienten-Matrix (E-A) zu 12,3 entsprechend den Zeilen 25 - 27 berechnet
werden. Das Ergebnis ist nicht eindeutig, es wird in Abhangigkeit einer del' Losungskomponen-
ten y, z dargestellt, We1che der beiden es ist. wird mit dem findsym Befehl in Zeile 28 festge-
stellt . .Wir setzen ihn willkurlich zu eins (Zeile 29). Abschlienend folgt mit (1.4) eine Kontroll-
Rechnung. Dazu is t die mit eig berechnete unvollstandige Modalmatrix urn V3 z u e rg an ze n ( Ze lle
31) und damit (1.4) auszufiihren. Die zugehorige JORDAN-Matrix Je (Zeile 32) bestatigt die
Richtigkeit,
AIle Eigenwerte, die (1.4) erfiillen, konnen einfacher mit der Function jordan (Zelle 35) direkt
berechnet werden. In VJstehen die Eigenvektoren und inJ die zugehorige J ORDAN-Matrix. Auf-
grund unterschiedl icher Skalierung unterscheiden sich beide Ergebnisse optisch. Fazit: Derartige
Sonderfalle lassen sich nUImit Hilfe der Computeralgeora Ibsen. Praktisch, d. h. numerisch, exis-
tieren keine Mehrfacheigenwerte. Es sei denn, man korrigiert das numerische Ergebnis, wenn
man weiB, dass z.B. Nulleigenwerte mehrfach auftreten,
1.7.9 Ubergang zur Numerik
Vielfach wire! man symbolisch gewonnene Au sdrucke , z. B. Bewegungsgleichungen dynami-
scher Systeme, numerisch weiter bearbeiten. D. h. es muss insbesondere der Datentyp syrn in
einen vom Typ double oder single konvertiert werden. Hierftir stehen die Function
subs, eval, double, single
ZUI Verfugung. In jedem Fall muss der Ausdruck zahlenmalsig (symbolisch/numerisch) vorlie-
gen. Dies erfolgt in der Regel mit dem subs Befehl, Dabei liefert dieser clirekt einen Datentyp
double bzw. single, wenn aile substituierten Grollen vorn Typ double bzw. single sind.
1st jedoch ein symbolischer Wert, z. B. 1/3, enthalten, dann ist das Ergebnis e "om Typ s yrn.
Die Function:eval (char (e) ) oder eval (e) und double (e) oder single
erzeugen schlietilich den zugehorigen numerischen Wert vom Typ double bzw single. Auch
ein wiederholter Aufruf subs (subs (e)) fuhrt zum Ziel. Dieses ist im folgenden Programm
ue_n urn. maus [59] fur einige Varianten demonstriert,
syms a x t
f=a*xA2 + sin(t) + pi; % symbolischer Ausdruck
al=sym(5) ;
tl=pi/4;
xl=3/5;
% symbolische Variable
% numerische Variable
% numerische Variable
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 79/80
1 .7 Computeralgebra unter MATLAB, die Symbolic Math Toolbox 79
el=subs(f, {a x t.}, {al xl t.Ll)
ell=subs (ell
eI2=eval(ell
eI21=eval(char(ell)
eI3=double(elleI4=single(el)
al=5;
e2=subs (f, l a x t. l, [al xl t.L 'l )
a=sym(5); t=pi/4; x=3/5;
e3=subs (f)
e31=eval(e3)
e311=eval(char(e3))
e32=double(e3)
a=5;
e4=sub.s (f)
e5=eval(f)
% class (el) sym
% claGs(e11) double
% class(e12) double, oder
% class (eI21) double
% class(e13) double% class (eI4) single
% numerische Variable
% class(e2) double
% class(e3) sym
% class(31) double, oder
% class (e311) double
% class(e32) double
% class(e4) double
% claGs(e5) double
Hinweis zu einer Matrizenmultiplikation in einem syrnbolischen Ausdruck:
»syms AB
»f= A * B; % symbolischer Ausdruck
»g = subs(f,A, B,[l 2; 34],[43; 2 l]) % Subst itut ion
% Ergebni5 aU5 PunktQpe~ationo : :
4 6
6 4
D. h. die Multiplikation wild punktweise g=A. *E ausgefuhrt, wobei class (g) double.
Abschlie13end betrachten wir das Ieicht modifizierte Beispiel aus [62] (siehe auch:
ue_n urn! . rn in [59]), es zeigt anschaulich noch einmal die Substitution syrnbolischer und nu-
rnerischer Grohen sowie den Ubergang zu nurnerischen Ausdriicken:
% Beispiel zur Substitution mit Obergang zur Numerik
5yms x y t 9 a % Vereinbarung 5ymb. Variable
f=x + sin (x); % symb. Ausdruck
q=3<-tA2 - tAt;
g=5ubs(f,x,q) ;h=subs(g,t,exp(y/a) )
pretty (h)
% symb. Ausdruck
% Substitution x -> q% Substitution t -> exp(y/a)
% ubersichtliche Ausgabe
ergebnis=subs(h, (y,a), {7,9)) % numer. Ergebnis, class double
y=O:O.l:l; a=pi;
hvec=vectorize(h)
ergebn_l=eval(hvec)'
y=sym(y); a=sym(a);
ergebn_2=eval(hvec)'
%---- Obergang zur Numerik
% numerische Daten, y Vektor, a Skalar
% h vektorisieren, -> Punktoper.
% Gr6Ben double -> ergebn_l double
% Werte 'symbolisiert'
% y, a ersetzt -> ergebn_2 sym
% lO ergebn_2 symb 'Zahlenwerte'
5/8/2018 1. Einfuhrung in Matlab - slidepdf.com
http://slidepdf.com/reader/full/1-einfuhrung-in-matlab 80/80
80 1 E in f iih run g in M ATLA B f< '
ergebn_3l=subs(ergebn_2)
ergebn_32=double(ergebn_2)
% darum hier ergebn_3l double
% ergebnis_32 double