1. einfuhrung in matlab

80

Upload: natalia-balcu

Post on 06-Jul-2015

136 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1. Einfuhrung in Matlab

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/

Page 2: 1. Einfuhrung in Matlab

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

Page 3: 1. Einfuhrung in Matlab

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.

Page 4: 1. Einfuhrung in Matlab

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

Page 5: 1. Einfuhrung in Matlab

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

Page 6: 1. Einfuhrung in Matlab

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

Page 7: 1. Einfuhrung in Matlab

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.

Page 8: 1. Einfuhrung in Matlab

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

Page 9: 1. Einfuhrung in Matlab

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

Page 10: 1. Einfuhrung in Matlab

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.

Page 11: 1. Einfuhrung in Matlab

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

Page 12: 1. Einfuhrung in Matlab

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

Page 13: 1. Einfuhrung in Matlab

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

Page 14: 1. Einfuhrung in Matlab

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.

Page 15: 1. Einfuhrung in Matlab

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

Page 16: 1. Einfuhrung in Matlab

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

Page 17: 1. Einfuhrung in Matlab

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

Page 18: 1. Einfuhrung in Matlab

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 =

Page 19: 1. Einfuhrung in Matlab

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

Page 20: 1. Einfuhrung in Matlab

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.

Page 21: 1. Einfuhrung in Matlab

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

Page 22: 1. Einfuhrung in Matlab

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

Page 23: 1. Einfuhrung in Matlab

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) + ...

Page 24: 1. Einfuhrung in Matlab

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

Page 25: 1. Einfuhrung in Matlab

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

Page 26: 1. Einfuhrung in Matlab

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

Page 27: 1. Einfuhrung in Matlab

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.

Page 28: 1. Einfuhrung in Matlab

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

Page 29: 1. Einfuhrung in Matlab

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

Page 30: 1. Einfuhrung in Matlab

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.

Page 31: 1. Einfuhrung in Matlab

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].

Page 32: 1. Einfuhrung in Matlab

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)

Page 33: 1. Einfuhrung in Matlab

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

Page 34: 1. Einfuhrung in Matlab

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

Page 35: 1. Einfuhrung in Matlab

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.

Page 36: 1. Einfuhrung in Matlab

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

Page 37: 1. Einfuhrung in Matlab

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

Page 38: 1. Einfuhrung in Matlab

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

Page 39: 1. Einfuhrung in Matlab

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,

Page 40: 1. Einfuhrung in Matlab

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

Page 41: 1. Einfuhrung in Matlab

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

Page 42: 1. Einfuhrung in Matlab

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

Page 43: 1. Einfuhrung in Matlab

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

Page 44: 1. Einfuhrung in Matlab

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

Page 45: 1. Einfuhrung in Matlab

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

Page 46: 1. Einfuhrung in Matlab

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

Page 47: 1. Einfuhrung in Matlab

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-

Page 48: 1. Einfuhrung in Matlab

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

Page 49: 1. Einfuhrung in Matlab

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

Page 50: 1. Einfuhrung in Matlab

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

Page 51: 1. Einfuhrung in Matlab

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-

Page 52: 1. Einfuhrung in Matlab

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

Page 53: 1. Einfuhrung in Matlab

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

Page 54: 1. Einfuhrung in Matlab

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

Page 55: 1. Einfuhrung in Matlab

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

Page 56: 1. Einfuhrung in Matlab

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

Page 57: 1. Einfuhrung in Matlab

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

Page 58: 1. Einfuhrung in Matlab

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.

Page 59: 1. Einfuhrung in Matlab

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.

Page 60: 1. Einfuhrung in Matlab

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

Page 61: 1. Einfuhrung in Matlab

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

Page 62: 1. Einfuhrung in Matlab

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

Page 63: 1. Einfuhrung in Matlab

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

Page 64: 1. Einfuhrung in Matlab

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.

Page 65: 1. Einfuhrung in Matlab

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

Page 66: 1. Einfuhrung in Matlab

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-

Page 67: 1. Einfuhrung in Matlab

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

Page 68: 1. Einfuhrung in Matlab

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

Page 69: 1. Einfuhrung in Matlab

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

Page 70: 1. Einfuhrung in Matlab

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

Page 71: 1. Einfuhrung in Matlab

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)

Page 72: 1. Einfuhrung in Matlab

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

Page 73: 1. Einfuhrung in Matlab

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]

Page 74: 1. Einfuhrung in Matlab

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

Page 75: 1. Einfuhrung in Matlab

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

Page 76: 1. Einfuhrung in Matlab

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]

Page 77: 1. Einfuhrung in Matlab

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

Page 78: 1. Einfuhrung in Matlab

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

Page 79: 1. Einfuhrung in Matlab

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'

Page 80: 1. Einfuhrung in Matlab

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