You are on page 1of 182

TECHNISCHE UNIVERSITT DRESDEN

Fakultt Maschinenwesen
Institut fr Verfahrenstechnik & Umwelttechnik
Professur fr Verfahrensautomatisierung

HANDBUCH
MATLAB & SIMULINK
zum Gebrauch in den Lehrveranstaltungen
des Vertiefungsfachs

Verfahrensautomatisierung

Dresden, Oktober 2009

Prof. Dr.-Ing. habil. W. Klden

1-2
1.
1.1

Einleitung
Einleitung
MATLAB/Simulink als Werkzeuge

MATLAB und Simulink sind, einem neueren Sprachgebrauch folgend, integrierte Problemlsungsumgebungen (integrated problem solving environment). Im Gegensatz zur klassischen
Programmierumgebung stellen derartige Umgebungen neben einer Programmiersprache Werkzeuge und Bibliotheken bereit, die auf einem hohen Niveau in die Problemlsung integriert
werden knnen. Das sind vor allem leistungsfhige Grafik-Funktionen, einfach aufrufbare
numerische Lsungsverfahren und Toolboxes fr bestimmte Anwendungsfelder, die ihre
Funktionalitt sowohl auf der Ebene der Programmiersprache als auch ber integrierte grafische
Oberflchen dem Anwender zur Verfgung stellen.
MATLAB ist ein interaktiv nutzbares Programmiersystem, dass vor allem durch die einfach zu
handhabenden Matrizenoperationen (MATLAB ist die Kurzform von MATrix LABoratory)
ausgezeichnet ist. Die fr MATLAB entwickelten Toolboxes decken ein weites Anwendungsfeld ab. Die folgenden Tool-Boxes sind am Institut verfgbar:
S
Control System Toolbox
S
Neural Network Toolbox
S
Fuzzy Logic Toolbox
S
Optimization Toolbox
S
Statistics Toolbox
Im folgenden werden fr MATLAB die Version 6 und fr SIMULINK die Version 4 angenommen. Eine Reihe von Eigenschaften ist auch fr vorangegangene Versionen noch zutreffend; es
wird aber darauf verzichtet, die Unterschiede zu anderen Versionen zu erlutern.
Die folgende Literatur ist zu empfehlen:
[1]

Using MATLAB," Using SIMULINK


The MathWorks Inc., 2009
Es sind dies die Originalhandbcher des Systementwicklers.

[2]

berhuber, Ch. ; Katzenbeisser, St.


MATLAB 7 - eine Einfhrung
Springer, Wien, 2004
In dieser einfhrenden Darstellung sind die grundlegenden Programmiertechniken sowie
die wichtigsten Funktionen von MATLAB 7 kurz und bersichtlich dargestellt worden.

[3]

Angermann, A. ; u.a.
Matlab, Simulink, Stateflow
Oldenbourg, Mnchen, 2009, (6. Aufl.)
Das Buch bietet eine ausfhrliche Einfhrung mit vielen Beispielen, auch aus dem
Bereich der Automatisierungstechnik.

[4]

Constantinides, A. ; Mostoufi, N
Numerical Methods for Chemical Engineers with MATLAB Applications
Prentice Hall, 2000
Das Buch enthlt neben den numerischen Verfahren viele Beispiele und Aufgaben.

Einleitung
1.2

1-3

Die Benutzeroberflche von MATLAB

In der folgenden Abbildung ist die Benutzeroberflche von MATLAB dargestellt.

Das Fenster der Benutzeroberflche gliedert sich in folgende Teilfenster:


S

Command Window

Command History

Dieses Fenster ist der eigentliche Arbeitsbereich; nach dem


Prompt-Zeichen >> kann der Benutzer Kommandos eingeben.
Hier werden die Befehle, die in der Vergangenheit ausgefhrt
wurden, angezeigt. Der Benutzer kann ber markieren/kopieren
zurckliegende Befehle wieder in das Kommandofenster holen.

Die folgenden Fenster lassen sich wahlweise aktivieren


S
Workspace
Dieses Fenster gestattet den Zugriff auf die definierten Variablen
im Arbeitsbereich.
S
Current Directory
ber dieses Fenster kann der aktuelle Zugriffspfad eingesehen
und verndert werden.
Das Erscheinungsbild der Benutzeroberflche kann ber den Menpunkt View des Hauptmens
modifiziert werden. Im folgenden Bild sind die Bedeutungen der wesentlichen Menpunkte des
Hauptmens sowie der wichtigsten Buttons des Toolbar erlutert.

1-4

Einleitung
File-Men - ber das entsprechende Pull-Down-Men lassen sich u. a. Dateien ffnen,
neue Dateien erzeugen, Standardeinstellungen verndern.
In diesem Men werden die Funktionen fr die Editierung von Texten bereitgestellt.
ber dieses Men kann das Erscheinungsbild der Benutzeroberflche gendert
werden.

SIMULINK wird aktiviertDas aktuelle Verzeichnis


wird angezeigt

Die on-line-Hilfe wird aktiviert.


Es gibt ein sehr umfangreiches System zur on-line-Hilfe. Der Hilfe-Navigator ist in der folgenden Abbildung dargestellt:

Einleitung
1.3

1-5

Der Texteditor

Fr die Erzeugung und Editierung von Programmtexten (Skripte oder Funktionen) stellt die
Entwicklungsumgebung einen Editor bereit; das Erscheinungsbild ist folgender Abbildung zu
entnehmen:

Die in der Menleiste angebotenen Funktionen lassen erkennen, dass dieses Editierwerkzeug
mehr ist als ein einfacher Quelltexteditor. Im besonderen stellt der Editor einen integrierten
Debugger bereit. Die wichtigsten Menpunkte werden im folgenden erlutert:
S

File

S
S
S

Edit
View
Debug

Die blichen File-Funktionen wie ffnen, Speichern, Drucken usw.


werden hier definiert.
Die Editierfunktionen fr Texte werden definiert.
Das Erscheinungsbild des Editors kann verndert werden.
Es erscheinen Menpunkte, die die schrittweise Programmbearbeitung
ermglichen oder ber die die Abarbeitung gestartet werden kann.

ber die Buttons des Toolbar lassen sich bestimmte Funktionen sehr schnell aktivieren (so die
Anzeige ausgewhlter Funktionen oder das Suchen von Textabschnitten).

1-6
1.4

Einleitung
Die Benutzeroberflche von Simulink

Simulink wird aus der MATLAB-Umgebung heraus aktiviert. Nach dieser Aktivierung erscheint
das folgende Fenster:

ber dieses Fenster wird die Modell-Bibliothek von SIMULINK erreichbar. Fr den Aufbau
einer Simulationsstruktur, die aus Elementen dieser Bibliothek bestehen soll, muss der Benutzer
ber den New-Menpunkt im File-Men oder ber das entsprechende Button des Toolbar dieses
Fensters ein neues, leeres Fenster fr den Arbeitsbereich erzeugen. Die Elemente werden dann
per Mausklick in den Arbeitsbereich gezogen.
Das linke Teilfenster stellt den Navigator fr die Abschnitte der Modellbibliothek zur Verfgung; im rechten Teilfenster erscheinen die im jeweils ausgewhlten Abschnitt verfgbaren
Blcke.

Elementare Konstrukte
2.
2.1

2-1

Elementare Konstrukte in MATLAB


Die interaktive Arbeitsweise

Im folgenden wird stets davon ausgegangen, dass das Kommandofenster der Benutzeroberflche
aktiv ist. Der Anwender kann zunchst das System interaktiv im reinen Kommandobetrieb
nutzen. Dabei wird im Kommandofenster nach dem Kommandoprompt >> eine Zeichenfolge
fr ein Kommando eingegeben. Nach Abschluss der Zeichenfolge durch die <ENTER>-Taste
wird das Kommando sofort ausgefhrt. Folgende Regeln sind bezglich der Kommandozeile zu
beachten:

Mit den Cursor-Steuertasten <8> und <9> kann unter den zurckliegenden Kommandos
geblttert werden.

Mit den Tasten fr die horizontale Cursor-Steuerung sowie mit den Korrekturtasten
kann die Kommandozeile editiert werden.

Sollen mehrere Kommandos auf einer Zeile eingegeben werden, so sind sie jeweils
durch Komma zu trennen.

Soll die Resultatausgabe eines Kommandos unterdrckt werden, so ist die Kommandozeile mit einem Semikolon abzuschlieen.

Soll ein Kommando auf der folgenden Bildschirmzeile fortgesetzt werden, so ist vor der
Bettigung der <ENTER>-Taste die Zeichenfolge ... ( drei Punkte ) einzugeben.

Ein Kommentar beginnt mit dem Prozentzeichen %. Der Kommentar kann an beliebiger
Stelle beginnen; der Rest der Kommandozeile wird von da an nicht interpretiert.

Die Taschenrechnerfunktion
Im einfachsten Fall werden als Kommandos arithmetische Ausdrcke eingegeben, die lediglich
aus numerischen Konstanten, Standardfunktionen (trigonometrische Funktionen, Exponentialfunktion usw.) und arithmetischen Operatoren bestehen. Die Ausdrcke mssen den blichen
syntaktischen Regeln gengen. Auch Vektoren und Matrizen lassen sich in diesem Bearbeitungsmodus verknpfen (nheres zu Vektoren und Matrizen s. Abschnitt 2.2.3)
<

Beispiel

>> 123.6*exp(-2.4)/0.47
ans =
23.8569
>> [1 2 3]*[2 3 4]' %Skalarprodukt zweier Vektoren
ans =
20
>>
Die Variable ans wird durch das System mit dem Ergebnis belegt; auf sie kann in nachfolgenden
Berechnungen Bezug genommen werden. Der Ergebnis-Typ wird durch die jeweilige Berechnung dynamisch festgelegt. Die Anzeige des Resultats erfolgt in dem Beispiel, da das
Kommando nicht mit ; abgeschlossen wurde.

Die Kommandofolge - sequentielle Programmierung


Der Anwender kann im Rahmen eines Kommandos auch Variable definieren bzw. auf diese
Bezug nehmen. Weiterhin kann er im Rahmen eines Kommandos auch MATLAB-Funktionen
aufrufen. Prinzipiell kann er auch strukturierende Anweisungen (z.B. Laufanweisungen) im
Kommandobetrieb eingeben. Der Anwender kann somit einfache Berechnungsvorschriften sehr

2-2

Elementare Konstrukte

schell zur Abarbeitung bringen. Vor allem ist diese Betriebsweise von Bedeutung, wenn durch
eine umfangreiche MATLAB-Funktion Ergebnisse erzeugt werden, die je nach konkreter
Situation unterschiedlich weiter zu bearbeiten sind. Die Kommandofolge kann auf alle Variablen Bezug nehmen, die im Workspace verfgbar sind.
<

Beispiel

>> H=4;
>> V=pi/4*H
V =
3.1416

Der Funktionsaufruf
Wenn ein Kommando-Skript oder eine Funktion aktiviert werden sollen, so ist wenigstens der
Aufruf als MATLAB-Kommando notwendig. Mit den Resultaten, sofern sie nach der Abarbeitung noch verfgbar sind, kann im Kommandobetrieb anschlieend weitergearbeitet
werden.
2.2
2.2.1

Konstanten und Variable


Konstanten

Numerische Konstanten
Der Typ numerischer Konstanten wird aus ihrer Darstellung abgeleitet. Wird ein Dezimalpunkt
verwendet, so handelt es sich um eine reelle Konstante, sonst um eine ganzzahlige. Fr reelle
Konstanten kann auch die Schreibweise mit Zehnerpotenz (halblogarithmische Notation)
verwendet werden. Als Zeichen fr den Beginn des Exponentialteils wird der Buchstabe e (auch
E ist zulssig) verwendet.
Vordefinierte Konstanten (Schreibweise mit Kleinbuchstaben beachten!) sind:
pi
i,j

imaginre Einheit

Zeichenketten-Konstanten
Zeichenketten-Konstanten sind beliebige Zeichenfolgen, die in (Hochkomma) eingeschlossen werden.
<

Beispiele

>> 2.3e3+5i
ans =
2.3000e+003 +5.0000e+000i
>> 2.4*exp(4*pi*j)
ans =
2.4000 - 0.0000i
>> 2.4*exp(3*pi*j)
ans =
-2.4000 + 0.0000i
>> einheit='W/mK'

Elementare Konstrukte

2-3

einheit =
W/mK
Hinweis:

2.2.2

Der Multiplikationsstern zwischen einer numerischen Konstanten und der imaginren Einheit kann entfallen.

Einfache Variable

Einfache (skalare) Variable werden durch einen Bezeichner implizit durch Zuweisung eines
Wertes definiert. Der Typ des Wertes bestimmt den Typ der Variablen. Insbesondere werden
komplexe Variable durch Zuweisung eines komplexen Ausdrucks deklariert.
Fr Bezeichner im allgemeinen und fr Variablenbezeichner im besonderen gelten folgende
Regeln:
S
Ein Bezeichner beginnt immer mit einem Buchstaben.
S
Ab dem zweiten Zeichen sind auch Ziffern sowie der Unterstrich _ zugelassen.
S
Es werden nur die ersten 31 Zeichen eines Bezeichners unterschieden.
S
Gro-/Kleinbuchstaben werden unterschieden.
<

Beispiele

>> T=5; omega=2*pi/T


omega =
1.2566
>> % Im folgenden werden komplexe Variable eingefhrt und verknpft
>> x=3.5+6j; y=6.9-5.2j;
>> phi=angle(x*y)
phi =
0.3969
>> r=abs(x)*abs(y)
r =
60.0155
>> real_teil=real(x*y)
real_teil =
55.3500
>> imaginaer_teil=imag(x*y)
imaginaer_teil =
23.2000
>> x*y
ans =
55.3500 +23.2000i
2.2.3

Vektoren und Matrizen

Auch Variable fr Vektoren und Matrizen werden implizit durch eine Wertzuweisung deklariert. Vektoren und Matrizen lassen sich in ihrer Zeilen-/Spaltenstruktur in MATLAB auf
einfache Weise definieren. Es gelten folgende Regeln:

2-4
S

Elementare Konstrukte
Die Komponenten eines Zeilenvektors werden als Liste in eckigen Klammern notiert.
Als Trennzeichen sind Leerzeichen und/oder Komma zugelassen. Als Elemente eines
Vektors sind Konstanten oder arithmetische Ausdrcke, die auf skalare Ergebnisse
fhren, zulssig. Als Syntaxformel1 lsst sich die Definition wie folgt schreiben:
zeilenvektor 6 [ element , ... ]

Die Komponenten eines Spaltenvektors werden als Liste in eckigen Klammern notiert,
wobei als Trennzeichen das Semikolon zu verwenden ist. Alternativ dazu kann der
Spaltenvektor als Zeilenvektor notiert werden und ist dann mit dem Transpositionsoperator (Hochkomma) abzuschlieen. Als Syntaxformel ergibt sich
spaltenvektor 6 [ element ; ... ] | [ element , ... ]

Matrizen werden als Listen von Zeilen- oder Spaltenvektoren notiert. Die eckigen
Klammern fr die Zeilenvektoren knnen entfallen. Alle Zeilen-/Spaltenvektoren
mssen die gleiche Lnge besitzen. Als Syntaxformel ergibt sich
matrix 6 [ zeilenvektor ; ... ] | [ spaltenvektor , ... ]

Mit der Zuweisung einer nach den genannten Regeln definierten Datenstruktur werden Dimension und Elemente einer Vektor-/Matrixvariablen festgelegt. Der Zugriff auf den Vektor/die
Matrix als Ganzes erfolgt ber den Bezeichner der Vektor-/Matrixvariablen. Soll dagegen nur
auf ausgewhlte Elemente zugegriffen werden, ist nach folgenden Regeln zu verfahren:
S

Der Zugriff erfolgt ber Indizes, die dem Namen des Vektors/der Matrix folgend in
runden Klammern eingeschlossen und gegebenfalls durch Komma getrennt werden. Bei
Matrizen ist der erste Index der Zeilen- und der zweite der Spaltenindex.
feldzugriff 6 name_vektor ( index ) | name_matrix ( index , index )

Wenn auf ein einzelnes Element zugegriffen werden soll, so sind die Indizes ganzzahlige
Ausdrcke (im einfachsten Fall ganzzahlige Konstanten). Soll dagegen auf gewisse
Teilabschnitte des Vektors/der Matrix Bezug genommen werden, ist der Indexbereich zu
verwenden. Es ergeben sich die folgenden Syntaxformeln:
index 6 ganzzahliger_ausdruck | indexbereich
indexbereich 6 : | ganzzahliger_ausdruck : ganzzahliger_ausdruck |
ganzzahliger_ausdruck : ganzzahliger_ausdruck : ganzzahliger_ausdruck

S
S
S
S
S
S

Fr Syntaxformeln gelten folgende Regeln:


Alle beschreibenden (metasprachlichen) Begriffe werden in Kleinschreibung notiert.
Die definierten Begriffe (linke Seite der Formel) werden durch das Zeichen 6 abgeschlossen.
Alle Elemente der zu definierenden Sprache (Schlsselwrter , Opereratoren) werden fett dargestellt.
Mgliche W iederholungen eines Konstruktes werden durch ... angegeben.
Optionale Konstrukte werden in Kursivschrift dargestellt.
Alternative Konstrukte werden als Liste notiert, wobei als Trennzeichen | verwendet wird.

Elementare Konstrukte

2-5

Die drei Varianten, die fr den Indexbereich mglich sind, besitzen folgende Bedeutungen:
#
Wenn nur ein Doppelpunkt notiert wird, so wird der Indexbereich der definierenden Anweisung herangezogen.
#
Wenn zwei Ausdrcke, durch Doppelpunkt getrennt, notiert werden, so definiert
der erste Ausdruck den unteren Wert des Indexbereichs und der obere Ausdruck
den oberen Wert des Indexbereichs.
#
Werden drei Ausdrcke, jeweils durch Doppelpunkte getrennt, notiert, so definiert der mittlere Ausdruck zustzlich die Schrittweite fr die Indexzhlung.

<

Beispiele

>> a=2;
>> A=[a*a a*a*a a*a*a*a; 2*a 3*a 4*a; a/2 a/4 a/8]
A =
4.0000
8.0000
16.0000
4.0000
6.0000
8.0000
1.0000
0.5000
0.2500
>> B=A(1:2,2:3)
B =
8
16
6
8
>> C=A(1:2:3,1:2:3)
C =
4.0000
16.0000
1.0000
0.2500
>> D=A(:,1:2)
D =
4.0000
8.0000
4.0000
6.0000
1.0000
0.5000
2.2.4

Strukturen

Strukturierte Variable enthalten Datenfelder, die unterschiedlich typisiert sein knnen. Die
Felder werden ber Feldbezeichner eingefhrt. Die Definition erfolgt wiederum implizit durch
Wertzuweisungen zu den Feldern. Es lassen sich auch Vektoren und Matrizen von strukturierten
Variablen aufbauen. Es gilt folgende Syntax:
strukturierte_variable 6 strukturbezeichner ( index, index ) . feldbezeichner
feldbezeichner 6 bezeichner | feldzugriff | strukturierte_variable
Der Strukturbezeichner steht fr das heterogene Datenfeld als Ganzes. Der Feldbezeichner steht
fr einen Subcontainer, der die Daten aufnimmt. Bedingt durch die implizite Deklaration der
Datenfelder ergibt sich die konkrete Bedeutung eines Feldbezeichners durch die Zuweisung. Die

2-6

Elementare Konstrukte

Syntaxformel definiert eine groe Vielfalt an Mglichkeiten. Insbesondere kann ein Feldbezeichner wiederum eine Struktur reprsentieren.
In der folgenden Tabelle sind die wichtigsten MATLAB-Funktionen, die sich auf Strukturen
beziehen, zusammengestellt. Der Bezeichner s steht fr eine strukturierte Variable, die Bezeichner f1, ...fn fr Datenfelder; f kennzeichnet den Namen des Feldes f als Zeichenkette.
Funktion

Ergebnistyp

Bedeutung

zellulres
Feld

Die Funktion liefert in einem zellulren Feld


die Bezeichner der Datenfelder.

getfield(s,f)

Typ von f

Die Funktion liefert den Inhalt des Datenfeldes, dessen Bezeichner als Zeichenkette bergeben wird (entspricht dem Zugriff s.f).

rmfield(s,f)

Struktur

Entfernt das Datenfeld, dessen Bezeichner als


Zeichenkette bergeben wird, aus der Struktur.

setfield(s,f,v)

Struktur

Setzt den Wert des Datenfeldes, dessen Bezeichner als Zeichenkette bergeben wird, auf
den Wert v (entspricht s.f = v).

struct(f1',v1,..)

Struktur

Weist den Feldern der Struktur, deren Bezeichner als Zeichenketten bergeben werden,
Werte zu.

struct2cell

zellulres
Feld

Die Funktion konvertiert die strukturierte Variable in ein zellulres Feld.

<

fieldnames(s)

Beispiele

>> daten.name='erster Versuch';


>> daten.daten=[1.3 4.5; 2.3 8.7 ; 3.3 13.2];
>> daten.n=3;
>> daten.mittel_x=sum(daten.daten(:,1))/daten.n
daten =
name: 'erster Versuch'
daten: [3x2 double]
n: 3
mittel_x: 2.3000
>> daten.mittel_y=sum(daten.daten(:,2))/daten.n
daten =
name: 'erster Versuch'
daten: [3x2 double]
n: 3
mittel_x: 2.3000
mittel_y: 8.8000
>> fieldnames(daten)

Elementare Konstrukte

2-7

ans =
'name'
'daten'
'n'
'mittel_x'
'mittel_y'
2.2.5

Zellulre Felder (Cells)

Cells bzw. zellulre Felder sind den Strukturen sehr hnlich; auch sie bestehen aus Zellen, die
Daten unterschiedlichen Typs enthalten. Die Zellen erhalten aber keine Namen. Der Zugriff auf
eine Zelle erfolgt ber den Zellenindex. Ein zellulres Feld wird als Liste seiner Elemente
(Zellen) definiert. Diese Liste steht in geschweiften Klammern. Das trennende Komma zwischen den Elementen kann entfallen.
zellulres_feld 6 { element , ...}
Als Elemente sind alle syntaktisch korrekten Ausdrcke und Datenstrukturen zugelassen. Der
Zugriff auf eine Zelle wird wie folgt realisiert:
zell_zugriff 6 variablen_bezeichner { index }
Der Variablenbezeichner kennzeichnet das zellulre Feld als Ganzes; der Index wird nach den
gleichen Regeln wie bei Vektoren und Matrizen gebildet.
In der folgenden Tabelle sind die wichtigsten MATLAB-Funktionen, die sich auf zellulre
Felder beziehen, zusammengestellt. Der Bezeichner c steht fr zellulres Feld, die Bezeichner
c1,.. cn fr Zellen des Feldes sowie f1, ...fn fr Datenfelder in einer strukturierten Variablen; f
kennzeichnet den Namen des Feldes f als Zeichenkette.
Funktion

Ergebnistyp

Bedeutung

cell(n)

zellulres
Feld

Es wird ein n x n - zellulres Feld erzeugt,


dass aus leeren Feldern besteht.

cell2struct(c,f,d)

Struktur

Das zellulre Feld c wird in eine Struktur


konvertiert, wobei im Feld f die Feldbezeichner stehen mssen und d die Dimension angibt. f kann eine Char-Matrix oder
ein zellulres Feld sein.

celldisp(c)

Der Inhalt der Zellen wird angezeigt.

cellplot(c)

Der Inhalt der Zellen wird in einer grafischen Figur angezeigt.

num2cell(A)

zellulres
Feld

Das numerische Feld (Skalar..Matrix) wird


in ein zellulres Feld konvertiert.

2-8
<

Elementare Konstrukte
Beispiele

>> problemdaten={'Messungen' 4 [1.4 2.3 ; 1.8 2.8 ; 2.0 3.4; 2.4 4.1]}
problemdaten =
'Messungen'
[4]
[4x2 double]
>> problemdaten{1}
ans =
Messungen
>> problemdaten{3}
ans =
1.4000
2.3000
1.8000
2.8000
2.0000
3.4000
2.4000
4.1000
>> c={'Versuchdaten',[1.2 4.7; 2.3 8.9; 4.5 12.6], 3}
c =
'Versuchdaten'
[3x2 double]
[3]
>> felder={'name','daten','versuchsanzahl'};
>> s=cell2struct(c,felder,2)
s =
name: 'Versuchdaten'
daten: [3x2 double]
versuchsanzahl: 3
>> s.daten
ans =
1.2000
4.7000
2.3000
8.9000
4.5000
12.6000
>> A=[1 2 3 ; 4 5 6];
>> c=num2cell(A)
c =
[1]
[2]
[3]
[4]
[5]
[6]

2.3

Ausdrcke

Ausdrcke stellen Verknpfungen zwischen Konstanten und Variablen ber definierte Operatoren her. In MATLAB ergibt sich die Bedeutung der Operatoren aus den Typen der verknpften
Variablen (die Bedeutungen der Operatoren sind damit kontextabhngig). Wenn Ausdrcke
bezglich ihres Typs unterschieden werden, so bezieht sich das darauf, dass die Resultate der
Verknpfungen unterschiedlichen Typen angehren knnen. Das ist durchaus sinnvoll, da mit
der Zuweisung eines Ausdrucks zu einer Variablen diese den Typ des Wertes des Ausdrucks
annimmt (implizite Deklaration der Variablen).
2.3.1

Skalare Ausdrcke

Skalare Ausdrcke verknpfen Konstanten, skalare Variable, Vektoren, Matrizen sowie Ergebnisse von Funktionsaufrufen so, dass sich skalare Resultate ergeben. Dabei kann noch genauer
zwischen den einfachen Typen komplex, reell und ganzzahlig unterschieden werden. Bezglich
der Syntax von skalaren Ausdrcken gelten die blichen Regeln fr arithmetische Ausdrcke.

Elementare Konstrukte

2-9

Insbesondere gelten die blichen Vorrangregeln der arithmetischen Operatoren und die assoziative Wirkung von Klammern.
Neben den vier Standardoperatoren ( + | - | * | / ) gibt es auch den Potenzoperator, der durch das
Zeichen ^ kodiert wird. Die Basis und der Exponent mssen dabei skalare Ausdrcke sein.
Die in der folgenden Tabelle zusammengestellten arithmetischen Standardfunktionen besitzen
als Argumente ebenfalls skalare Ausdrcke; das heit aber nicht, dass sie nur in skalaren
Ausdrcken auftreten knnen!
MATLAB-Funktion

Typ des
Arguments

Typ des
Resultats

abs(x)

reell, komplex

reell

|x|

acos(x)

reell

reell

Arc cos(x)

acosh(x)

reell

reell

Areacosinus hyperbolicus von x

angle(x)

komplex

reell

Phasenwinkel von x

asin(x)

reell

reell

Arc sin (x)

asinh(x)

reell

reell

Areasinus hyperbolicus von x

atan(x)

reell

reell

Arc tan (x) in [- / 2 , / 2]

atan2(x)

reell

reell

Arc tan (x) in [- , ]

atanh(x)

reell

reell

Areatangens hyperbolicus von x

ceil(x)

reell

ganzzahlig

Rundet x auf nchstgrte ganze


Zahl

conj(x)

komplex

komplex

Konjugiert komplexe Zahl zu x

cos(x)

reell

reell

cos (x)

cosh(x)

reell

reell

Cosinus hyperbolicus von x

exp(x)

reell

reell

ex

fix(x)

reell

ganzzahlig

Ganzzahliger Teil von x

floor(x)

reell

ganzzahlig

Rundet x auf nchstkleinere ganze Zahl

gcd(x,y)

ganzzahlig

ganzzahlig

Grter gemeinsamer Teiler von


x und y

imag(x)

komplex

reell

lcm(x,y)

ganzzahlig

ganzzahlig

reell

reell

log(x)

Bedeutung

Imaginrteil von x
Kleinstes gemeinsames Vielfaches von x und y
ln x

2 - 10

Elementare Konstrukte

log2(x)

reell

reell

ld x - dualer Logarithmus

log10(x)

reell

reell

lg x - dekadischer Logarithmus

mod(x,y)

ganzzahlig

ganzzahlig

real(x)

komplex

reell

Realteil von x

rem(x,y)

reell

reell

Rest der Division von x durch y

round(x)

reell

ganzzahlig

sign(x)

reell

reell

Signum (-1, 0 , 1) von x

sin(x)

reell

reell

sin (x)

sinh(x)

reell

reell

Sinus hyperbolicus von x

sqrt(x)

reell

reell

tan(x)

reell

reell

tan (x)

tanh(x)

reell

reell

Tangens hyperbolicus von x

2.3.2

x Modulo y

Rundet zur nchsten ganzen


Zahl auf bwz. ab.

Vektorausdrcke

Vektorausdrcke verknpfen Konstanten, skalare Variable, Vektoren, Matrizen sowie Ergebnisse von Funktionsaufrufen so, dass sich Vektoren als Resultate ergeben. Dabei mssen die
Typen der Teilausdrcke miteinander vertrglich sein. In diesem Zusammenhang ist zu beachten,
dass die folgende Operationen zwischen Vektoren einen Vektor zum Ergebnis haben:
Operator

Operation

Bedeutung

Prioritt

.^

v .^ w

.*

v .* w

./

v ./ w

v+w

v-w

Beachte:

Die Verknpfung

liefert das Skalarprodukt der Vektoren!

Fr die Operation der Transposition wird das Zeichen (Hochkomma) verwendet.


In der folgenden Tabelle sind Operationen zusammengestellt, die zwischen Vektoren und
Skalaren mglich sind; dabei bezeichne v einen Vektor/Vektorausdruck und c ein Skalar/einen
skalaren Ausdruck:

Elementare Konstrukte
Operator

2 - 11

Operation

Bedeutung

Prioritt

.^

v .^ c

.^

c .^ v

.* oder *

v*c

./ oder /

v ./ c

./

c ./ v

v+c

v-c

In Vektorausdrcken knnen auch Bereichsvariable auftreten. Diese sind wie folgt definiert:
bereichsvariable 6 untere_grenze : schrittweite : obere_grenze
Die Bereichsvariable definiert implizit einen Vektor, dessen Komponenten gerade die Werte
sind, die sich durch Abarbeitung der Bereichsdefinition ergeben. Fehlt die Schrittweite, wird der
Wert 1 angenommen.
In der folgenden Tabelle sind wichtige MATLAB-Funktionen zusammengestellt, die als Argumente Vektorausdrcke besitzen; der Argumenttyp wird in der Tabelle darum nicht gesondert
angegeben. Ist das Ergebnis ein Skalar, so richtet sich der detaillierte Typ (ganzzahlig, reell,
komplex) nach dem Typ der Elemente des Vektorausdrucks.
Funktion
find(v)

Ergebnistyp
vektor./ganzz.

Bedeutung
Die Funktion liefert die Indizes der Vektorelemente, die von Null verschieden sind.

hist(v,x)

vektor./reell

Fr die Elemente von v wird ein Histogramm erzeugt, wobei der Vektor x die Klassenmittelpunkte definiert. Wird die Funktion ohne Wertzuweisung aufgerufen, so wird das Histogramm automatisch grafisch dargestellt.

length(v)

ganzzahlig

Die Lnge des Vektors wird bestimmt.

max(v)

skalar

Das grte Element wird bestimmt.

mean(v)

skalar

Der Mittelwert der Elemente wird bestimmt.

min(v)

skalar

Das kleinste Element wird bestimmt.

norm(v)

reell

Die Euklidische Norm des Vektors wird bestimmt.

2 - 12

Elementare Konstrukte

norm(v,p)

reell

skalar

std(v)

reell

sort(v)

vektoriell

sum(v)

skalar

<

prod(v)

Die Vektornorm
wird bestimmt. Wird fr p
die Konstante Inf gewhlt, so wird die Maximalnorm
bestimmt.
Das Produkt der Vektorelemente wird bestimmt.
Die Standardabweichung der Vektorelemente
wird bestimmt.
Die Vektorelemente werden in aufsteigender Reihenfolge sortiert.
Die Summe der Vektorelemente wird bestimmt.

Beispiele

>> v=[ 1.4 5.6 7.9 11.1 ]; w=[1.1+12j 3.4+7.3j 23 6.2j];


>> v.*w
ans =
1.0e+002 *
0.0154 + 0.1680i
0.1904 + 0.4088i
1.8170 0 + 0.6882i
>> w-v
ans =
-0.3000 +12.0000i -2.2000 + 7.3000i 15.1000 -11.1000 + 6.2000i
>> max(w)
ans =
23
>> min(w)
ans =
0 + 6.2000i
>> prod(w)
ans =
-6.9632e+003 -1.1958e+004i
>> sum(w)
ans =
27.5000 +25.5000i
>> mean(w)
ans =
6.8750 + 6.3750i
>> sort(w)
ans =
0 + 6.2000i
3.4000 + 7.3000i
1.1000 +12.0000i 23.0000
>> v*w' % Das ist das Skalarprodukt der Vektoren v , w!
ans =
2.0228e+002 -1.2650e+002i
>> x=-pi/2:0.2*pi:pi/2 % Definition durch Bereichsvariable
x =
-1.5708
-0.9425
-0.3142
0.3142
0.9425
1.5708
>> y=sin(x)
y =
-1.0000
-0.8090
-0.3090
0.3090
0.8090
1.0000

Elementare Konstrukte
2.3.3

2 - 13

Matrizenausdrcke

Matrizenausdrcke verknpfen Konstanten, skalare Variable, Vektoren, Matrizen sowie Ergebnisse von Funktionsaufrufen so, dass sich Matrizen als Resultate ergeben. Dabei mssen die
Typen der Teilausdrcke miteinander vertrglich sein. Die im Abschnitt 2.3.2 definierten
Operationen zwischen Vektor und Vektor bzw. zwischen Vektor und Skalar sind sinngem auf
Matrizen zu bertragen; das Ergebnis ist dann auch eine Matrix.
Beachte:

Das Produkt A*B liefert das Matrizenprodukt der Matrizen A und B!

In der folgenden Tabelle sind wichtige MATLAB-Funktionen, die sich auf die Arbeit mit
Matrizen beziehen, zusammengestellt. Folgende Bezeichnungen fr die Argumente wurden
gewhlt:
A, D, V, L, U Matrizen (bzw. Matrizenausdrcke)
d, v
Vektoren
n, m , p
ganzzahlige Ausdrcke
Funktion

Typ des Resultats

Bedeutung

chol(A)

Matrix

CHOLESKY -Faktorisierung (A muss positiv definit


sein!). Diese Zerlegung liefert eine Matrix C, so dass
gilt A = C CT

cond(A)

Skalar

Konditionszahl von A.

condest(A)

Skalar

Schtzung fr die Konditionszahl von A.

det(A)

Skalar

Determinante von A

diag(v)

Matrix

Es wird eine Diagonalmatrix erzeugt, die den Vektor


v in der Hauptdiagonale enthlt.

eig(A)

Vektor/Matrix
d = eig(A)
[V D ] = eig(A)

Eigenwerte und Eigenvektoren von A.


In d wird der Vektor der Eigenwerte bereitgestellt.
V enthlt als Spalten die Eigenvektoren von A und
D ist eine Diagonalmatrix, die in der Diagonalen die
Eigenwerte enthlt.

expm(A)

Matrix

Matrix-Exponentialfunktion.

eye(n)

Matrix

Es wird eine n x n - Einheitsmatrix erzeugt.

inv(A)

Matrix

Inverse von A.

lu(A)

[L U] = lu(A)

norm(A)

Skalar

LU-Faktorisierung von A. In U steht dabei eine


obere Dreiecksmatrix; es gilt A = L * U
Euklidische Norm von A.

2 - 14

Elementare Konstrukte

norm(A,p)

Skalar

p-Norm von A.

ones(n,m)

Matrix

Es wird eine n x m - Matrix erzeugt, deren Elemente


alle den Wert 1 besitzen.

pinv(A)

Matrix

Pseudoinverse von A nach MOORE -PENROSE.

poly(A)

Vektor

Koeffizientenvektor des charakteristischen Polynoms von A.

rand(n,m)

Matrix

Es wird eine n x m - Matrix erzeugt, deren Elemente


gleichverteilte Zufallszahlen aus dem Intervall (0,1)
sind.

randn(n,m)

Matrix

Es wird eine n x m - Matrix erzeugt, deren Elemente


standard-normalverteilte Zufallszahlen aus dem Intervall (0,1) sind.

rank(A)

Skalar

Rang von A.

size(A)

Vektor

Der Vektor [n,m] enthlt die Zeilen/Spalten-Lngen.

sortrows(A)

Matrix

Die Zeilen von A werden in aufsteigender Reihenfolge sortiert.

svd(A)
zeros(n,m)

Vektor/Matrix
Matrix

Singulrwertzerlegung von A.
Es wird eine n x m - Matrix erzeugt, deren Elemente
alle den Wert 0 besitzen.

<
Beispiele
>> A=[1.2 3.4 5.7; -2.2 -1.4 1.2; 23.6 5.6 8.3];
>> eig(A)
ans =
17.0287
-6.6975
-2.2312
>> [V D]=eig(A)
V =
-0.3426
0.4353
0.0335
-0.0203
0.3670
0.8493
-0.9393
-0.8221
-0.5268
D =
17.0287
0
0
0
-6.6975
0
0
0
-2.2312
>> a=inv(A)
a =
-0.0721
0.1830
0.0814

0.0145
-0.4895
0.2889

0.0474
-0.0549
0.0228

Elementare Konstrukte
2.3.4

2 - 15

Logische Ausdrcke

In MATLAB gibt es keinen speziellen logischen Datentyp. Die logischen Werte wahr und falsch
werden durch die ganzzahligen Werte 1 (wahr) und 0 (falsch) dargestellt. Logische Ausdrcke
entstehen durch die Ausfhrung von Vergleichen und durch logische Verknpfungen ber
logische Operatoren. Sie knnen nur die Werte 0 oder 1 annehmen.
Die folgenden Vergleichsoperatoren sind in MATLAB definiert:
Operator

Bedeutung
<

kleiner als

<=

kleiner als oder gleich

>

grer als

>=

grer als oder gleich

==

gleich

~=

ungleich

Die folgenden logischen Operatoren sind in MATLAB definiert:


Operator

Bedeutung

&

Konjunktionsoperator

Disjunktionsoperator

Negationsoperator

Wenn zwei Vektoren miteinander verglichen werden, so werden die entsprechenden Elemente
verglichen. Das Resultat ist dann ein Vektor, der die Vergleichsergebnisse enthlt.
Werden zwei Matrizen verglichen, so werden wiederum die Elemente miteinander verglichen.
Das Resultat ist dann die Matrix der Vergleichsergebnisse.
Die nachfolgenden Funktionen sind geeignet, Vergleiche von Vektoren zusammenfassend zu
bewerten (die Funktionen entsprechen dem All- bzw. dem Existenzquantor). Der Vektor v sei
das Ergebnis eines vektoriellen Vergleichs, dann gilt
Funktion

Bedeutung

all(v)

Die Funktion liefert das Ergebnis 1, wenn alle Vergleiche 1 geliefert haben.

any(v)

Die Funktion liefert das Ergebnis 1, wenn wenigstens ein Vergleich 1 geliefert hat

2 - 16

Elementare Konstrukte

Werden diese Funktionen auf Matrizenvergleiche angewandt, so ergeben sich als Ergebnisse
Vektoren.
<

Beispiele

>> a=randn(1,5)'
a =
-0.1867
0.7258
>> b=randn(1,5)'
b =
0.1139
1.0668
>> a>=b
ans =
0
0
0
>> any(a==b)
ans =
0
>> any(a<=b)
ans =
1
2.3.5

-0.5883

2.1832

-0.1364

0.0593

-0.0956

-0.8323

Zeichenkettenausdrcke

Werden Zeichenketten in Vektoren oder Matrizen abgelegt, so mssen sie als Elemente alle von
gleicher Lnge sein. Werden Zeichenketten in zellulren Feldern gespeichert, ist diese Einschrnkung hinfllig.
Zeichenkettenausdrcke entstehen durch die Verknpfung von Zeichenketten mit Hilfe spezieller Funktionen. Fr die nachfolgende Zusammenstellung gelten folgende Festlegungen:
c, c1, c2, ....cn Zeichenkettenkonstanten
S
Char-Matrix
x, n
skalarer Ausdruck
Funktion

Bedeutung

blanks(n)

Erzeugt einen leeren String der Lnge n.

char(c1,...,cn)

Generiert eine Char-Matrix, in deren Zeilen die Zeichenketten c1


.... cn stehen, wobei alle auf eine gemeinsame Lnge mit Leerzeichen aufgefllt werden.

char(x)

Konvertiert den Wert von x in Zeichenketten. x kann ein skalarer


oder ein Vektorausdruck sein.

double(S)

Die Char-Matrix wird in eine numerische Matrix berfhrt, wobei das jeweils korrespondierende Element den numerischen
ASCII-Wert enthlt.

eval(c)

Die Zeichenkette c wird als MATLAB-Ausdruck ausgewertet.

Elementare Konstrukte

2 - 17
Der krzere String wird im lngeren gesucht; Ergebnis sind die
Startpositionen des krzeren im lngeren.

ischar(c)

Ergebnis der Funktion ist 1, fall c ein String ist.

lower(c)

Die Zeichenkette c wird in Kleinbuchstaben konvertiert.

num2str(x)

Der Wert/ die Werte von x werden in Zeichenketten konvertiert.


x kann ein skalarer oder ein Vektorausdruck sein.

str2num(S)

Die Char-Matrix S wird in skalare Wert konvertiert.

strcat(c,..,cn)

Die Zeichenketten der Liste werden in der Reihenfolge verbunden.

strcmp(c1,c2)

Die Zeichenketten c1 und c2 werden miteinander verglichen. Das


Ergebnis ist 1, wenn sie identisch sind.

upper(c)

Die Zeichenkette c wird in Grobuchstaben konvertiert.

<

findstr(c1,c2)

Beispiele

>> S=char('1.23','3.4+7i','375')
S =
1.23
3.4+7i
375
>> x=str2num(S)
x =
1.0e+002 *
0.0123
0.0340 + 0.0700i
3.7500
>> c1=num2str(x(2))
c1 =
3.4+7i
>> strcmp(c1,'3.4+7*i')
ans =
0
>> strcmp(c1,'3.4+7i')
ans =
1
>> eval('sum(x)')
ans =
3.7963e+002 +7.0000e+000i

2 - 18
2.3.6

Elementare Konstrukte
Polynome

Polynome werden durch die Vektoren ihrer Koeffizienten definiert, wobei der Koeffizient zur
hchsten Potenz im ersten Element abgespeichert wird, der zur zweithchsten im zweiten, usw.
Es besteht also folgende Korrespondenz:

Fr die Addition und Subtraktion von Polynomen knnen die Vektoroperatoren + und - genutzt
werden. Fr weitere Operationen mit Polynomen stellt MATLAB die in der folgenden Tabelle
angegebenen Funktionen bereit. Die Vektoren v, w bezeichnen Koeffizientenvektoren, die
Vektoren x, y bezeichnen Vektoren mit reellen Daten, wobei x die Werte der unabhngigen und
y die Werte der zugehrigen abhngigen Variablen enthlt.
Bedeutung

conv(v,w)

Die durch v und w definierten Polynome werden multipliziert; die Funktion liefert den Vektor der Koeffizienten
des Produktpolynoms.

deconv(v,w)

Die durch v und w definierten Polynome werden dividiert; die Funktion liefert den Koeffizientenvektor.

poly(z)

Die Funktion bestimmt die Koeffizienten des Polynoms,


das die im Vektor z vorgegebenen Nullstellen besitzt.

polyder(v)

Die Funktion liefert die Koeffizienten der ersten Ableitung des durch v definierten Polynoms.

polyfit(x,y,n)

Die Funktion liefert die Koeffizienten des Polynoms vom


Grade n, das die in den Vektoren x und y gegebenen Daten im Sinne der Methode der kleinsten Fehlerquadrate
approximiert.

polyval(v,x)

Die Werte des durch v definierten Polynoms werden an


den Stellen x (x kann Skalar/Vektor/Matrix sein ) berechnet.

roots(v)

Die Funktion liefert als Ergebnis den Vektor der Nullstellen des durch v definierten Polynoms

<

Funktion

Beispiele

>> v=[2 3 4 1]; w=[0.3 -2 4];


>> p=conv(v,w)
p =
0.6000
-3.1000
3.2000

4.3000

14.0000

4.0000

Elementare Konstrukte
>> dp=deconv(p,w)
dp =
2.0000
3.0000
>> r=roots(p)
r =
3.3333 + 1.4907i
3.3333 - 1.4907i
-0.5971 + 1.1306i
-0.5971 - 1.1306i
-0.3059

2 - 19

4.0000

1.0000

>> % sin(x) soll im Bereich -pi/2<= x <= pi/2 durch ein Polynom
>> % approximiert werden.
>> x=-pi/2:0.1*pi:pi/2;
>> y=sin(x);
>> p=polyfit(x,y,3);
>> p
p =
-0.1422
-0.0000
0.9858
>> py=polyval(p,x);
>> plot(x,y,x,py)

0.0000

Das Resultat ist im folgenden Bild dargestellt (die beiden Kurven fallen praktisch zusammen):

2 - 20
2.4
2.4.1

Elementare Konstrukte
Elementare grafische Darstellungen
Die Funktion plot

MATLAB ermglicht bereits im Kommandomodus die Erzeugung von Diagrammen auf


einfache Art und Weise. Die Standardfunktionen gehen bei der Skalierung der Diagramme von
naheliegenden Voraussetzungen aus, so dass der Nutzer in der Regel mit den Standardvorgaben
auskommt. Die erzeugten Diagramme lassen sich im zugehrigen Figure-Fenster interaktiv
editieren.
Von besonderer Bedeutung ist die plot-Funktion. Diese kann in unterschiedlichen Modifikationen aufgerufen werden. Die wichtigsten Formen sind im folgenden dargestellt:
plot(X)
plot(x,y,..)
plot(x,y,linienspezifikation,..)
plot(..,eigenschaftsname,wert_der_eigenschaft,..)
Die einzelnen Aufrufe haben folgende Bedeutung:
1.
X ist eine Vektor oder eine Matrix. Die Werte der Spalten werden ber dem Index
aufgetragen.
2.
x und y sind Vektoren, die die Abszissen- und Ordinatenwerte der darzustellenden
Verlufe enthalten. Werden mehrere Kurven in einem Diagramm dargestellt, so werden
die Attribute (Linienfarbe, Linienart, usw. ) automatisch vergeben.
3.
Dem Vektorpaar x und y kann, als Zeichenkette kodiert, eine Linienspezifikation folgen.
Dafr gelten folgende Regeln:
linienspezifikation 6 linien_stil marker_typ linien_farbe
Folgende Parameter sind fr Linien-Stil, Marker-Typ und Linien/Marker-Farbe mglich:

Linien-Stil
Zeichen

Bedeutung

Durchgezogene Linie

--

Strichlierte Linie

Punktierte Linie

.-

Strichpunktierte Linie

Marker-Typ
Symbol

Bedeutung

Plus-Zeichen als Marker

Kringelchen

Elementare Konstrukte

1.4

2 - 21
*

Stern

Punkt

Kreuz

Quadrate

Raute

Aufwrts orientiertes Dreieck

Abwrts orientiertes Dreieck

>

Nach links orientiertes Dreieck

<

Nach rechts orientiertes Dreieck

Fnfzackiger Stern

Sechszackiger Stern

Linien (Marker) -Farbe


Symbol

Bedeutung

rot

grn

blau

zyan

violett

gelb

schwarz

wei

Zustzlich zu den bisherigen Spezifikationen knnen weitere Eigenschaften festgelegt


werden. Dazu sind die Namen und die Werte der Eigenschaften anzugeben. Als Eigenschaftsnamen sind folgende Bezeichner definiert:
eigenschaftsname 6 LineWidth | MarkerEdgeColor | MarkerFaceColor | MarkerSize
Die Gro-/Kleinschreibung innerhalb dieser Namen ist nicht relevant!

LineWidth
Die Linienstrke wird ganzzahlig in Punkten vorgegeben.

2 - 22

Elementare Konstrukte

MarkerEdgeColor
Die Farbe des Markerrandes wird durch eine Zeichenkette kodiert; es gelten die gleichen
Festlegungen wie fr die Linienfarbe.

MarkerFaceColor
Die Fllfarbe der Marker wird als eine Zeichenkette kodiert; es gelten die gleichen
Festlegungen wie fr die Linienfarbe.

Marker Size
Die Markergre wird ganzzahlig in Punkten vorgegeben.
Bei dieser Art der Diagrammerzeugung kann mit einem Plot-Aufruf nur ein Kurvenverlauf dargestellt werden. Sollen mehrere Verlufe in ein Figure-Fenster aufgenommen
werden, so ist der Befehl
hold on
notwendig. Von diesem Befehl an werden die neuen grafischen Darstellungen dem Inhalt
des aktuellen Figure-Fensters hinzugefgt. Nach dem Befehl
hold off
wird das Fenster nur mit der aktuellen grafischen Darstellung belegt. Dieser Zustand ist
der Standardzustand.

Das Figure-Fenster kann in mehrere Abschnitte aufgeteilt werden. Diese werden zeilen- und
spaltenweise indexiert. Durch den Aufruf der Funktion subplot kann vor der Erzeugung eines
Teildiagramms angegeben werden, um welchen Abschnitt es sich im folgenden handeln soll. Der
Aufruf hat die folgende Form:
subplot(zeilen, spalten ,index)
Die Parameter der Funktion haben folgende Bedeutung:
zeilen
Anzahl der Zeilen, in die der Diagrammbereich aufgeteilt werden soll.
spalten Anzahl der Spalten, in die der Diagrammbereich aufgeteilt werden soll.
index
Aktueller Index des Feldes, in das gezeichnet werden soll. Die Felder werden
dabei zeilenweise fortlaufend numeriert.
<
>>
>>
>>
>>

Beispiel
x=-8:0.1*pi:8;
y1=0.2*sin(x)+0.1*sin(2*x)+0.12*sin(3*x);
y2=0.4*cos(x)+0.2*sin(2*x)+0.15*cos(2*x);
plot(x,y1,'-*',x,y2,':+')

Elementare Konstrukte

Die beiden Kurven knnen mit subplot auch in Teildiagramme gezeichnet werden:
>>
>>
>>
>>

subplot(2,1,1);
plot(x,y1,'-h')
subplot(2,1,2)
plot(x,y2,'-^')

2 - 23

2 - 24
2.4.2

Elementare Konstrukte
3D-Grafiken

MATLAB stellt eine Reihe von Funktionen bereit, die die Erzeugung von 3D-Grafiken ermglichen.

plot3
Die Funktion fr die 3D-Darstellungen von Kurven ist plot3, fr deren Aufruf die folgenden
Mglichkeiten von Interesse sind:
plot3(x1,y1,z1,..)
plot3(x1,y1,z1,linienspezifikation,..)
plot3(..,eigenschaftsname,wert_der_eigenschaft,..)
Die Parameter x1, y1, z1 ,... sind Vektoren oder Matrizen, die die Punkte der Kurvenverlufe
enthalten. Die Bedeutungen der Aufrufe lassen sich in Analogie zu denen von plot erschlieen (s. vorherigen Abschnitt 2.4.1).
<

Beispiel

>> x=exp(0.03*z).*sin(z);
>> y=exp(0.03*z).*cos(z);
>> plot3(x,y,z,'-k','LineWidth',2)

Elementare Konstrukte

2 - 25

meshgrid
Die Funktion meshgrid erzeugt ein geeignetes Raster fr die Darstellung von Flchen im
Raum. Dabei werden aus den Vektoren x und y die Matrizen X und Y erzeugt. Die Matrix X
enthlt den Vektor x so oft als Zeilenvektor, wie y lang ist; die Matrix Y enthlt den Vektor y
spaltenweise so oft, wie x lang ist. Die Elementepaare der Matrizen X und Y ergeben dann die
Koordinaten der Rasterpunkte, ber die eine Flche dargestellt werden kann. Der Aufruf hat
folgende Form:
[X,Y]

= meshgrid(x,y)

mesh
Diese Funktion dient der Darstellung von Flchen in Gestalt von Drahtmodellen. Folgende
Formen des Funktionsaufrufs sind mglich
mesh(X,Y,Z)
mesh(Z)
mesh(..,eigenschaftsname,wert_der_eigenschaft,..)
Die Matrizen X, Y stellen das Darstellungsraster bereit; in der Matrix Z sind die zugehrigen
Wert fr die dritte Koordinate enthalten. Fehlt die Angabe der Matrizen X und Y, so werden die
Zeilen- und Spaltenindizes der Matrix Z als Koordinatenwerte genutzt (2. Aufruf).
Bei der dritten Form des Aufrufs werden die Eigenschaften der Darstellung verndert. Die Liste
der Eigenschaften ist ber die on-line-Hilfefunktion abrufbar.
<

Beispiel

>> [X,Y]=meshgrid(-8:0.5:8);
>> Z=exp(-0.1*X.^2-0.2*Y.^2);
>> mesh(X,Y,Z)

2 - 26

Elementare Konstrukte
meshz, meshc

Diese beiden Funktionen erzeugen zustzlich zum Drahtmodell der Flche die Darstellungen der
Hhenlinien (meshc) bzw. umschlieen die Kontur der Funktion mit einem Vorhang
(meshz). Sie werden wie mesh aufgerufen.

surf, surfc

Die Funktion surf erzeugt eine 3D-Flchendarstellung, wobei die Flche entsprechend den
Werten von Z eingefrbt wird. Der Aufruf von surfc erzeugt neben der Flche noch zustzlich
die Hhenlinien in der xy-Ebene. Folgende Formen des Funktionsaufrufs sind von Bedeutung:
surf(X,Y,Z)
surf(Z)
surf(..,eigenschaftsname,wert_der_eigenschaft,..)
Die Bedeutung der Parameter ist die wie bei mesh. Die Eigenschaften und ihre Werte sind der
on-line-Hilfe zu entnehmen.
<

Beispiel:

>> [X,Y]=meshgrid(-8:0.5:8);
>> Z=sin(sqrt(X.^2+Y.^2))./(sqrt(X.^2+Y.^2)+0.005);
>> surfc(X,Y,Z)

Elementare Konstrukte
2.4.3

2 - 27

Simultane Nutzung mehrerer Grafik-Fenster

Der Anwender von MATLAB kann grafische Darstellungen in mehreren Grafik-Fenstern


anordnen. Mit einem Grafik-Kommando wird, sofern noch kein Fenster (als Figure-Window)
geffnete wurde, automatisch ein Fenster geffnet. Der Anwender kann aber auch dieses Fenster
vorher ffnen und er kann weitere Fenster ffnen, ber deren Belegung er frei verfgen kann.
Die Ausgabe einer Grafik erfolgt dabei immer in ein aktuelles Fenster; welches von den
simultan geffneten Fenstern das ist, wird durch ein Aktivierungskommando bestimmt. Der
Zugriff auf ein Grafik-Fenster erfolgt ber ein Figure-Handle. Die Fenster werden ganzzahlig
nummeriert (die laufende Nummer wird im Figure-Window angezeigt).

ffnen eines neuen Grafik-Fensters


ber die folgenden Funktionsaufrufe kann ein Grafik-Fenster geffnet werden:

figure
Es wird ein neues Grafik-Fenster, das die Standardeigenschaften besitzt, geffnet; alle
grafischen Kommandos nach diesem Aufruf richten sich an dieses Fenster, solange kein
anderes Fenster zum aktuellen Fenster gemacht wird (s. u.).

figure(eigenschaftsname,wert_der_eigenschaft,..)
Der Aufruf hat die gleiche Wirkung wie figure. Die Eigenschaften werden aber neu
gesetzt. Dabei werden die Namen der Eigenschaften in Zeichenkettenform angegeben;
die Werte folgen unmittelbar. Eigenschaften sind beispielsweise die Position des Fensters auf dem Bildschirm, der Titel des Fensters oder die Hintergrundfarbe. Die Liste der
Eigenschaften sowie die mglichen Werte der Eigenschaften sind der on-line-Hilfe
(Stichwort: figure) zu entnehmen.

h = figure(...)
Der Aufruf hat die gleiche Wirkung wie die vorangegangenen Aufrufe. Die Variable h
enthlt aber nach dem Aufruf den Figure-Handle, der auf das erzeugte Grafik-Fenster
verweist. ber dieses Handle kann das Fenster bei Bedarf wieder zum aktuellen gemacht
werden. Der Aufruf kann mit oder ohne Eigenschaftsdefinition erfolgen.

Auswahl eines vorhandenen Grafik-Fensters als aktuelles Ausgabefenster


Mit dem folgenden Funktionsaufruf wird ein Grafik-Fenster zum aktuellen Ausgabefenster
deklariert, d..h. alle weiteren Grafikkommandos beziehen sich auf dieses Fenster. Der Aufruf hat
die folgenden Form:

figure(h)
Ist h ein Figure-Handle, so wird auf das Fenster umgeschaltet, das zu diesem Handle
gehrt. Ist h kein Figure-Handle fr ein existierendes Fenster aber eine ganze Zahl, so
wird ein Fenster mit der Nummer erzeugt, die der ganzen Zahl entspricht.
Die Auswahl des aktuellen Grafikfensters kann der Anwender aber auch interaktiv treffen. Dazu
muss lediglich vor dem ersten Grafikkommando, das sich auf ein bestimmtes Fenster beziehen
soll, das betreffende Fenster per Mausklick in den Vordergrund geholt werden.
<
Beispiel

2 - 28

Elementare Konstrukte

Im folgenden Beispiel werden zunchst zwei Grafikfenster erzeugt:


>> dia1=figure;
>> dia2=figure;
Als nchstes wird eine Zufallsfolge generiert. Diese Folge wird im ersten Grafikfenster dargestellt:

>>
>>
>>
>>

t=0:0.1:10;
y=rand(1,length(t));
figure(dia1);
plot(t,y)

Als nchstes wird das Histogramm fr


die empirische Verteilung der Signalwerte erzeugt und im zweiten Fenster dargestellt:
>> figure(dia2)
>> hist(y,20)

Elementare Konstrukte
2.4.4

2 - 29

Eigenschaften grafischer Darstellungen

Die Eigenschaften grafischer Darstellungen knnen vom Anwender in vielfltiger Art und Weise
eingestellt bzw. gendert werden. Grundstzlich sind dabei zwei Wege zu unterscheiden:
S
S

Die Grafik wird zunchst erzeugt und ber die interaktiven Werkzeuge des GrafikFensters verndert.
Die Eigenschaften der Grafik werden durch MATLAB-Funktionsaufrufe eingestellt.

Beide Wege stellen den gleichen Funktionsumfang zur Verfgung, wobei aus dem Zusammenhang heraus zu entscheiden ist, welcher Weg gnstiger ist.
2.4.4.1 Die interaktiven Werkzeuge
Ein Figure-Fenster besitzt die im folgenden Bild dargestellte Menzeile bzw. Werkzeugleiste:

Im folgenden werden die wichtigsten Menpunkte mit ihren Untermens beschrieben.

File
ber diesen Menpunkt sind die Lade-, Speicher- und Druckfunktionen fr Grafiken zu erreichen. Die meisten der Untermenpunkte bedrfen keiner weiteren Erluterung. Fr die Einbindung einer Grafik in ein anderes Dokument ist die Funktion Export von Bedeutung: Nach
Anklicken erscheint ein Speicherdialog, der die Auswahl des Grafikformats erlaubt, in das die
Grafik beim Abspeichern zu konvertieren ist. Die Grafik wird stets ohne den Rahmen abgelegt.

Edit
ber diesen Menpunkt wird ein Untermen erreichbar, dass eine Reihe von Funktionen fr die
Editierung der Grafik bereitstellt. Zunchst werden die Funktionen fr das Markieren, Ausschneiden, Kopieren usw. angeboten.
ber die letzten drei Menpunkte kann der Anwender alle Parameter der Grafik erreichen und
verndern. Es sind dies die Untermenpunkte:

Figure Properties

Axes Properties

Current Object Properties


Nach der Aktivierung eines dieser Menpunkte geht die Grafik in den editierbaren Zustand ber
und es erscheint ein Formular mit mehreren Seiten, ber das die Eigenschaften der betreffenden
Konstrukte gendert werden knnen.

2 - 30

Elementare Konstrukte

Im folgenden Bild ist das Formular fr die Achsen-Eigenschaften dargestellt:

Die anderen Formulare haben eine hnliche Gestalt. Die Bedeutungen der Felder sind weitgehend aus der Formularbeschriftung zu erschlieen. Die on-line-Hilfe stellt weiterfhrende
Informationen bereit.
Hinweis:

Fr die Beschriftung der Grafik bzw. der Achsen kann eine Teilmenge von TeXBefehlen (das sind Zeichenketten, die dem Sonderzeichen \ folgen) verwendet
werden. Damit knnen auch Formeln, griechische Buchstaben u.. fr die Beschriftung herangezogen werden. Details sind in der on-line-Hilfe zu finden.

View
Dieser Menpunkt gestattet die Einstellung der Werkzeugleiste. Standard ist die oben dargestellte Werkzeugleiste, die durch den Menpunkt Figure Toolbar eingestellt wird. Mit dem
Menpunkt Camera Toolbar kann eine zweite Werkzeugleiste aktiviert werden, die den schnellen Zugriff auf die Kamera-Werkzeuge gestattet. Mit Hilfe dieser Werkzeuge kann das Erscheinungsbild der Grafik verndert werden (s. Menpunkt Tools).

Insert
Unter diesem Menpunkt wird ein Untermen aktiviert, das eine Reihe von Einfgefunktionen,
so fr Achsen, zustzliche Grafikelemente (Pfeile, Linien, Texte ) usw., bereitstellt.

Elementare Konstrukte

2 - 31

Tools
Unter diesem Menpunkt wird ein Untermen angeboten, dessen wichtigste Punkt im folgenden
erlutert werden (diese Punkte sind prinzipiell auch ber die Werkzeugleisten erreichbar):

Edit Plot
Dieser Menpunkt ist ein rastender Schalter. Nach Bettigung werden die Werkzeuge fr
das Editieren der Grafik aktiviert. Insbesondere kann der Anwender mit der Maus die
dargestellte Flche oder die Grafik als Ganzes markieren; mit der rechten Maustaste
knnen anschlieend Popup-Mens aktiviert werden, die sich in ihrer Funktionalitt am
markierten Objekt orientieren.

Zoom In / Zoom Out


ber diese Menpunkte kann die Gre der Grafik relativ zum Figure-Fenster verndert
werden.

Rotate 3D
Die Grafik kann anschlieend ber die Mausbewegung gedreht werden. Es erscheint ein
Hilfskoordinatensystem, das die Orientierung erleichtert.

Move Camera
Die Grafik kann anschlieend aus der Sicht einer virtuellen Kamera, deren Position
durch den Mauszeiger vorgegeben wird, betrachtet werden.

Camera Motion
Es erscheint ein weiterfhrendes Untermen, das die Art der Kamerabewegung zu
modifizieren gestattet. So kann nicht nur der Blickwinkel (Orbit Camera) sondern es
knnen beispielsweise auch die Entfernung (Move Forward / Back) oder die Beleuchtung (Orbit Scene Light ) gendert werden. Mit Walk wird die Kamera, gesteuert von der
Mausgeschwindigkeit ber die Grafik bewegt. Die Bewegung dauert an, so lange die
Maustaste gedrckt bleibt.

Camera Axis
Es erscheint ein Untermen, das die Wahl der Achse gestattet, die als senkrechte Achse
(also die Achse, die im 3D-Bild in der Bildschirmebene liegt) angenommen werden soll.

Camera Reset
Es werden definierte Startbedingungen fr die Ansicht der Grafik eingestellt.
Die ber den Toolbar zu erreichenden Werkzeuge sind der folgenden Darstellung zu entnehmen:
bergang in den Editiermodus
Einfgen eines Pfeils bzw. einer Linie in die Grafik

Zoom: Ein/Aus
Einfgen eines Textes (mit Maus wird der Startpunkt markiert)

2 - 32

Elementare Konstrukte

2.4.4.2 MATLAB-Funktionen zur Steuerung der Grafik-Eigenschaften


Fr alle Operationen, die ber die interaktiven Werkzeuge mglich sind, gibt es auch entsprechende MATLAB-Funktionen. Die wichtigsten werden im folgenden beschrieben.

axis
Diese Funktion bietet die Mglichkeit, die Koordinatenachsen zu skalieren. Folgende Formen
des Funktionsaufrufs sind von Interesse:

axis
Der Funktionsaufruf liefert die Bereiche fr die Koordinatenachsen als Vektor (4 oder
6 Elemente je nach 2D/3D-Darstellung).

axis([xmin xmax ymin ymax])


Die unteren/oberen Grenzen der Koordinatenachsen einer 2D-Grafik werden gesetzt.

axis([xmin xmax ymin ymax zmin zmax])


Die unteren/oberen Grenzen der Koordinatenachsen einer 3D-Grafik werden gesetzt.

axis auto
Die automatische Achsen-Einstellung (die MATLAB aus den Datenbereichen ableitet)
wird vorgenommen.

axis manual
Die aktuellen Achseneinstellungen werden festgehalten; wenn hold on aktiv ist, wird
eine neue Grafik in das aktuelle Achsensystem gezeichnet.

axis tight
Die Grenzwerte der Achsen werden exakt auf die minimalen/maximalen Werte der
Daten gesetzt.

axis xy
Das Koordinatensystem wird in der Kartesischen Standardform gezeichnet. Der Koordinatenursprung befindet sich in der linken unteren Ecke; die x-Achse ist aufsteigend
skaliert und horizontal angeordnet, die y-Achse ebenfalls aufsteigend skaliert und
vertikal angeordnet.

axis equal
Alle Achsen werden auf einen gemeinsamen Mastab skaliert.

axis square
Die Achsen werden so skaliert, dass der Zeichenbereich ein Quadrat bzw. ein Wrfel
wird.

axis normal
Die Standardeinstellungen werden angenommen. Die Achsen werden entsprechend den
aus den Daten ableitbaren Grenzen skaliert und das Koordinatensystem wird auf die
Standardorientierung ausgerichtet.

axis off
Alle Achsenlinien, Koordinatenwerte, Markierungen und Beschriftungen der Koordinatenachsen werden ausgeblendet.

axis on
Die Koordinatenachsen werden in allen Details wieder dargestellt.

Elementare Konstrukte

2 - 33

axes
Diese Funktion erlaubt die Definition der detaillierten Achseneigenschaften ber die Vorgabe
der Eigenschaftswerte. Die wichtigsten Formen des Aufrufs sind:

axes
Es wird ein 2D-Achsenkreuz erzeugt, dass Standardeinstellungen realisiert.

axes(eigenschaftsname,wert_der_eigenschaft,..)
Es wird ein Achsensystem erzeugt, dessen Eigenschaften sich aus den in Klammern
folgenden Parametern ( Farbe des Hintergrundes, Hilfslinientyp usw. ) ergeben. Es gibt
eine umfangreiche Liste der Mglichkeiten, die der on-line-Hilfe zu entnehmen sind.

xlabel, ylabel, zlabel


Diese Funktionen erlauben die Beschriftung der jeweiligen Koordinatenachse. Die wichtigsten
Formen des Aufrufs (dargestellt fr das Beispiel xlabel) sind:

xlabel(string)
Die durch string kodierte Zeichenkette wird zur Achsenbeschriftung. TeX-Kommandos werden im Standardfall interpretiert.

xlabel(fname)
Der Ausdruck fname muss einen Zeichenkettenwert liefern; dieser Wert wird zur Beschriftung der Achse herangezogen.

xlabel(..eigenschaftsname,wert_der_eigenschaft,..)
Die Eigenschaften der Achsenbeschriftung werden entsprechend gesetzt. Die mglichen
Eigenschaften und ihre Wertedarstellungen sind der on-line-Hilfe zu entnehmen.

text
Mit Hilfe dieser Funktion kann eine grafische Darstellung mit einem Text beschriftet werden.
Die wichtigsten Formen des Aufrufs sind:

text(x,y,'string')
Durch diesen Aufruf wird eine 2D-Grafik beschriftet. Die Koordinaten des Textbeginns
werden durch die Ausdrcke x und y festgelegt. Sind x, y Vektorausdrcke, so markieren
sie den Beginn der Textzeilen, die in der Zeichenkettenmatrix (in der Regel ein zellulres
Feld von Zeichenketten) enthalten sind. Die TeX-Kommandos werden interpretiert, so
dass auch Formeln und Sonderzeichen im Text auftreten knnen.

text(x,y,z,'string')
Durch diesen Aufruf wird eine 3D-Grafik beschriftet. Die Bedeutungen der Parameter
sind die gleichen wie bei der 2D-Grafik. Die Koordinate z kommt als weiterer Parameter
noch hinzu.

text(..eigenschaftsname,wert_der_eigenschaft,..)
Die Texteigenschaften knnen sehr flexibel festegelegt werden. Die Eigenschaften sowie
die mglichen Werte sind der on-line-Hilfe zu entnehmen.

title
Mit Hilfe dieser Funktion kann eine Grafik mit einer Titelzeile versehen werden. Der Aufruf hat
die Form:
title(string)

2 - 34

Elementare Konstrukte

String ist ein Zeichenkettenausdruck, der als berschrift des Diagramms ausgegeben wird.
<

Beispiel

Im folgenden Beispiel wird die Funktion


dargestellt. Im
beschriftenden Text werden u. a. auch TeX-Befehle verwendet, um die Funktion zu kodieren.
% Darstellung einer Funktion als 3D-Plot
[X,Y]=meshgrid(-8:0.2:8);
R=sqrt(X.^2+Y.^2);
Z=sin(R).*exp(-0.1*R);
surf(X,Y,Z);
Xlabel('x'); YLabel('Y'); ZLabel('Z');
text(-2,5,1,'sin(\surd{x^{2} + y^{2}} ) e ^{- 0.1 \surd{x^{2} + y^{2}}}');

title('3D-Graf einer Funktion');

In der folgenden Darstellung ist der 3D-Graf der Funktion als Ergebnis zu sehen.

Elementare Konstrukte
2.5
2.5.1

2 - 35

Daten-Input/Output
Lesen/Schreiben von binren Dateien

Mit im folgenden behandelten Funktionen lassen sich binre Speicherabbilder von Daten
zwischen Dateien und Arbeitsspeicher bertragen.

ffnen einer binren Datei


Bevor auf eine Datei zugegriffen werden kann, muss sie geffnet werden. Mit Hilfe der folgenden Funktionsaufrufe kann eine Datei fr Datenbertragungen geffnet werden.

fid = fopen(filename)
Die Datei wird fr den Lesezugriff geffnet. Der Ausdruck filename muss den Namen
der Datei einschlielich Zugriffspfad, sofern nicht auf das Standardverzeichnis zugegriffen wird, enthalten. Unter fid steht der File-Identifikator zur Verfgung, ber den
in den folgenden Transferoperationen auf die geffnete Datei Bezug genommen wird.

fid = fopen(filename,permission)
Zustzlich zu den obigen Angaben wird bei diesem Aufruf ein Zugriffsrecht gesetzt.
Dieses wird ber den Parameter permission als Zeichenkette angegeben. Folgende
Mglichkeiten sind von Bedeutung:
permission

Bedeutung

ffnen nur fr Lesezugriff.

ffnen nur fr Schreibzugriff.

ffnen nur fr Anhngen von Daten.

r+

ffnen nur fr Lese-/Schreibzugriff.

[fid,message] = fopen(filename,permission)
Diese Form des Aufrufs unterscheidet sich von den bisherigen Formen dadurch, dass in
der Variablen message eine Mitteilung im Falle eines Systemfehlers bergeben wird.
Im Fehlerfall wird fr fid der Wert -1 zurckgegeben.

Lesen einer binren Datei


Mit der Funktion fread knnen binr abgelegte Daten wieder gelesen werden. Folgende
Aufrufe sind von Bedeutung:

A= fread(fid)
Aus der unter fid geffneten Datei wird A gelesen. Dabei werden folgende Annahmen
getroffen:

A ist Spaltenvektor.

Die Datei wird bis zum Endezeichen gelesen.

Die Daten werden als numerisch kodierte Zeichenfolge interpretiert (jedes Byte
wird in einem Vektorelement abgespeichert.
Sind diese Annahmen nicht zutreffend, ist einer der folgenden Aufrufe zu nutzen.

A = fread(fid,size,precision)

2 - 36

Elementare Konstrukte
Dieser Aufruf gestattet es, im Parameter size die Anzahl der zu bertragenden Daten
vorzugeben und im Parameter precision die interne Darstellung zu kodieren. Fr den
Parameter size sind folgende Mglichkeiten vorgesehen:
size

Bedeutung

Es werden n Elemente in den Spaltenvektor A bertragen.

inf

Es werden alle Elemente der Datei in den Spaltenvektor A bertragen.

[n,m]

Die Daten werden in die [n x m] - Matrix A bertragen.

Der Parameter precison muss ein Zeichenkettenausdruck sein, der folgende Werte
annehmen kann:
Wert von
precision

Bedeutung

'schar'

Ganzzahliger Wert eines Zeichens, mit Vorzeichen.

'uchar'

Ganzzahliger Wert eines Zeichens, ohne Vorzeichen.

'int8'

Ganze Zahl, 8 Bit-Wertebereich.

'int16'

Ganze Zahl, 16 Bit-Wertebereich.

'int32'

Ganze Zahl, 32 Bit-Wertebereich.

'int64'

Ganze Zahl, 64 Bit-Wertebereich.

'uint8'

Ganze Zahl, vorzeichenlos, 8 Bit-Wertebereich.

'uint16'

Ganze Zahl, vorzeichenlos, 16 Bit-Wertebereich.

'uint32'

Ganze Zahl, vorzeichenlos, 32 Bit-Wertebereich.

'uint64'

Ganze Zahl, vorzeichenlos, 64 Bit-Wertebereich.

'float32'

Reelle Zahl, 32 Bit-Darstellung.

'float64'

Reelle Zahl, 64 Bit-Darstellung.

'double'

Reelle Zahl, 64 Bit-Darstellung.

[A,count] = fread(fid,size,precision)
Alle Parameter haben die gleiche Bedeutung wie beim vorangegangenen Aufruf. Im
Parameter count wird zustzlich die Anzahl der bertragenen Datenelemente bereitgestellt.

Schreiben einer binren Datei


Mit der Funktion fwrite kann eine binre Datei auf einen Datentrger geschrieben werden.

Elementare Konstrukte

2 - 37

Die Funktion wird wie folgt aufgerufen:

fwrite(fid,A,precision)
Die Parameter besitzen die bereits eingefhrten Bedeutungen; mit A ist das zu bertragende Datenfeld bezeichnet.

count = fwrite(fid,A,precision)
Unter count steht die Anzahl der erfolgreich geschriebenen Datenelemente nach der
Abarbeitung der Funktion bereit.

Schlieen einer binren Datei


Mit der Funktion fclose lassen sich binre Dateien abschlieen. Die folgenden Formen des
Aufrufs sind von Bedeutung:

status = fclose(fid)
Die Datei mit dem File-Identifikator fid wird geschlossen. Unter status wird der
Zustand nach Abschluss der Datei bereitgestellt. Bei erfolgreichem Abschluss wird der
Wert 0 zurckgegeben; im Falle eines Fehlers der Wert -1.

status = fclose('all')
Alle offenen Dateien werden geschlossen.

End of File
Mit der folgenden Funktion kann getestet werden, ob der Lesezugriff das Ende einer Datei
erreicht hat:
eofstat = feof(fid)
Beim Zugriff auf die Datei mit dem File-Identifikator fid wird getestet, ob bereits das
Ende der Datei erreicht wurde. Die Funktion liefert den Wert 1 (wahr), wenn das Ende
erreicht wurde, sonst den Wert 0 (falsch).
<

Beispiel

Im folgenden Beispiel werden zunchst drei Matrizen berechnet und gespeichert. Die Lngen der
Zeilen und Spalten stehen als ganze Zahlen am Anfang der Datei.
% Schreiben einer binren Datei
[X,Y]=meshgrid(-8:0.2:8);
R=sqrt(X.^2+Y.^2);
Z=sin(R).*exp(-0.1*R);
[n,m]=size(Z);
fid=fopen('g:\test.dat','w');
fwrite(fid,n,'int16');
fwrite(fid,m,'int16');
count=fwrite(fid,X,'double');
count=fwrite(fid,Y,'double');
count=fwrite(fid,Z,'double');
status=fclose(fid);

2 - 38

Elementare Konstrukte

Die Datei kann in einem anderen Zusammenhang wieder gelesen werden; die Daten werden nun
genutzt, um einen 3D-Grafen zu erzeugen.
% Lesen einer binren Datei
fid=fopen('g:\test.dat','r');
k=fread(fid,1,'int16');
l=fread(fid,1,'int16');
A=fread(fid,[k,l],'double');
B=fread(fid,[k,l],'double');
C=fread(fid,[k,l],'double');
surf(A,B,C);
status=fclose(fid);
2.5.2

Lesen und Schreiben von formatierten Text-Dateien

Durch die im folgenden zu behandelnden Funktionen werden die Daten als Zeichenketten auf
dem Datentrger dargestellt. Das hat zur Folge, dass die Daten beim Lesen und beim Schreiben
konvertiert werden mssen. Die Vorschriften beim Schreiben werden ber einen Format-String
kodiert. Beim Lesen wird die formatierte Textdatei nach bestimmten Regeln interpretiert, so dass
die Datenfelder zunchst extrahiert werden und anschlieend die Inhalte nach feststehenden
Regeln zu konvertieren sind. Die Textdatei kann auch zeilenweise als ASCII-Text gelesen
werden; dabei werden die Zeilen als Zeichenketten ohne irgendwelche Konvertierungen bertragen.

ffnen / Schlieen von Textdateien


Hierfr werden die bereits im Abschnitt 2.5.1 eingefhrten Funktionen fopen und fclose
verwendet. Der Parameter fid bezeichnet auch im folgenden den File-Identifikator.

Zeilenweises Lesen einer Textdatei


Fr das zeilenweise Lesen einer Textdatei stehen zwei Funktionen zur Verfgung, die wie folgt
aufgerufen werden knnen:

tline = fgetl(fid)
In tline steht nach dem Aufruf die aktuelle Textzeile der zu lesenden Datei. Mit dem
ffnen wird der Zugriffszeiger auf den Anfang der ersten Zeile gesetzt. tline enthlt
nicht das Endezeichen der Zeile (das Zeichen NewLine).
Wird das Ende der Datei ( End of File ) erreicht, enthlt tline den Wert -1. Der
Anwender kann mit Hilfe der folgenden Funktion testen, ob tline eine Zeichenkette
oder ein numerischer Wert ist:
ischar(tline)liefert den Wert 1, wenn tline eine Zeichenkette ist, sonst den
Wert 0.

tline = fgets(fid)
Die Funktion unterscheidet sich von fgetl lediglich dadurch, dass tline das Zeichen
NewLine enthlt.

tline = fgets(fid,nchar)
Es werden hchstens nchar Zeichen gelesen. Die NewLine- und die EndofFile-Marke
werden nicht berschritten

Elementare Konstrukte

2 - 39

Formatiertes Lesen von Daten aus einer Textdatei


Die Funktion fscanf erlaubt das Lesen von Daten aus einer Textdatei gem vorgegebener
Formatierungsangaben. Dabei werden durch einen Format-String Datenfelder definiert. Als
Trennzeichen zwischen den numerischen Datenfeldern in der Datei ist das Leerzeichen vorgesehen. Die Funktion kann wie folgt aufgerufen werden:

A = fscanf(fid,format)
In die Variable A werden die konvertierten Daten bertragen. Diese werden vorher
gem der in der Zeichenkette format enthaltenen Formatvorschrift konvertiert. Die
Formatvorschrift besteht aus einer Liste von Formatfeldern. Wird das Ende dieser Liste
erreicht und es sind noch zu bertragende Daten vorhanden, so wird mit der ersten
Vorschrift der Liste erneut begonnen. Die Formatierungsvorschrift wird also gegebenfalls zyklisch durchlaufen. Die Variable A wird als Spaltenvektor interpretiert. Die
Formatvorschrift folgt der Syntax:
formatvorschrift 6 formatfeld ...
formatfeld 6 % feldlnge.genauigkeit konvertierungs_zeichen
Als Konvertierungszeichen in den Formatfeldern sind vorgesehen:
Konvertierungszeichen

Bedeutung / Inhalt des Datenfeldes

Folge von Zeichen gem Feldlnge.

Ganze Dezimalzahl.

e , f , g

Dezimalzahl in Gleitpunktdarstellung

Vorzeichenbehaftete ganze Zahl.

Vorzeichenbehaftete Oktalzahl.

Ein Folge von Leerzeichen.

Vorzeichenbehaftete ganze Dezimalzahl

Vorzeichenbehaftete ganze Hexadezimal-Zahl.

[A,count] = fscanf(fid,format,size)
Im Parameter count wird die Anzahl der bertragenen Datenfelder bereitgestellt. Im
Parameter size kann die Anzahl der zu bertragenden Daten festgelegt werden. Dafr
gelten folgende Regeln:
size

Bedeutung

Es werden n Elemente konvertiert und in den Spaltenvektor A


bertragen.

2 - 40

Elementare Konstrukte
inf

Es werden alle Elemente der Datei konvertiert und in den Spaltenvektor A bertragen.

[n,m]

Die Daten werden konvertiert und in die [n x m] - Matrix A bertragen. Die Matrix wird spaltenweise gefllt.

Formatiertes Schreiben in eine Textdatei


Mit der Funktion fprintf knnen Daten in Textketten konvertiert und in eine Datei geschrieben werden. Die Konvertierungsvorschriften sind wiederum in einer Zeichenkette (dem
Format-String) enthalten. Die Funktion kann wie folgt aufgerufen werden:
count = fprintf(fid,format,A,...)
Die Werte der in A enthaltenen Elemente werden als konvertierte Textketten in die
Datei fid bertragen. Die Formatvorschrift, die die Darstellung der Daten in der Textdatei regelt, besteht wiederum aus einer Liste von Formatfeldern. Wird das Ende dieser
Liste erreicht und es sind noch zu bertragende Daten vorhanden, so wird mit der ersten
Vorschrift der Liste erneut begonnen. Die Formatierungsvorschrift wird also gegebenenfalls zyklisch durchlaufen. Ist die auszugebende Datenstruktur eine Matrix, so wird diese
spaltenweise abgearbeitet. Die Formatvorschrift folgt der Syntax:
formatvorschrift 6 formatfeld | steuerzeichen | zeichenfolge...
formatfeld 6 % flag feldlnge.genauigkeit konvertierungs_zeichen |
steuerzeichen 6 \ zeichen
Wird in der Zeichenkette, die die Formatvorschrift darstellt, das Zeichen % gefunden, so
werden die folgenden Zeichen als Formatfeld interpretiert. Zeichenfolgen, die keine
Formatfelder sind, werden als Zeichenketten in den Ausgabebereich bertragen. Soll das
Zeichen % in einer solchen Zeichenkette dargestellt werden, so muss %% geschrieben
werden. Wird in der Formatvorschrift das Zeichen \ gefunden, so wird das Folgezeichen
als Steuerzeichen interpretiert. Soll \ als Zeichen ausgegeben werden, so ist \\ zu schreiben.
Fr das optionale Flag in einem Formatfeld sind folgende Mglichkeiten vorgesehen:
Flag

Bedeutung

Es wird in jedem Falle das Vorzeichen dargestellt ( + oder - ).

Die auszugebende Zeichenkette wird linksbndig im Konvertierungsfeld angeordnet.

Fhrende Leerzeichen werden durch Nullen ersetzt.

Der Feldlngen-Parameter gibt die Anzahl der darzustellenden Zeichen im Konvertierungsfeld an. Der Genauigkeits-Parameter gibt an, wie viele Ziffern dem Dezimalpunkt
folgen sollen. Fr die Konvertierungszeichen sind die in der folgenden Tabelle angegebenen Mglichkeiten vorgesehen:

Elementare Konstrukte
Konvertierungszeichen

2 - 41
Bedeutung / Darstellung der Daten im Ausgabefeld

Zeichen

Ganzzahlige Dezimaldarstellung (mit Vorzeichen)

Dezimaldarstellung mit Exponenten (e als Exp.-Zeichen)

Dezimaldarstellung mit Exponenten (E als Exp.-Zeichen)

Festkommadarstellung [ ganzer Teil . Dezimalteil ]

Kompakte f- bzw. e-Darstellung; keine fhrenden Nullen.

Wie bei g, aber E fr den Exponenten.

Oktaldarstellung (ohne Vorzeichen)

Zeichenkette

Ganzzahlige Dezimaldarstellung (ohne Vorzeichen)

Hexadezimaldarstellung (a-f)

Hexadezimaldarstellung (A-F)

Die folgenden Zeichen, wenn sie \ folgen, dienen zur Steuerung der Darstellung des
Textes auf dem Speichermedium.
Steuerzeichen

<

Bedeutung

Leerzeichen

Positionieren des Ausgabezeigers auf die nchste Zeile bei


Beibehaltung der Spaltenposition.

Positionieren des Ausgabezeigers auf den Anfang der nchsten Zeile (NewLine)

Positionieren des Ausgabezeigers auf den Anfang der aktuellen Zeile.

Tabulatorsprung.

Ein Hochkomma wird ausgegeben.

Beispiel

Im folgenden Beispiel werden mehrere Polynom-Nherungen einer Funktion bestimmt. Der


Argumentvektor, der zugehrige Vektor der Funktionswerte der anzunhernden Funktion sowie

2 - 42

Elementare Konstrukte

die Vektoren mit den Nherungswerten werden in einer Matrix gespeichert; diese wird anschlieend in eine Datei abgelegt. An den Anfang der Datei werden die Anzahlen der Zeilen und
Spalten geschrieben.
% Berechnung der anzunhernden Funktion
x=0:0.5:40;
y=x.*exp(-0.1*x);
% Polynomnherung (3./4./5. Grades) bestimmen
p3=polyfit(x,y,3);
p4=polyfit(x,y,4);
p5=polyfit(x,y,5);
% Anlegen der Datenstruktur in der Matrix A
A=[x;y;polyval(p3,x);polyval(p4,x);polyval(p5,x)];
% ffnen der Datei
fid=fopen('g:\poly.dat','w');
fprintf(fid,'%5d %5d\n',size(A));
% Speichern der Matrix A (spaltenweise)
fprintf(fid,'%10.3f %10.3f %10.3f %10.3f %10.3f\n',A);
fclose(fid);
Die Datei erscheint als Text (auszugsweise) in folgender Gestalt:
5
81
0.000
0.500
1.000
1.500
2.000
2.500
3.000
3.500
4.000

0.000
0.476
0.905
1.291
1.637
1.947
2.222
2.466
2.681

0.739
0.998
1.242
1.473
1.690
1.893
2.084
2.261
2.426

0.196
0.591
0.956
1.292
1.601
1.884
2.141
2.375
2.586

0.040
0.493
0.906
1.281
1.621
1.927
2.201
2.446
2.663

.............
Die Datei poly.dat knnte in einem anderen Zusammenhang wie folgt gelesen werden:
fid=fopen('g:\poly.dat','r');
m=fscanf(fid,'%d',1);
n=fscanf(fid,'%d',1);
B=fscanf(fid,'%f',[m,n]);
fclose(fid);
2.5.3

Lesen und Schreiben der Standard-Input/Output-Dateien

Die Standard-Input-Datei ist die Tastatur und die Standard-Output-Datei ist der Bildschirm. Die
Standard-Output-Datei hat die fid = 1 und die Standard-Fehler-Datei hat die fid = 2; letztere wird
physisch auch auf dem Bildschirm realisiert. Die folgenden Funktionen sind fr den reinen
Kommandobetrieb eigentlich berflssig; fr MATLAB-Skripts bzw. MATLAB-Funktionen
sind sie dagegen durchaus von Bedeutung.

Elementare Konstrukte

2 - 43

Dateneingabe (mit Echo) ber die Tastatur


Die Funktion input ermglicht die Dateneingabe ber die Tastatur, wobei die Eingabe
zunchst in einen Puffer erfolgt, dessen Inhalt am Bildschirm angezeigt wird (Echo) und der bis
zum Abschluss der Eingabe ber das ENTER-Kommando editiert werden kann. Die folgenden
Formen des Aufrufs sind mglich:

a = input('prompt')
Nach dem Kommando wird eine Dateneingabe ber die Tastatur erwartet. Die Zeichenkette 'prompt' wird vorher ausgegeben. In dieser Form kann nur ein Wert eingegeben
werden, dessen Typ aus der Darstellung der Eingabe-Zeichenkette abgeleitet wird. Wird
eine numerische Konstante angegeben, so wird diese entsprechend konvertiert und a
enthlt den Wert der Konstanten; wird die Eingabe als Zeichenkette ( also in Hochkomma eingeschlossene Zeichenfolge) kodiert, so enthlt die Variable a diese Zeichenkette.

a = input('prompt','s')
Auch nach diesem Kommando wird eine Dateneingabe ber die Tastatur erwartet. Die
Zeichenkette 'prompt' wird vorher ausgegeben. Die Variable a enthlt aber anschieend den Inhalt des Eingabebereichs als Zeichenkette.
<

Beispiele

>> a=input('Eingabe:');
Eingabe:2e7
>> a
a =
20000000
>> a=input('Eingabe:');
Eingabe: 'a=2e7'
>> a
a =
a=2e7
% Eingabedatum wird im folgenden Kommando als
% Zeichenkette interpretiert.
>> a=input('Eingabe:','s');
Eingabe:b=[ 1.2 3.4 5.6]
a =
b=[ 1.2 3.4 5.6]
% Interpretation der Eingabezeichenkette
>> eval(a)
b =
1.2000
3.4000
5.6000

Unformatierte Datenausgabe auf den Bildschirm


Fr die Ausgabe von Daten, die keinen Formatierungsprozessen vor der Ausgabe unterworfen
werden sollen, gibt es die Funktion disp. Diese kann wie folgt aufgerufen werden.
disp(X)
Der Inhalt von X (kann ein skalar Ausdruck , ein Vektorausdruck, ein Matrixausdruck

2 - 44

Elementare Konstrukte
oder ein Zeichenkettenausdruck sein) wird in einem Standardformat auf dem Bildschirm
dargestellt.

Formatierte Datenausgabe auf den Bildschirm


Fr die formatierte Datenausgabe auf den Bildschirm kann auch die Funktion fprintf (s.
Abschnitt 2.5.2) genutzt werden. Der Aufruf fr die Standard-Output-Datei kann die folgenden
Formen annehmen:
count = fprintf(format,A,...)
count = fprintf(1,format,A,...)
Die Bedeutungen der Parameter sowie die Syntax der Formatierung sind aus 2.5.2 zu bertragen.
2.5.4

Interne Datenkonvertierung

Numerische Daten und Zeichenketten knnen auch intern konvertiert werden. Das Ergebnis liegt
anschlieend im Arbeitsspeicher als Zeichenkette oder als Zeichenkettenfeld vor. Umgekehrt
kann ein Zeichenkettenfeld in ein Feld numerischer Daten konvertiert werden.

Konvertierung aus einer Zeichenkette in die interne Darstellung


Die Funktion sscanf ermglicht die Umwandlung von Daten, die im Arbeitsspeicher in der
Zeichenkettendarstellung abgelegt wurden, in die interne Darstellung. Folgende Formen des
Aufrufs sind von Bedeutung:
A = sscanf(s,format)
A = sscanf(s,format,size)
Der Parameter s kennzeichnet einen Zeichenkettenausdruck. Die Bedeutung der anderen Parameter kann aus der Beschreibung der Funktion fscanf im Abschnitt 2.5.2 bernommen
werden.

Konvertierung aus der internen Darstellung in eine Zeichenkette


Die Funktion sprintf ermglicht die Umwandlung von Daten aus der internen Darstellung
in eine Zeichenkette, die als Speicherbereich im Arbeitsspeicher liegt. Folgende Form des
Aufrufs ist von Bedeutung:
s = sprintf(format,A,...)
Die Variable s ist eine Zeichenkettenvariable. Die Bedeutung der anderen Parameter kann aus
der Beschreibung der Funktion fprintf im Abschnitt 2.5.2 bernommen werden.
<

Beispiel

>> a=input('Eingabe von x: ','s')


Eingabe von x: 1.23 45.6 81.9 237.12
a =
1.23 45.6 81.9 237.12
>> x=sscanf(a,'%f')

Elementare Konstrukte

2 - 45

x =
1.2300
45.6000
81.9000
237.1200
2.5.5

Editieren der Workspace-Daten

Die im Arbeitsbereich des


Systems (Workspace) abgelegten Daten knnen auch mit
einem interaktiven Werkzeug
eingesehen und editiert werden. Dazu ist im Desktop das
Fenster mit den Zugriffspfaden (Launch Pad) umzuschalten auf Workspace. Damit gewinnt man die nebenstehende
bersicht. Neben den Namen
der Variablen findet man auch
die Anzahl der Elemente
sowie die Gre den von ihnen belegten Speichers. Der
Typ der Variablen ist ebenfalls angegeben. Aus dieser
Liste kann man nun die einzusehenden bzw. zu editierenden Variablen auswhlen; das
ist mit Doppelklick mglich.
Anschlieend erscheint der
Variablen-Editor, der die einzelnen Feldelemente bereitstellt und diese auch zu editieren gestattet. Im folgenden Bild ist der
Inhalt der Matrix A zu sehen:

Programmentwicklung
3.
3.1

3-1

Programmentwicklung mit MATLAB


MATLAB als Programmierumgebung

In den vorangegangenen Abschnitten wurde MATLAB als interaktiv zu nutzendes System fr


wissenschaftlich-technische Berechnungen behandelt, das ber eine relativ einfache Kommandosprache zu bedienen war. Diese Form ist nur fr einfache Berechnungsablufe effizient.
Schon das wiederholte Ausfhren der Kommandos ber den Kommandopuffer zeigt sehr
schnell die Grenzen dieser Arbeitsweise. Das System stellt darum eine Programmierumgebung
bereit, die es ermglicht, MATLAB-Programme interaktiv entwickeln und testen zu knnen.
MATLAB-Programme als vorprogrammierte Kommandofolgen knnen in unterschiedlichen
Formen entwickelt werden. Dem Programmierer stehen drei Formen zur Auswahl bereit; welche
er whlt, hngt von der Zielstellung seiner Entwicklungsaufgabe ab. Im folgenden werden diese
drei Formen kurz charakterisiert.

MATLAB-Skript
Es erscheint zweckmig, bei greren und vor allem bei wiederholt abzuarbeitenden Kommandofolgen, diese in Dateien abzulegen und bei Bedarf zur Abarbeitung zu bringen. Derartige
Kommandofolgen werden als Skripts bezeichnet. Ein Skript kann alle Elemente der MATLABProgrammiersprache enthalten. Von der MATLAB-Funktion unterscheidet sich das Skript
dadurch, dass es keinen Parameterteil besitzt. Das hat zur Folge, dass evt. notwendige Vernderungen von Parametern nur durch Editieren des Skripttextes vorgenommen werden knnen.

MATLAB-Funktionen
MATLAB-Funktionen erweitern das Skriptkonzept durch die Einfhrung eines Abschnittes zur
Definition formaler Parameter. Diese Definition wird dabei fr Input- und Output-Parameter
getrennt vorgenommen. Die formalen Parameter werden beim Aufruf durch die Werte der
aktuellen Parameter ersetzt. Damit besitzen Funktionen gegenber Skripts eine wesentlich
grere Flexibilitt. Funktionen knnen sowohl durch andere Funktionen als auch auf der
Kommandoebene aufgerufen werden. Die MATLAB-Toolboxes werden als Funktionsbibliotheken bereitgestellt.

MATLAB-Programme mit grafischer Anwenderoberflche


Skripts und Funktionen erfordern fr ihre Entwicklung lediglich einen Quelltexteditor. Der
Programmierer sieht das Erscheinungsbild des entwickelten Programms erst nach dem Programmstart. Die Benutzeroberflche ist alphanumerisch orientiert, d.h. interaktive grafische
Elemente (Mens, Toolbars usw.) fehlen.
MATLAB stellt aber auch ein Entwicklungswerkzeug bereit, das die Entwicklung von Programmen mit einer grafischen Anwenderschnittstelle ermglicht. Dabei werden die Prinzipien der
interaktiven, ereignisorientierten Programmierung untersttzt (im Ansatz vergleichbar mit der
Programmentwicklung mit Delphi bzw. vergleichbaren Entwicklungssystemen). Das Entwicklungswerkzeug (es ist unter dem Funktionsnamen guide aufzurufen) stellt in einer Art
Komponentenbibliothek die grafischen Elemente der Anwenderoberflche bereit. Der Programmierer whlt die jeweiligen Elemente aus und positioniert sie im Entwurfsbereich. Durch einen
Eigenschaftsinspektor kann das Erscheinungsbild eines jeden Elements modifiziert werden.
Damit wird die entworfene Anwenderoberflche bereits zur Entwicklungszeit sichtbar. Zu den
Komponenten gibt es definierte Ereignisse, die zur Laufzeit die vom Programmierer definierten
Ereignisbehandlungsroutinen (in MATLAB als Callback functions bezeichnet) aktivieren.

3-2

Programmentwicklung

Alle Formen von MATLAB-Programmen knnen als Ausdrucksmittel fr die algorithmischen


Strukturen die im Abschnitt 2. eingefhrten Konstrukte nutzen. Daneben gibt es weitere Anweisungstypen (die prinzipiell auch im Kommandobetrieb genutzt werden knnen), die die
Steuerung der Programmablufe untersttzen und die im folgenden Abschnitt behandelt werden.
3.2
3.2.1

Anweisungen zur Programmsteuerung


Die Alternativanweisung

Die Alternativanweisung steuert die Programmverzweigung in Abhngigkeit vom Wert eines


logischen Ausdrucks. Es gilt folgende Syntax:
alternativ_anweisung 6 if logischer_ausdruck
anweisung ...
elseif logischer ausdruck
anweisung ...
...
else
anweisung ...
end
Die folgende Semantik ist zu bercksichtigen:
S
Der nach dem Schlsselwort if folgende logische Ausdruck wird ausgewertet. Liefert
der den Wert 1 (fr wahr), so werden die nachfolgenden Anweisungen ausgefhrt.
S
Hat der logische Ausdruck den Wert 0 (fr falsch), so sind, wie die Syntaxformel
ausweist, mehrere Flle mglich:

Wenn der Anweisungsblock mit dem Schlsselwort end abgeschlossen wird, so


wird er bersprungen; die Programmabarbeitung wird nach end fortgesetzt

Enthlt der Anweisungsblock einen else - Abschnitt, so werden die dem


Schlsselwort else folgenden Anweisungen ausgefhrt.

Enthlt der Anweisungsblock eine oder mehrere elseif-Klauseln, so werden


die zugehrigen logischen Ausdrcke abgearbeitet. Der Anweisungsblock der
der ersten Klausel folgt, die den Wert 1 liefert, wird abgearbeitet. Wird keine
Klausel gefunden, so wird ein evt. vorhandener else - Abschnitt bearbeitet oder
die Alternativanweisung wird verlassen.
S
Der else-Abschnitt sowie die elseif-Klauseln sind fakultativ.
S
Im Anweisungsblock der Alternativanweisung knnen weitere Alternativanweisungen
auftreten. Diese mssen aber streng hierarchisch geschachtelt werden!
<

Beispiel

%Test auf Singularitt vor Inversion


%
F=[0.3 0.9 0.9 0.1; 0.5 0.6 0.1 0.5; 1.3 7.6 1.9 0.7; 1.1 1.2 9.1 6.5];

y=[2.3 4.5 6.9 9.5]';


C=F*F';
if det(C)>0.0001
b=inv(C)*F*y;

Programmentwicklung

3-3

else
disp('Matrix singulr!');
end
b =
-6.6577
3.6241
0.9069
1.1875

3.2.2

Laufanweisung

Die Laufanweisung ermglicht die wiederholte Ausfhrung einer oder mehrerer Anweisungen.
Es gilt folgende Syntax:
laufanweisung 6 for laufvariable = vektorausdruck
anweisung ...
end
Die folgende Semantik ist zu bercksichtigen:
S Die Anweisungen im Gltigkeitsbereich werden fr alle Werte der Laufanweisung ausgefhrt, die diese annehmen kann, sofern die Laufanweisung nicht durch eine break-Anweisung vorher abgebrochen wird (s. Abschnitt 3.2.3.).
S Die Laufvariable nimmt alle Werte an, die durch die Komponenten des Vektorausdrucks
(der in der Regel durch eine Bereichsvariable definiert wird) im Kopf der Laufanweisung
gegeben sind. Die Anzahl der Zyklen ergibt sich damit aus der Lnge des Vektors.
S Auf die Laufvariable kann im Anweisungsteil zugegriffen werden. Sie behlt nach Abschluss der Abarbeitung ihren letzten Wert.
S Im Anweisungsteil einer Laufanweisung knnen weitere Laufanweisungen auftreten; diese
mssen aber streng hierarchisch geschachtelt werden.
<

Beispiel

%Sortieralgorithmus mit Abspeichern der


%ursprnglichen Indizes
x=[1 3 2 5 1 3];
n=length(x);
index=1:n;
for i=1:n
xmax=-1e20;
for j=i:n
if x(j)>=xmax
xmax=x(j);
imax=j;
end
end
x(imax)=x(i);
x(i)=xmax;
ima=index(imax);

3-4

Programmentwicklung

index(imax)=index(i);
index(i)=ima;
end
>> x

x =
5
index
index =
4

3.2.3

Die Abbruchanweisung

Eine Laufanweisung oder eine Schleifeanweisung kann vor Erreichen der eigentlichen Abbruchbedingungen verlassen werden. Es wird dies durch die Abbruchanweisung erreicht. Es gilt
folgende Syntax:
abbruchanweisung 6 break
Die folgende Semantik ist zu bercksichtigen:
S Wird die Abbruchanweisung im Gltigkeitsbereich einer Lauf- oder Schleifeanweisung
aufgerufen, so wird der Gltigkeitsbereich verlassen; die Programmabarbeitung wird
unmittelbar nach dem Gltigkeitsbereich fortgesetzt. Bei geschachtelten Gltigkeitsbereichen wird nur der innerste Gltigkeitsbereich verlassen.
S Wird die Abbruchanweisung im Gltigkeitsbereich einer Alternativ-, Fallunterscheidungsoder Fehlerreaktionsanweisung aufgerufen, so wird die weitere Bearbeitung abgebrochen
und der Gltigkeitsbereich verlassen.
S Wird eine Abbruchanweisung auerhalb der bisher diskutierten Flle in einem Skript oder
einer Funktion aufgerufen, so fhrt das zum Abbruch der weiteren Bearbeitung des Skripts
bzw. zum Rcksprung aus der Funktion.
3.2.4

Die Fallunterscheidungs-Anweisung

Die Fallunterscheidungs-Anweisung ermglicht die gezielte Verzweigung des Programmablaufs, wobei die Verzweigung ber den Wert eines skalaren Ausdrucks gesteuert wird. Es gilt
folgende Syntax:
fallunterscheidungs_anweisung 6 switch skalarer_ausdruck | zeichenkettenausdruck
case werteliste
anweisung ...
...
otherwise
anweisung ...
end
werteliste 6 konstante | { konstante , ... }
Die folgende Semantik ist zu bercksichtigen:

Programmentwicklung
S

S
S
S

<

3-5

Der Wert des skalaren Ausdrucks bzw. des Zeichenkettenausdrucks wird bestimmt. Anschlieend wird in den Wertelisten der case -Klauseln gesucht, ob sich der Wert in einer
der Listen findet. Der Anweisungsteil der case--Klausel in deren Werteliste der Wert
gefunden wird, wird abgearbeitet.
Wird der Wert in keiner Werteliste gefunden, so wird, falls vorhanden, der Anweisungsteil
nach otherwise abgearbeitet; sonst wird die Programmbearbeitung mit der ersten Anweisung nach end fortgesetzt.
Die Wertelisten mssen mit dem Typ des Ausdrucks nach switch kompatibel sein.
Umfasst die Werteliste nur einen Wert, knnen die geschweiften Klammern entfallen.
In den Anweisungsblcken knnen weitere Fallunterscheidungs-Anweisungen auftreten;
diese mssen streng hierarchisch geschachtelt werden.
Beispiel

Im nachfolgenden Programmabschnitt wird eine Messgre, die primr als elektrischer Spannungswert vorliegt, in die indirekt gemessene primre physikalische Gre umgerechnet. Der
Sensor habe 4 Messbereiche; fr jeden gilt eine andere Umrechnungsbeziehung. Im nachfolgenden MATLAB-Programmabschnitt wird diese Umrechnung fr mehrere Bereiche realisiert.
% Umrechnung einer Messgre fr
% unterschiedliche Messbereiche
switch messbereich
case 1
y=12+2.4*x;
case 2
y=14.5+3.2*x;
case 3
y=16.6+4.5*x;
otherwise
y=21.3+4.9*x;
end
3.2.5

Schleifeanweisung

Durch eine Schleifeanweisung wird eine Anweisungsgruppe so oft wiederholt ausgefhrt, bis
eine Abbruchbedingung erfllt ist. Im Gegensatz zur Laufanweisung liegt damit die Zyklenzahl
zu Beginn der Ausfhrung noch nicht fest. Es gilt folgende Syntax:
schleifeanweisung 6 while logischer_ausdruck
anweisung ...
end
Die folgende Semantik ist zu bercksichtigen:
S

Der logische Ausdruck nach dem Schlsselwort while definiert die Abbruchbedingung.
Solange dieser Ausdruck den Wert 1 (fr wahr) liefert, wird der folgende Anweisungsblock
abgearbeitet; nimmt er den Wert 0 (fr falsch) an, wird die Abarbeitung nach end fortgesetzt.

3-6
S
S
S

<

Programmentwicklung

Es handelt sich um eine abweisende Schleifenkonstruktion; hat der logische Ausdruck zu


Beginn bereits den Wert 0, wird die Anweisung als Ganzes bersprungen.
Der Gltigkeitsbereich kann auch mit einer break - Anweisung (s. Abschnitt 3.2.3)
verlassen werden.
Treten im Gltigkeitsbereich weitere Schleifeanweisungen auf, so mssen diese streng
hierarchisch geschachtelt werden.
Beispiel:

Im folgenden Beispiel wird der Reibungsbeiwert fr die Rohrstrmung nach der Gleichung von
COLEBROOK berechnet. Diese Gleichung hat die Form

Die Gleichung lsst sich nach dem Einsetzverfahren lsen; dazu muss eine Scheinauflsung
gefunden werden, die dem folgenden Programmbeispiel entnommen werden kann. Der Parameter r ist die relative Wandrauhigkeit und Re bezeichnet die REYNOLDS-Zahl
% Lsung der Colebrook-Gleichung
% fr den Reibungsfaktor der Rohrstrmung
Re=1e5;
r=1e-4;
x=0.1;
eps=0.005;
diff=1e3;
while diff > eps
xneu= 1/(0.86*log(r/3.7+2.51/Re/sqrt(x)))^2;
diff=abs((x-xneu)/x);
x=xneu;
end
x =
0.0189
3.2.6

Fehlerreaktions-Anweisung

Diese Anweisung erlaubt es dem Programmierer, beim Auftreten von Fehlern, die durch das
System bei der Programmabarbeitung diagnostiziert werden, in eigener Art und Weise zu
reagieren (die Fehler durch eigene Manahmen abzufangen). Es gilt folgende Syntax:
fehlerreaktions_anweisung 6 try
anweisung ...
catch
anweisung ...
end
Die folgende Semantik ist zu bercksichtigen:

Programmentwicklung
S

S
S

<

3-7

Die zwischen den Schlsselwrtern try und catch stehenden Anweisungen werden
ausgefhrt. Tritt ein Fehler auf, so wird der Anweisungsblock nach dem Schlsselwort
catch ausgefhrt.
Die Fehlerursache kann durch Aufruf der Funktion lasterr ermittelt werden. Diese
Funktion liefert die letzte MATLAB-Fehlermitteilung.
Tritt zwischen catch und end ein Fehler auf, so wird die Programmabarbeitung abgebrochen, es sein denn, der Abschnitt ist selbst als Fehlerreaktions-Anweisung ausgefhrt.
Beispiel

>> A=[1 2 3; 2 4 6; 1 3 7];


>> B=[1 2; 3 4];
>> try
A*B;
catch
disp('Error!!!');
disp(lasterr);
end;
Error!!!
Error using ==> *
Inner matrix dimensions must agree.

3.3 Skriptprogrammierung
Ein Skript ist eine MATLAB-Kommandofolge, die in einer Textdatei (einem M-File) abgelegt
wird. Diese Kommandofolge wird in der abgelegten Form abgearbeitet; eine Parametervermittlung ist nicht mglich.
Fr die Erzeugung eines Skripts kann prinzipiell ein beliebiger Texteditor verwendet werden. Es
empfiehlt sich aber, den von MATLAB bereitgestellten Editor zu verwenden, da dieses Werkzeug eine Reihe ntzlicher Funktionen bereitstellt. So hebt es einige Sprachelemente farblich
hervor, analysiert die Klammerstruktur in MATLAB-Ausdrcken, strukturiert den Programmtext bei einigen Anweisungen automatisch und hngt beim Speichern standardmig die
Dateierweiterung .M an den Dateinamen an. Auerdem kann das Skript aus dem Editor heraus
gestartet werden; die Debugger-Funktionen sind ebenfalls aus dem Editor heraus aktivierbar.
Soll ein neues Skript erstellt werden ist zunchst der Editor zu aktivieren. Dafr gibt es zwei
Mglichkeiten:
ber die Kommandozeile wird das Kommando
>> edit
eingegeben. Ein leeres Editorfenster wird anschlieend geffnet.
ber den Menpunkt File des Desktop-Mens wird der Menpunkt New angewhlt; im
erscheinenden Untermen wird der Menpunkt M-File aktiviert. Anschlieend erscheint
ebenfalls das leere Editorfenster.
Soll eine bereits vorhandene Skriptdatei geffnet werden, so ist entweder das Kommando
>> edit(dateiname) oder >> edit dateiname
einzugeben ( dabei ist lediglich der Dateiname anzugeben; die Erweiterung .M ist wegzulassen! ), oder der Menpunkt Open im File-Men des Desktop ist zu aktivieren.

3-8

Programmentwicklung

Soll die Kommandofolge des Skripts abgearbeitet werden, gibt es zwei Start-Mglichkeiten:
Der Name ( es ist wiederum nur der Dateiname anzugeben; die Erweiterung .M ist wegzulassen! ) der Datei wird ber die Kommandozeile eingegeben. Damit wird die Abarbeitung des Skripts gestartet.
ber den Menpunkt des Editorfenster wird der Unterpunkt Save and Run bzw. Run
aktiviert.
3.4
3.4.1

Die Programmierung von MATLAB-Funktionen


Syntax der MATLAB-Funktion

Im Gegensatz zum Skript ist die MATLAB-Funktion mehr als eine Kommandofolge. Sie
bernimmt beim Aufruf Parameter und liefert beim Verlassen Ergebnisse, die von anderen
Funktionen bernommen und weiterverarbeitet werden knnen. Somit muss eine Funktion ber
einen speziellen Abschnitt verfgen, der die Parametervermittlung beschreibt. Damit ergibt sich
folgende syntaktische Struktur:
funktion 6
function ergebnisparamter_liste = name_der_funktion (eingabeparameter_liste)
kommando ...
ergebnisparameter_liste 6 [variablenname, ...] | variablenname
eingabeparameter_liste 6 variablenname , ...
Zur Semantik sind folgende Regeln zu beachten:
S Eingabeparameter und Ergebnisparameter sind die formalen Parameter der Funktion, die zur
Laufzeit durch die aktuellen Parameter ersetzt werden.
S Die in der Liste der Eingabeparameter angegebenen Variablen werden im Kommandoteil
zur Laufzeit durch die beim Aufruf bergebenen Parameter ersetzt. Fr die aktuellen
Parameter sind auch Ausdrcke zugelassen.
S Die in der Liste der Ausgabeparameter aufgefhrten Variablennamen werden beim Aufruf
durch die Namen der aktuellen Ausgabeparameter ersetzt. Als aktuelle Ausgabeparameter
sind wiederum nur Variablen zugelassen.
S Tritt nur ein Ausgabeparameter auf, so knnen die eckigen Klammern fr die Parameterliste
entfallen. In diesem Fall kann der Funktionsaufruf auch in Ausdrcken erfolgen; der Rckgabewert der Funktion wird unter deren Namen bereitgestellt.
S Der Name der Funktion ermglicht ihren spteren Aufruf. Dabei sind die im Abschnitt 3.4.2
beschriebenen Regeln zum Gltigkeitsbereich eines Funktionsnamens zu beachten.
S Die den Funktionshauptteil ausmachende Kommandofolge kann weitere Variablen einfhren. Auch fr diese Variablen sind die Regeln im Abschnitt 3.4.2 zu beachten.
S Die Kommandofolge, die zur Funktion gehrt, wird durch das Ende der Datei oder den
Beginn einer neuen Funktion begrenzt. Wird dieses Ende bei der Abarbeitung erreicht,
erfolgt der Rcksprung in das rufende Programm. Soll der Rcksprung aus einer Funktion
in das rufende Programm von einer anderen Stelle aus erfolgen, ist das Rcksprungkommando
return
anzuwenden.
S Sollen Funktionen als Parameter an eine Funktion bergeben werden, so ist wie folgt zu

Programmentwicklung

3-9

verfahren:
Der Name der Funktion ist als formaler Parameter in der Liste der Eingabeparameter
aufzufhren. Programmtechnisch steht dieser Name fr ein Funktions-Handle.
Fr den Aufruf der Funktion innerhalb der Funktion, also fr den Aufruf der Funktion
als formaler Parameter, ist die feval-Funktion zu verwenden. Dieser Aufruf hat die
folgende Form:
[y1,y2,...] = feval(fhandle,x1,...,xn)

S
S

<

fhandle ist der formale Parameter, durch den die Funktion ber die Parameterliste
eingefhrt wird. Die Namen x1,...,xn stehen fr die Parameter, mit denen die
Funktion aufgerufen werden soll; [y1,y2,...] steht fr die Liste der aktuellen
Ausgabeparameter.
Beim Aufruf der Funktion ist als aktueller Parameter das Funktions-Handle fr die
aktuelle Funktion zu bergeben. Dieses Handle wird durch das dem Funktionsnamen
vorangestellt Zeichen @ (Tastenkombination <Alt Gr > < Q > ) erzeugt.
Diese Technik der Parameterbergabe von Funktions-Handles wird von einer Reihe der
Systemfunktionen (s. Abschnitt 3.4.3 ) genutzt, die numerische Standardalgorithmen
realisieren und die dabei auf eine anwenderspezifische Funktion Bezug nehmen mssen
(so z. B. die numerische Integration oder die Lsung von Anfangswertproblemen).
Die Listen der formalen Parameter knnen leer sein.
Die Listen der formalen Parameter werden den Listen der aktuellen Parameter beim Aufruf
einer Funktion von links nach rechts zugeordnet. Die Funktion kann beim Aufruf mit
verkrzter Parameterliste aufgerufen werden. ber die Funktionen
nargin
nargout
kann die Anzahl der aktuellen Parameter zur Laufzeit ermittelt werden.
Beispiele

Der im Abschnitt 3.2.5 bereits beschriebene Algorithmus zur Berechnung des Reibungsbeiwertes nach der COLEBROOK-Gleichung lt sich wie folgt durch eine Funktion realisieren:
function x = fkt_colebrook(r,Re)
% Lsung der Colebrook-Gleichung
% fr den Reibungsfaktor der Rohrstrmung
x=0.1;
eps=0.005;
diff=1e3;
while diff > eps
xneu= 1./(0.86*log(r/3.7+2.51./(Re.*sqrt(x)))).^2;
diff=abs((x-xneu)/x);
x=xneu;
end
Bei der Programmierung wurde davon ausgegangen, dass die bergebenen Parameter auch
Vektoren sein knnen. Durch folgende Kommandos lsst sich mit Hilfe der Funktion ein
Diagramm erzeugen, dass den Reibungsbeiwert ber der Re-Zahl darstellt.

3 - 10

Programmentwicklung

>>Re=1e4:100:2e5;
>>plot(Re,fkt_colebrook(1e-4,Re))
Im folgenden Beispiel wird die Polynom-Approximation einer Funktion realisiert. Dabei wird
der Name der Funktion als formaler Parameter eingefhrt. Die angegebene Funktion zur
Approximation kann also fr beliebige MATLAB-Funktionen verwendet werden. Der Parameter n bestimmt den Grad des approximierenden Polynoms; die Parameter xu, dx, xo definieren den Bereich, den die unabhngige Variable durchluft.
function p=fit_polynom(fkt,n,xu,dx,xo)
x=xu:dx:xo;
y=feval(fkt,x);
p=polyfit(x,y,n);
plot(x,y,x,polyval(p,x));
Folgender Aufruf der Funktion wrde sich fr die Approximation der sin-Funktion durch ein
Polynom 5. Grades im Bereich 0 bis 7 ergeben:
>> fit_polynom(@sin,5,0,0.1,7)
Das Ergebnis sind die Polynomkoeffizienten
ans =
-0.0047

0.0748

-0.3276

0.1215

0.9976

-0.0091

und die Grafik (im folgenden weggelassen) fr den Vergleich der Originalfunktion mit der
Approximation.

3.4.2

Gltigkeitsbereiche von Namen in Unterprogrammen

Die Namen von Variablen und Funktionen unterliegen bezglich ihrer Gltigkeitsbereiche
gewissen Regeln:
S Funktionen werden ( genau wie Skripts ) in Textdateien (M-Files) abgelegt. Die Funktion,
deren Namen mit dem des M-File bereinstimmt, kann ber die Kommandoebene oder von
anderen Funktionen aufgerufen werden. Sind in einem M-File weitere Funktionen enthalten,
knnen diese nur von den lokalen Funktionen aufgerufen werden, die in diesem M-File
definiert wurden.
S Funktionen werden beim Aufruf in den durch die Liste der Suchpfade adressierten Verzeichnissen gesucht; das M-File, das die Funktion enthlt, muss ber einen dieser Suchpfade
erreichbar sein. Die Liste der Pfade kann ber den Menpunkt Set Path des File-Mens im
Desktop eingesehen bzw. ergnzt werden.
S Die formalen Parameter sowie alle lokalen Variablen, die im Kommandoteil der Funktion
eingefhrt werden, sind nur innerhalb der Funktion gltig. Die Namen knnen also auch in
anderen Funktionen verwendet werden; die Bedeutung eines Namens ist an den Gltigkeitsbereich der jeweiligen Funktion gebunden. Jede Funktion besitzt damit einen eigenen
Workspace.
S Sollen bestimmte Variablen ber den Gltigkeitsbereich einer Funktion hinaus erreichbar

Programmentwicklung

3 - 11

sein, mssen sie als global deklariert werden. Diese Deklaration folgt der Syntax:
deklaration_globaler_variablen 6 global variablenname ...
Alle Funktionen, die die globale Deklaration enthalten, knnen auf die so eingefhrten
Variablen zugreifen. Die Deklaration muss vor der ersten Verwendung der Variablen im
Kommandoteil erfolgen.
<

Beispiel

Im folgenden Beispiel verwendet eine Funktion zur Umsatzbestimmung die reaktionskinetischen Konstanten als globale Parameter; diese knnen vor Aufruf der Funktion beispielsweise
im Kommandomodus gesetzt werden. Hier zunchst die MATLAB-Funktion:
function u = umsatz(T,tau)
global k0;
global EA;
k= k0*exp(-EA./(T+273));
u= 1-1./(1+tau.*k);
Der Aufruf kann folgende Form haben:
>>
>>
>>
>>
>>
>>

global k0
global EA
k0=650; EA=3800;
T=20:5:80;
u=umsatz(T,50);
plot(T,u)

3.4.3

Systemfunktionen - Ergnzung

MATLAB enthlt neben den Werkzeugen zur Programmentwicklung eine umfangreiche


Funktionsbibliothek, die neben den im Abschnitt 2. bereits behandelten elementaren Funktionen
auch eine Reihe gehobener Funktionen fr komplexere Aufgabenstellungen umfasst. Diese
Funktionen entsprechen der im vorangegangenen Abschnitt beschriebenen Syntax; sie knnen
in anwenderspezifische Programme durch Aufruf eingebunden werden. Wenn zum Basissystem
noch spezielle Toolboxes installiert sind, so werden deren Tools auch in Form von Funktionsbibliotheken bereitgestellt.
Im folgenden sollen einige Funktionen des Basissystems behandelt werden, die im oben genannten Sinne ber die Funktionalitt einer gewhnlichen Programmbibliothek hinausgehen, da sie
die numerische Behandlung komplexerer Aufgabenstellungen untersttzen.

3.4.3.1 Lsung linearer Gleichungssysteme


Bei den Lsungsverfahren fr lineare Gleichungssysteme ist zwischen den direkten und den
iterativen Lsungsverfahren zu unterscheiden. Iterative Lsungsverfahren sind fr schlecht

3 - 12

Programmentwicklung

konditionierte Systeme sowie fr Systeme hoher Ordnung mit schwach besetzten Koeffizientenmatrizen von Bedeutung.
Den Lsungsvektor x des linearen Gleichungssystems A x = B erhlt man ber das folgende
MATLAB-Kommando:
x = A \ B
Die Lsung des Systems x A = B wird durch das folgende Kommando gewonnen:
x = A / B
Wenn B eine Matrix ist, so werden die Spalten von B als aufeinander folgende rechte Seiten
behandelt; x wird damit zur Matrix der Lsungen, wobei die Spaltenvektoren von x den jeweiligen Spalten von B als Lsungsvektoren zugeordnet sind.
A ist im Standardfall eine [n x n] - Matrix. Fr die Anwendung des Operators \ ist das aber
keine notwendige Voraussetzung; A kann eine [m x n]-Matrix sein. Damit sind die folgenden
Spezialflle fr die Bestimmung des Lsungsvektors x zu unterscheiden:

m = n Die exakte Lsung des Gleichungssystems wird bestimmt.


m > n Es liegt ein berbestimmtes System vor. Es wird die Lsung bestimmt, die das
System im Sinne der Summe der kleinsten Quadrate erfllt.
m < n Es liegt ein unterbestimmtes System vor. Es werden hchstens m von Null verschiedene Basislsungen bestimmt.
Der Lsungsalgorithmus unterscheidet diese Flle automatisch.
Fr die iterative Lsung eines linearen Gleichungssystems steht eine Reihe von Verfahren
bereit; die Liste dieser Verfahren sowie die jeweilige detaillierte Beschreibung sind der on-line
Hilfe (Stichwort: simultaneous linear equations) zu entnehmen.
<

Beispiel

>> A=[3 5 9; 26 10 5; 2.4 11.8 30.7];


>> B=[1 5 10; 2.4 2.5 23.7];
>> x=A\B'
x =
0.9949
-2.7365
1.2998
>> A*x
ans =
1.0000
5.0000
10.0000

1.6571
-5.4217
2.7264
2.4000
2.5000
23.7000

% Im folgenden wird ein unterbestimmtes System behandelt


>> A=[3 5 9; 26 10 5];
>> B=[1 5 ; 2.4 2.5 ];
>> x=A\B'

Programmentwicklung

3 - 13

x =
0.1826
0
0.0502
>> A*x
ans =
1.0000
5.0000

0.0479
0
0.2507
2.4000
2.5000

3.4.3.2 Numerische Integration


Fr die numerische Ermittlung des Wertes Q des bestimmten Integrals
stehen in MATLAB zwei Funktionen zur Verfgung. Die folgenden
Beschreibungen gehen von der nebenstehenden Darstellung des bestimmten Integrals aus.
Die Funktionen werden wie folgt aufgerufen:
q = quad(fun,a,b,tol)
Es wird die adaptive SIMPSON -Regel angewandt, wobei der absolute Fehler kleiner als tol
ist. Dieser Parameter kann auch weggelassen werden; es wird dann der Standardwert von
1.0E-6 angenommen. Die Parameter a und b bestimmen die untere bzw. obere Integrationsgrenze. fun bezeichnet einen Funktions-Handle, der auf die Funktion fr den Integranden
verweist. Diese Funktion muss gerade einen Eingangsparameter, der die Integrationsvariable
darstellt, besitzen.
q = quadl(fun,a,b,tol)
Der Wert des Integrals wird nach der LOBATTO -Quadraturformel bestimmt; die Parameter
besitzen die gleiche Bedeutung wie bei der vorangegangenen Funktion.
Mit der folgenden Funktion kann der Wert des nebenstehend dargestellten Doppelintegrals nherungsweise
bestimmt werden:

q = quadl(fun,a,b,tol)
Die Parameter besitzen die gleichen Bedeutungen wie bei den vorangegangenen Funktionen;
der Integrand muss hier aber eine Funktion mit zwei Eingangsparametern fr die zwei
Integrationsvariablen sein.
<

Beispiel

Das stationre Temperaturprofil in einem senkrecht an einer beheizten Platte abstrmenden


Flssigkeitsfilm kann in dimensionsloser Schreibweise wie folgt dargestellt werden:

3 - 14

Programmentwicklung

Die folgende Funktion gestattet die Berechnung des bestimmten Integrals fr eine Reihe
vorgegebener Werte der oberen Integrationsgrenze > (die ' - Funktion ist als Standardfunktion
in MATLAB verfgbar):
function Theta=t_film(xi)
n=length(xi);
for i=1:n
Theta(i)=1-quad(@fkt_film,0,xi(i))/gamma(4/3);
end
Der Integrand wird durch die folgende Funktion gegeben:
function y = fkt_film(x)
y= exp(-x.^3);
Die folgenden MATLAB-Kommandos fhren zur grafischen Darstellung der Funktion 1(>):
>> x=0:0.1:2;
>> y=t_film(x);
>> plot(x,y)

Programmentwicklung

3 - 15

3.4.3.3 Systeme gewhnlicher Differentialgleichungen 1. Ordnung - Anfangswertprobleme


Fr die Lsung des folgenden Anfangswertproblems

stellt MATLAB eine Reihe von Lsungsprozeduren bereit, die alle nach dem folgenden Muster
aufgerufen werden ( Modifikationen zum Aufruf sind in der on-line-Hilfe zu finden):
[T,Y] = solver(odefun,tspan,y0,options)
Der Funktionsname solver steht fr einen der in der folgenden Tabelle angegebenen
Namen:
Name

Geeignet fr steife DGL-Systeme

Genauigkeitsanforderungen

Anwendungsempfehlung

ode45

nein

mittel

Sollte immer als erstes Verfahren eingesetzt werden.

ode23

nein

niedrig

Fr orientierende Untersuchung bei geringen Genauigkeitsanforderungen

ode113

nein

niedrig ... hoch

Bei hohem Berechnungsaufwand fr die rechten Seiten.

ode15s

ja

niedrig ...mig

Als Alternative zu ode45,


wenn das System steif ist.

ode23s

ja

niedrig

Bei geringen Anforderungen


und steifen Systemen.

ode23t

ja/nein

niedrig

Bei geringen Anforderungen


und mig steifen Systemen.

ode23tb

ja

niedrig

Bei geringen Anforderungen


und steifen Systemen.

Der Parameter odefun ist ein Funktions-Handle, der auf eine Funktion zeigt, die die
rechten Seiten der Differentialgleichungen bereitstellt. Diese Funktion muss als ersten
Eingangsparameter die Zeit und als zweiten den Vektor der Zustandsvariablen besitzen. Als
Ergebnisparameter muss diese Funktion den Vektor der rechten Seiten liefern
f = odefun(t,x)
Der Parameter tspan bezeichnet den Vektor des Intergrationsintervalls:
tspan = [tanf , tende]
Soll die Lsung zu bestimmten Zeitpunkten ermittelt werden, so sind diese in tspan
aufzulisten:
tspan = [tanf ,t1, t2, ... , tende]

3 - 16

Programmentwicklung

Die Zeilen der Lsungsmatrix Y korrespondieren dann zu diesem Zeitraster.


Der Vektor y0 enthlt die Anfangswerte.
ber den Parameter options knnen bestimmte Eigenschaften des Integrationsverfahrens
sowie die Ergebnisdarstellung beeinflusst werden. Um den Parameter auf die gewnschte
Form zu setzen, ist die Funktion odeset aufzurufen. Die beiden Hauptformen des Aufrufs
sind im folgenden gegeben:
options = odeset('name1',wert1,...)

Die Zeichenketten stellen die Namen der Eigenschaften bereit; den Namen schlieen sich
die aktuellen Werte an. Die Liste der mglichen Parameter ist umfangreich (s. on-line-Hilfe
zu dieser Funktion). In der folgenden Liste ist eine Auswahl fr die wichtigsten Flle zu
finden:
Name der Eigenschaft

Werte

Bedeutung

RelTol

reelle Konstante

Relative Genauigkeit. Der Integrator berprft in


jedem Schritt, ob die folgende Bedingung erfllt ist:
Standardwert: 1E-3

AbsTol

reelle Konstante

Vektor der absoluten Genauigkeiten; wird ein Skalar angegeben, wird dieser Wert fr alle x(i) angenommen. Standardwert: 1E-6

OutputFcn

Funktions-H.

Funktions-Handle auf eine anwenderspezifische


Funktion, die die Darstellung der Lsung bernimmt. Die Einzelheiten zur Struktur dieser Funktion sind in der on-line-Hilfe unter dem Stichwort
ODE-Solver Output Properties zu finden.

@odeplot

Diese Funktion ist bereits vorhanden; sie ist zugleich die Standardfunktion fr die Ergebnisdarstellung. Die Zustandsgren werden ber der Zeit
dargestellt.

@odephas2

Diese Funktion ist bereits vorhanden. Es wird ein


zweidimensionales Phasendiagramm dargestellt.

@odephas3

Diese Funktion ist bereits vorhanden. Es wird ein


dreidimensionales Phasendiagramm dargestellt.

Vektor mit
ganzzahligen
Elementen

Dieser Vektor enthlt die Indizes der Zustandsgren, die fr die Ergebnisdarstellung mit der Ausgabefunktion herangezogen werden sollen.

OutputSel

Programmentwicklung

3 - 17

MaxStep

reelle Konstante

Grte Schrittweite, die der Integrator verwenden


darf. Standardwert: das durch tspan gegebene
Intervall.

InitialStep

reelle Konstante

Der Integrator wird versuchen, mit diesem Intervall


zu beginnen; werden die Toleranzgrenzen verletzt,
wird die Schrittweite verringert.

options = odeset(oldopts,'name1',wert1,...)

Ein bereits existierender Satz von Optionen oldopts wird modifiziert.


Der Ergebnisparameter T enthlt die Zeitpunkte, zu denen eine Lsung vorliegt und die
Matrix Y stellt spaltenweise die Lsungen fr die einzelnen Zustandsgren bereit.
<

Beispiel

Das folgende nichtlineare DGL-System, das auch als das LOTKA -VOLTERRA -DGL-System
bezeichnet wird, beschreibt das sogenannte Ruber-Beute-Modell. Dieses DGL-System kann
aber auch fr die Beschreibung autokatalytischer Reaktionen herangezogen werden. Es handelt
sich um das folgende Anfangswertproblem:

Fr die Kodierung der rechten Seite kann die folgende MATLAB-Funktion angegeben werden:
function f = lotka_volterra(t,x)
% Funktion fr die rechten Seiten des
% Lotka-Volterra-Systems
f=[5*x(1)-0.1*x(1)*x(2);
-3*x(2)+0.05*x(1)*x(2)];
Mit den folgenden Kommandos wird das System gelst; die Zeitverlufe werden dargestellt:
>>
>>
>>
>>

y0=[10; 1];
tspan=[0:0.1:10];
[T,Y]=ode45(@lotka_volterra,tspan,y0);
plot(T,Y(:,1),T,Y(:,2))

3 - 18

Programmentwicklung

3.4.3.4 Systeme gewhnlicher Differentialgleichungen - Randwertprobleme


Das folgende System gewhnlicher Differentialgleichungen 1. Ordnung beschreibt die kanonische Form des Zwei-Punkt Randwertproblems

MATLAB stellt fr die Lsung dieses Problems die folgende Funktion bereit:
sol = bvp4c(odefun,bcfun,solinit,options)

Der Parameter odefun ist ein Funktions-Handle auf die Funktion, die die rechten Seiten
der Differentialgleichungen kodieren. Diese Funktion muss die folgende Parameterstruktur
besitzen:
dydx = odefun(x,y)
Der Parameter x liefert die unabhngige Variable; der Parameter y liefert den Vektor der
Zustandsgren. Der Ergebnisparameter muss die rechten Seiten der Differentialgleichungen ergeben.
Der Parameter bcfun ist ein Funktions-Handle auf die Funktion, die die Randbedingungen
kodiert. Diese werden als Gleichungssystem in der oben angegebenen Form vorausgesetzt.

Programmentwicklung

3 - 19

Die Funktion muss die folgende Parameterstruktur besitzen:


res = bcfun(ya,yb)
Die Parameter ya bzw. yb bergeben die Randwerte der Zustandsgren; der Ergebnisparameter res stellt die Residuen der Randbedingungen (bei Erfllung der Randbedingungen
mssen diese verschwinden!) bereit.
Der Parameter solinit ist eine Strukturvariable, die ber folgende Datenfelder verfgt:
S solinit.x Liefert das Anfangsraster der unabhngigen Variablen. Dabei muss
gelten: solinit.x(1)=a solinit.x(end)=b.
S solinit.y Matrix der Anfangsschtzungen fr die Lsungen. Die Spalte
solinit.y(:,i) stellt die Schtzung der Zustandsgren am Rasterpunkt solinit.x(i)bereit.
Fr die Belegung der Struktur solinit kann die Funktion bvpinit genutzt werden.
Diese wird wie folgt aufgerufen:
solinit = bvpinit(x,v)
Dabei ist x wiederum der Vektor der Sttzstellen. Der Vektor v hat fr jede Zustandsgre
eine Komponente, die als Anfangsschtzung auf alle Sttzstellen bertragen wird. Das
Unterprogramm belegt somit die Struktur mit konstanten Anfangswerten in der Form, wie
das von der Funktion bvp4c gefordert wird.
Der Parameter options spezifiziert, sofern er angegeben wird, die Eigenschaften des
Lsungsalgorithmus (relative/absolute Genauigkeiten usw.). Die hierfr bestehenden
Mglichkeiten sind der on-line-Hilfe zu entnehmen. Um den Parameter richtig zu belegen,
gibt es die Hilfsfunktion bvpset.
Der Ergebnisparameter sol ist eine Strukturvariable, die ber folgende Datenfelder verfgt:
S sol.x
Enthlt als Vektor die Sttzstellen der Lsung. Diese Sttzstellen sind die,
die der Lsungsalgorithmus festgelegt hat.
S sol.y
Diese Matrix stellt zeilenweise die Lsungsverlufe fr die Zustandsgren
an den in x mitgeteilten Sttzstellen dar.
S sol.yp Diese Matrix stellt die Werte der ersten Ableitungen der Zustandsgren an
den Sttzstellen dar.
Hinweis: Die Namen der Strukturvariablen knnen vom Anwender frei gewhlt werden;
die Namen der Datenfelder sind jedoch so wie oben angegeben zu whlen.
<

Beispiel (Details zum Problem sind in [4] zu finden)

Das Geschwindigkeitsprofil fr die Rohrstrmung eines nicht-newtonschen Mediums ist zu


bestimmen. Das rheologische Verhalten des Mediums kann nach dem Ansatz von CARREAU
beschrieben werden:

3 - 20

Programmentwicklung

In dimensionsloser Schreibweise folgt aus der Impulsbilanz das folgende Randwertproblem 2.


Ordnung fr die Geschwindigkeit:

Dabei gelten folgende Definitionen:

Durch Einfhrung neuer Zustandsgren kann diese DGL 2. Ordnung in ein System von zwei
DGL 1. Ordnung umgeformt werden:

Damit nimmt das DGL-System einschlielich der umgeformten Randbedingungen die nebenstehende Gestalt an

Die MATLAB-Funktionen fr die Lsung des Problems haben die folgende Form:
function dydx=bp_odefun(x,y)
% Rechte Seiten der DGL's
delta_p_L=20000; mu0=102; t1=4.36; n=0.375; R=0.1;
vst=delta_p_L*R*R/mu0;lambda=t1*vst/R;
dydx=[ -(y(1)/(x+0.00001)+(1+lambda*lambda*y(1)*y(1))^(0.5*(1-n))...
/(1-((1-n)*lambda*lambda*y(1))...
/(1+lambda*lambda*y(1)*y(1))));
y(1)];

Programmentwicklung

3 - 21

function res=bp_bcfun(ya,yb)
% Diese Funktion kodiert die Randbedingungen
res=[ya(1);yb(2)];

Der Aufruf der Funktion fr die Lsung des Problems und die grafische Darstellung der Lsung
umfasst dann nur noch folgende Kommandos:
>> sol=bvp4c(@bp_odefun,@bp_bcfun,bvpinit(0:0.05:1,[0;0]));
>> plot(sol.x,sol.y(2,:))

3.4.3.5 Integration partieller Differentialgleichungen


MATLAB stellt im Basispaket eine Funktion zur Lsung des folgenden Anfangs-RandwertProblems zur Verfgung:

Dabei handelt es sich um ein System partieller Differentialgleichungen (PDGL), wobei die
gesuchten Funktionen, die die Elemente des Vektors u sind, von der Zeit t und von einer
Ortskoordinate x abhngen knnen. Es gelten folgende Festlegungen:

definieren die Integrationsbereiche.


Fr den Parameter m gilt folgende Zuordnung
m = 0 eindimensionaler Fall
m = 1 zylindersymmetrischer Falle
m = 2 kugelsymmetrischer Fall

f ist der Vektor der Fluss-Terme und s der Vektor der Quellterme. C ist eine Diagonalma-

3 - 22

Programmentwicklung

trix, deren Diagonalelemente entweder identisch Null sind (die entsprechende PDGL ist
elliptisch) oder von Null verschieden (die entsprechende PDGL ist parabolisch).
Die Anfangsbedingungen mssen durch folgende Funktionen gegeben sein:

Die Randbedingungen mssen an den Stellen x = a und x = b fr alle t die Randbedingungen


befriedigen, die in der folgenden Form gegeben sind:

Q ist eine Diagonalmatrix; die Diagonalelemente knnen auch verschwinden. Es ist zu


beachten, dass diese Formulierung der Randbedingungen von den Flussfunktionen und nicht
von den Gradienten der Zustandsgren ausgeht.
Der folgende Funktionsaufruf bestimmt die Lsung eines Systems von PDGLs
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)

Der Parameter m bestimmt die Ordnung der Symmetrie (s. o.). Es gilt 0 #m #2.

Der Parameter pdefun ist ein Funktions-Handle auf die Funktion, die die Komponenten der Funktionen-Vektoren bereitstellt, die die konkrete Form des PDGL-Systems
ausmachen. Die Funktion muss die folgende Parameterstruktur besitzen:
[ c , f , s ] = pdefun(x,t,u,dudx)
Die Variablen x und t sind skalare Variablen. Der Vektor u stellt die Werte der Lsungsfunktionen und der Vektor dudx die Werte der partiellen Ableitungen zum aktuellen
Zeitpunkt t und an der Stelle x bereit. Die Ergebnisparameter c, f, s sind Vektoren, deren
Bedeutungen sich unmittelbar aus der oben gegebenen Schreibweise des PDGL-Systems
ergeben. Der Vektor c stellt dabei die Hauptdiagonale der Matrix C bereit.

Der Parameter icfun stellt ein Funktions-Handle auf die Funktion bereit, die die
Anfangswerte berechnet. Die Funktion muss die folgende Parameterstruktur besitzen:
u = icfun(x)
Die Anfangswerte, fr die Funktionen, die fr den Vektor x berechnet werden, stehen als
Spaltenvektoren in u.

Der Parameter bcfun ist ein Funktions-Handle auf die Funktion, die die Randwerte
berechnet. Diese Funktion muss folgende Parameterstruktur besitzen:
[pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t)
Die Parameter xl ( entspricht a ), xr ( entspricht b ) sind die Koordinaten des linken bzw.
des rechten Randes; t bergibt den aktuellen Zeitpunkt. Die Vektoren ul und ur bergeben die aktuellen Werte der Lsung am linken bzw. rechten Rand.

Programmentwicklung

3 - 23

Die Vektoren pl, ql stellen die Koeffizienten im Gleichungssystem der Randbedingungen (s. o.) am linken Rand bereit, die Vektoren pr, qr entsprechend am rechten Rand.

<

Der Parameter xmesh bezeichnet den Vektor der Rasterpunkte fr die Ortskoordinate:
xmesh = [x0, x1 , ..., xn ]
wobei x0 = a und xn =b gilt. Die Werte mssen in aufsteigender Folge angegeben
werden. Es sind mindestens drei Rasterpunkte notwendig.

Der Parameter tspan stellt die Punkte des Zeitrasters bereit:


tspan = [ t0 , t1 , ... tende ]
Auch diese Werte mssen in aufsteigender Folge angegeben werden; es sind wenigstens
drei Zeitpunkte vorzugeben.

Der optionale Parameter options erlaubt das Setzen von Parametern, die sich auf das
numerische Verfahren beziehen (Genauigkeit usw.). Einzelheiten knnen der on-lineHilfe entnommen werden.

Der Ergebnisparameter sol ist ein dreidimensionales Feld, das aus so vielen zweidimensionalen Scheiben besteht, wie das System Gleichungen bzw. Zustandsgren hat.
Daraus folgt beispielsweise:
S sol (:,:,k) liefert die Werte der Lsung fr die k-te Zustandsgre ber dem
vorgegebenen Orts-/Zeitraster.
S sol (i,:,k)liefert das Ortsprofil zum Zeitpunkt tspan(i) fr die k-te Zustandsgre.
S sol (i,j,k) liefert den Wert der k-ten Zustandsgre an der Stelle xmesh(j)
zum Zeitpunkt tspan(i).

Beispiel (Details zum Prozess sind in [4] zu finden)

Ein Gas A diffundiert in eine Flssigkeit B und reagiert dabei mit der Flssigkeit. Die Flssigkeitssule hat die Lnge L; der Diffusionskoeffizient sei DAB. Die Transportgleichung fr die
Komponente A besitzt die konkrete Form:

Nach Einfhrung dimensionsloser Koordinaten folgt:

Die Anfangs- und Randbedingungen sind wie folgt gegeben:

Fr die Konstanten knnen folgende Werte angenommen werden:

3 - 24

Programmentwicklung

DAB = 2 10 -9 m2 s -1 L = 0.1 m k = 2 10 -7 s -1
Damit lassen sich die folgenden MATLAB-Funktionen schreiben:
function [c, f, s] = pde_flow(x,t,u,dudx)
% Fluss-Funktion
% Entspricht der Funktion pdefun.
D = 2e-9; L=0.1; k=2E-7;
A=k*L*L/D;
c=1;
f=dudx;
s=-A*u;
function u=pde_init(x)
% Zuweisung der Anfangswerte
% Entspricht der Funktion icfun
u=0;
function [pl,ql,pr,qr]=pde_bound(xl,ul,xr,ur,t)
% Funktion fr die Erfllung der Randbedingungen
% Entspricht der Funktion bcfun.
pl=ul-0.02;
ql=0; pr=0; qr=1;

Die Funktion zur Lsung der PDGL kann nun wie folgt aufgerufen werden:
>> tspan=0:1:10; xmesh=0:0.1:1;
>> sol=pdepe(0,@pde_flow,@pde_init,@pde_bound,xmesh,tspan);
>> surf(tspan,xmesh,sol(:,:,1))

Programmentwicklung

3 - 25

3.5 MATLAB-Programme mit grafischer Anwenderoberflche (GUI-Projekte)


Die nachfolgende Darstellung hat lediglich einfhrenden Charakter. Es wird auerdem vorausgesetzt, dass die Grundlagen der objektorientierten Programmierung, wie sie etwa bei einem
Einfhrungskurs in Delphi erworben werden, bekannt sind.
3.5.1

Die Entwicklungsumgebung

Aktivieren des Entwicklungssystems (Layout Editor)


Der Layout Editor als die grafische Oberflche des Entwicklungssystems kann wie folgt
aktiviert werden
3. Menpunkt File im Hauptmen des Desktop anwhlen.
4. Untermenpunkt New aktivieren.
5. Im Auswahlmen den Punkt GUI auswhlen.
Im folgenden Bild ist der Layout Editor dargestellt:

Der Layout Editor kann auch mit folgenden Kommandos aktiviert werden:
guide
Dieser Aufruf hat die gleiche Wirkung wie der soeben beschriebene Weg ber das Hauptmen.
guide('filename.fig') oder guide filename
Der Layout Editor wird aktiviert und es wird das Problem geladen, dessen grafische Oberflche in der angegebenen Figure-Datei steht.

3 - 26

Programmentwicklung

guide(figure_handles)
Der Layout Editor wird aktiviert und es werden die Grafiken, deren Handles im Vektor
figure_handles stehen, in den aktuellen Entwurf integriert. Dabei werden die Eigenschaften der Grafik (Achsen, Beschriftungen, usw.) bernommen. Zur Erzeugung eines
Figure-Handel s. Abschnitt 2.3.
Die Komponentenpalette des Layout Editors
Komponenten sind vorgefertigte Prototypen fr die Gestaltung der grafischen Oberflche. Es
handelt sich dabei also um Objekte, die durch den Entwickler in Form konkreter Instanzen im
Arbeitsbereich angeordnet werden. Jede dieser Instanzen kann ber den Eigenschaftsinspektor
in ihrem Erscheinungsbild bezglich der verffentlichten Eigenschaften verndert werden. In
der folgenden bersicht sind die Komponenten erklrt:

Auswahl

Push Button

Toggle Button

Radio Button

Checkbox
Statischer Text

Editor-Feld
Schieber

Rahmen

List-Box

Popup-Men

Achsen

Die hier angezeigten Komponenten knnen per Mausklick angewhlt und dann in den Arbeitsbereich gezogen werden. Alle weiteren Operationen der Modifikation bzw. Anpassung vollziehen sich dann im Arbeitsbereich. Fr die Positionierung der ausgewhlten Elemente ist das
System der Rasterlinien hilfreich.

Programmentwicklung

3 - 27

Die zustzlichen Werkzeuge des Layout Editors


In der folgenden Abbildung sind die Buttons fr die Aktivierung der zustzlichen Werkzeuge,
ber die der Layout Editor verfgt, nher erlutert.
Objekt Browser
Aktivierung des Entwurfs

Ausrichte-Werkzeug

Men Editor

Eigenschaftsinspektor

Die Zusatzwerkzeuge erfllen folgende Funktionen:


Ausrichte-Werkzeug:

Die im Arbeitsbereich angeordneten Komponenten werden nach


vorgegebenen Zielstellungen ausgerichtet. Bei Aktivierung des
Werkzeuges erscheint die Schablone mit den mglichen Ausrichtungszielen.
Men Editor
Es wird das Werkzeug zur Erzeugung des Haupt-Mens sowie der zu
den definierten Menpunkten gehrenden Untermens aktiviert.
Eigenschaftsinspektor
Der Eigenschaftsinspektor fr das Hauptformular der Anwendung
wird aktiviert. Das Erscheinungsbild des Hauptformulars kann damit
eingestellt werden.
Objekt Browser
Die im Formular angeordneten Komponenten-Instanzen knnen
ausgewhlt werden. Es erscheint eine Liste mit den Instanzen. Doppelklick auf ein Element bewirkt die Aktivierung des Eigenschaftsinspektors der Komponente.
Aktivierung des Entwurfs Neben dem Entwurfsfenster erscheint der Entwurf so, wie er nach
dem Start der Anwendung erscheinen wird.

3 - 28

Programmentwicklung

Das Hauptmen
ber die Menpunkte des Hauptmens sind weitere Funktionen zu aktivieren:
File
Die Funktionen zum ffnen und Schlieen von GUI-Entwrfen werden bereitgestellt. ber den Unterpunkt Preferences knnen die Grundeinstellungen gendert
werden.
Edit
Die Grundfunktionen fr das Editieren eines Entwurfs (Ausschneiden, Einfgen,
Auswhlen usw.) werden bereitgestellt.
Layout Ausgewhlte Zusatzfunktionen (s. o.) werden als Menpunkte angeboten. Die Positionierung der Instanzen (Vorder-/Hintergrund usw.) kann gendert werden.
Tools
Weitere Zusatzfunktionen (s. o.) werden als Menpunkte angeboten.
Help
Die on-line-Hilfe wird aktiviert.
3.5.2

Komponenten und ihre Eigenschaften

Der Eigenschaftsinspektor
Der Eigenschaftsinspektor ist das Werkzeug, mit dessen Hilfe die im Arbeitsbereich positionierten Komponenteninstanzen in ihren Eigenschaften verndert werden knnen. Jede Komponente
verfgt ber eine Menge an Eigenschaften, die im Eigenschaftsinspektor angezeigt und verndert werden knnen. Im folgenden Bild wird der Eigenschaftsinspektor fr eine Komponenteninstanz des Typs Push Button dargestellt:

Dieses Fenster erscheint,


S wenn man einen Doppelklick auf die gewnschte Instanz ausfhrt oder
S wenn man fr eine vorher ausgewhlte Instanz mit der rechten Maustaste das PopUp-Men
aktiviert und in diesem Men den Menpunkt Inspect Properties whlt oder
S wenn man ber den Menpunkt Edit des Hauptmens den Punkt Inspect Properties whlt.
Die Eingabefelder fr die Eigenschaften werden von den Eigenschaftstypen bestimmt. Wird
eine Farbe als Eigenschaft verndert, so erscheint ein Feld, in dem die Mischung der Grund-

Programmentwicklung

3 - 29

farben so gendert werden kann, bis sich die gewnschte Farbe einstellt. Kann eine Eigenschaft
nur einen Wert aus einer endlichen Menge von festliegenden Werten annehmen, erscheint eine
Pickliste mit dieser Menge. Nur wenn der Wert der Eigenschaft nur durch den Nutzer vorgegeben werden kann, erscheint ein Editierfeld fr die Eingabe des Wertes.
Komponenten - Eine bersicht
Die Komponenten sind die Elemente der grafischen Oberflche, die zur Entwicklungszeit
bereits in ihren Eigenschaften so sichtbar sind, wie sie zur Laufzeit erscheinen. Zur Laufzeit
knnen sie unterschiedliche Ereignisse auslsen, auf die der Programmierer mit Ereignisbehandlungsroutinen (die in MATLAB Callback-Routinen heien ) reagieren kann. Die fr die
Gestaltung grafischer Oberflchen verfgbaren Komponenten (Anordnung in der Palette s. o.)
werden in der folgenden Tabelle bezglich ihrer Funktionalitt beschrieben:
Komponente

Beschreibung der Funktion

Push Button

Der Schalter erzeugt bei Mausklick ein Ereignis. Er ndert seine Form fr
die Dauer des Klicks.

Toggle Button

Der Schalter erzeugt bei Mausklick ein Ereignis. Er ndert seine Form
jeweils mit jedem Klick (rastender Schalter).

Radio Button

Der Schalter erzeugt bei Mausklick ein Ereignis. Schalter dieses Typs
werden vorrangig als Auswahlschalter fr Zustnde verwendet, die sich
gegenseitig ausschlieen. Der angeklickte Schalter hat in der Eigenschaft
`Value` den Wert 1. Er erscheint hervorgehoben. Erneutes Anklicken
setzt den Schalter zurck. Der Programmierer muss ber die CallbackRoutine (s. u.) dafr sorgen, dass die nicht ausgewhlten Schalter zurckgesetzt werden.

Check-Box

Der Schalter erzeugt bei Mausklick ein Ereignis. Schalter dieses Typs
werden vorrangig als Auswahlschalter fr Zustnde verwendet, die
gleichberechtigt sind. Der angeklickte Schalter hat in der Eigenschaft
`Value` den Wert 1. Er erscheint hervorgehoben. Erneutes Anklicken
setzt den Schalter zurck. Jedes Anklicken erzeugt ein Ereignis.

Editor-Feld

Instanzen dieses Typs stehen fr Texteingabefelder. Der eingegebene


Text steht in der Eigenschaft `String` . Ein Ereignis wird erzeugt, wenn
das Feld verlassen wird oder die Texteingabe mit <ENTER> abgeschlossen wird.

Schieber

Diese Elemente erlauben die grafische Eingabe eines reellen Wertes. Der
Schieber hat zwei Eigenschaften (`Max` und `Min`), die den Variationsbereich begrenzen. Durch Verschieben des Balkens zur Laufzeit wird der
aktuelle Wert aus der Position zwischen diesen Grenzen bestimmt. Ein
Ereignis wird erzeugt, wenn der Schiebebalken freigegeben wird.

3 - 30

Programmentwicklung

List-Box

Diese Elemente definieren Auswahllisten. Die Eintrge werden zur Laufzeit angezeigt; per Mausklick kann dann ein Eintrag bzw. knnen
mehrere Eintrge ausgewhlt werden. Die Eigenschaft `Value`enthlt den
Vektor der Indizes der ausgewhlten Eintrge. Nach jeder Auswahl wird
ein Ereignis erzeugt.

Rahmen

Elemente dieses Typs definieren Container fr weitere KomponentenInstanzen. Dadurch lassen sich Gruppen von Bedienelementen gut hervorheben, die in einem bestimmten Zusammenhang stehen. Diese Elemente erzeugen kein Ereignis.

Statischer
Text

Der Text, der in der Eigenschaft `String` enthalten ist, wird angezeigt,
ohne dass er verndert werden kann. Damit lassen sich die Elemente eines Formulars beschriften. Es wird kein Ereignis erzeugt.

Popup-Men

Es wird ein Auswahlfeld definiert, das mit einer Pickliste gekoppelt ist.
Die Pickliste lsst sich zur Laufzeit ber einen Schalter anzeigen. Die
Eigenschaft `Value`stellt den Index des ausgewhlten Elements der Pickliste bereit. Im Textfeld steht der ausgewhlte Eintrag. Jede Auswahl
erzeugt ein Ereignis.

Achsen

Instanzen dieses Typs definieren Felder fr grafische Darstellungen (z.B.


Diagramme). Diese Instanzen sind nicht im gleichen Sinne interaktiv, wie
die Schalter und Listen, da sie keine Ereignisse erzeugen. Ihre Eigenschaften knnen ebenfalls mit dem Eigenschaftsinspektor zur Entwicklungszeit verndert werden und auf sie kann zur Laufzeit Bezug genommen werden.

Die Eigenschaften einer Komponente bestimmen


S ihr Erscheinungsbild in der grafischen Oberflche und
S ihre Funktionalitt zur Laufzeit.
Die Eigenschaften knnen auf zwei Wegen mit Werten belegt werden:
S zur Entwicklungszeit ber den Eigenschaftsinspektor (s.o.),
S zur Laufzeit in den Callback-Routinen des Projektes (Abschnitte 3.5.3, 3.5.4).
ber die Eigenschaften und ihre mglichen Werte verschafft man sich am besten einen berblick durch Aktivierung des Eigenschaftseditors. Es gibt eine Reihe von Eigenschaften, die alle
Komponenten besitzen und die in der on-line-Hilfe unter dem Stichwort UIControl Properties
zu finden sind. Im folgenden sollen die wichtigsten unter diesen bergreifenden Eigenschaften
erlutert werden. Dabei wird zunchst der Name der Eigenschaft angegeben (unter diesem
Namen ist die Eigenschaft dann auch zur Laufzeit ber die Funktionen get und set zu
erreichen - s. hierzu Abschnitt 3.5.3). Es folgen die Angaben zur Darstellung bzw. zum Wertebereich; evt. Standardvorgaben stehen in geschweiften Klammern.
! BackgroundColor
kontinuierliche Farbeinstellung { grau }
Die Hintergrundfarbe der Instanz wird ber drei Schieber fr die Grundfarben einstellbar.

Programmentwicklung

3 - 31

! Callback
Zeichenkette
Name und Parameter der Funktion, die durch das Standardereignis der Instanz aktiviert werden
soll (s. Abschnitt 3.5.4).
! Enable {on} | inactive | off
Zur Bedeutung s. folgenden Punkt zur Steuerung der Ereignisbehandlung.
! FontName, FontSize, FontUnits, FontWeight
Diese Eigenschaften bestimmen die Darstellung des Textes innerhalb einer Instanz.
! ForegroundColor
kontinuierliche Farbeinstellung { schwarz }
Die Vordergrundfarbe der Instanz (Textfarbe) wird ber drei Schieber fr die Grundfarben
einstellbar.
! Max , Min
skalare, reelle Werte {1.0 , 0.0 }
Diese Eigenschaften bestimmen den grten bzw. den kleinsten Wert, den die Eigenschaft
Value annehmen kann.
! String
Zeichenkette oder Liste von Zeichenketten
Diese Eigenschaft enthlt die Beschriftung der Instanz, bzw. die Listen, wenn es sich um
Instanzen mit Auswahllisten handelt.
! Tag
Zeichenkette
Diese Zeichenkette enthlt den anwenderspezifischen Namen der Instanz. ber diesen Namen
kann auf die Instanz zur Laufzeit zugegriffen werden (s. Abschnitt 3.5.3)
! UserData
Matrix
In dieser Eigenschaft kann der Programmierer Daten speichern, die mit der Instanz assoziiert
sind und auf die die Instanz lokal zugreifen soll.
! Value
Skalar oder Vektor
Diese Eigenschaft reprsentiert den aktuellen Wert einer Instanz. Dabei behandeln die einzelnen
Komponenten diese Eigenschaft unterschiedlich. Instanzen des Typs Check-Box setzen Value
auf Max, wenn sie ausgewhlt wurden, sonst auf Min. Instanzen des Typs Schieber setzen
Value auf den Wert, der der Position des Schiebe-Balkens entspricht.
! Visible
{ on } | off
Wird diese Eigenschaft auf off gesetzt, ist die Instanz unsichtbar.
Steuerung der Ereignisbehandlung
Alle Komponenten, die Ereignisse auslsen knnen, besitzen die Eigenschaft Enable. ber den
Wert dieser Eigenschaft kann die Reaktion einer Instanz zur Laufzeit auf das auslsende
Ereignis modifiziert werden.
Wert von Enable

Reaktion

on

Die Instanz reagiert auf jedes Ereignis mit der Callback-Routine.

off

Die Instanz ist inaktiv und wird entsprechend dargestellt. Die


Callback-Routine wird nicht aufgerufen.

inactive

Die Instanz ist inaktiv, wird aber normal dargestellt. Die CallbackRoutine wird nicht aufgerufen.

Wenn die Instanz inaktiv ist, wird die Callback-Routine nicht aktiviert. Es werden aber, sofern
sie definiert sind, beim Anklicken der inaktiven Instanz mit der linken Maustaste zwei andere

3 - 32

Programmentwicklung

Funktionen aufgerufen:
! Zuerst wird die Funktion aktiviert, die fr das Formular unter der Eigenschaft
WindowButtonDownFcn definiert wurde.
! Als nchstes wird die Funktion aktiviert, die fr die Instanz unter der Eigenschaft ButtonDownFcn definiert wurde.
Sofern die Eigenschaft UIContextMenu fr eine Instanz belegt wird, kann mit der rechten
Maustaste ein PopUp-Men zur Laufzeit aktiviert werden. Das Men muss mit dem Meneditor
erzeugt werden.
Der Meneditor
Mit dem Meneditor knnen sowohl die Menpunkte und Untermens der Menleiste, die im
Formular erscheint, als auch die Popup-Mens, die sich den Instanzen zuordnen lassen, erzeugt
werden. Im folgenden Bild ist das Erscheinungsbild dieses Werkzeuges dargestellt. Aktiv ist die
Seite fr den Entwurf des Hauptmens.
Erzeugen eines neuen Menpunktes im Hauptmen
Erzeugen eines neuen Untermenpunktes
Erzeugen eines neuen Popup-Mens
Lschen des aktuellen Eintrags

Marke des Menpunktes

Programmentwicklung

3 - 33

Die Baumstruktur des Mens wird im linken Fenster dargestellt. Im rechten Teil des Fensters
werden die den aktuellen (angewhlten und damit hervorgehobenen) Menpunkt beschreibenden
Informationen bzw. Eingabefelder angezeigt.
ber die Schalter im Kopf des Fensters lsst sich die Menstruktur entwerfen. Die Untermens
werden dabei stets von dem aktuell markierten Menpunkt aus erzeugt.
Die Eingabe-Felder im rechten Teil des Fensters besitzen folgende Bedeutung:
Label:
Tag:
Separator ...

Item is ...
Callback

Der hier angegebene Text erscheint als Kennzeichen des Menpunktes.


Dieser Eintrag ist der formale Name des Menpunktes. ber diesen Namen kann
die zum Menpunkt gehrende Callback-Routine erreicht werden.
Oberhalb des Mentextes wird auf der Schaltflche eine Trennlinie erzeugt.
Damit kann man mehrere Menpunkte zu Gruppen optisch sichtbar zusammenfassen.
Der Menpunkt erhlt ein Hkchen.
ber dieses Feld wird angegeben, welche Aktion bei Anklicken des Menpunktes auszufhren ist. Zwei unterschiedliche Vorgehensweisen sind hierbei
mglich:
Der auszufhrende MATLAB-Programmcode wird direkt angegeben. Diese
Mglichkeit ist nur fr kurze Kommandos effektiv.
Die abzuarbeitende Callback-Routine wird spezifiziert. Diese Behandlungsform ist die in den meisten Fllen notwendige Form. Hierbei ist zu beachten,
dass der Editor in dem Textfile, das die Callback-Routinen enthlt (s. Abschnitt 3.5.4) diese Routine nicht automatisch generiert; diese muss der
Programmierer von Hand nachtragen.

Die folgenden Schritte sind notwendig, um die Menpunkte und die zugehrigen Untermens
zu definieren:
S
S

S
S

Der Meneditor ist zu aktivieren. Das Formular Menu Bar ist anzuwhlen. Soll ein Kontextmen erzeugt werden, so ist entsprechend das Formular Context Menus anzuwhlen.
Die Hauptmenpunkte sind mit dem ersten Schalter (New Menu) zu erzeugen. Die zugehrigen Informationen fr jeden Menpunkt sind im rechten Teil des Editorfensters
auszufllen.
Die Untermens sind mit dem zweiten Schalter ( New Menu Item ) zu generieren. Der
Untermenpunkt bezieht sich immer auf den Menpunkt, der gerade ausgewhlt erscheint.
Auch fr die Untermenpunkte sind die notwendigen Spezifikationen in den Eingabefeldern
vorzunehmen.
Soll ein Menpunkt gestrichen werden, so ist er zu markieren und der vierte Schalter (Delete
Selected Item) ist anzuklicken.
Der dritte Schalter wird nur fr Kontextmens ( New Context Menu ) wirksam.

3 - 34
3.5.3

Programmentwicklung
Die Bestandteile eines GUI-Projektes

In den vorangegangenen Abschnitten wurde die Entwicklung der grafischen Oberflche beschrieben. Im folgenden wird es darum gehen, wie die Behandlung der ber diese Oberflche
ausgelsten Ereignisse programmtechnisch realisiert werden kann. Dabei ist zu klren, wie auf
die Eigenschaften der Komponenteninstanzen zur Laufzeit zugegriffen werden kann und wie die
Callback-Routinen zu programmieren sind. Dafr ist es erforderlich, zunchst die Struktur eines
GUI-Projektes genauer zu beschreiben.
Die Projektdateien
Im folgenden wird davon ausgegangen, dass ein GUI-Projekt aus zwei Dateien besteht, die beide
den gleichen Namen, den Projektnamen besitzen, sich aber im Dateityp unterscheiden:
S In einer Datei wird die Beschreibung der grafischen Oberflche abgelegt. Dieses File hat die
Bezeichnung:
projektname.fig
S In einer MATLAB-Programmdatei (M-File) werden die Funktionen als Programmtexte
abgelegt, die den algorithmischen Teil des Projektes beschreiben. Hier finden sich als
wichtigste Bestandteile die Callback-Routinen. Die Datei hat die Bezeichnung:
projektname.m
In der Standardeinstellung des Entwicklungssystems werden diese beiden Dateien fr jedes
Projekt automatisch erzeugt. Dabei werden im M-File bestimmte Programmstrukturen generiert,
die gewhrleisten, dass das Projekt ber die Kommandozeile aktiviert werden kann und dass die
Ereignisbehandlung an das Laufzeitsystem angekoppelt wird. Mit der Aufnahme einer Komponenteninstanz in die grafische Oberflche erzeugt das Entwicklungssystem im zugehrigen MFile ebenfalls automatisch den Kopf einer Callback-Routine.
Aktivierung eines GUI-Projektes ber die Kommandozeile
Das GUI-Projekt wird wie eine Funktion ber die Kommandozeile aufgerufen. Dabei wird von
der beschriebenen Namenskonvention ausgegangen!
Der Standardkopf des M-File
Der vom Entwicklungssystem erzeugte Standardkopf des M-File hat den folgenden Aufbau:
function varargout = gui_project_name(varargin)
if nargin == 0 % Wenn keine Argumente auftreten, oeffne GUI-Projekt.
fig = openfig(mfilename,'reuse'); % Das FIG-FIle wird geoeffnet.
.
% Weitere Initialisierungskommandos koennen folgen
.
.
elseif ischar(varargin{1}) % If string argument, call subfunction
try
[varargout{1:nargout}] = feval(varargin{:});
catch
disp(lasterr);
end
end

Die Funktion gui_project_name hat den gleichen Namen wie das M-File und bezeichnet
somit das Projekt. Der nachfolgende Programmabschnitt realisiert die Unterscheidung zweier

Programmentwicklung

3 - 35

Flle (die Originaldokumentation spricht vom switchyard und vermerkt weiter : you should
not modify this code !):
S Wird die Funktion ohne Parameter aufgerufen (nargin == 0), so wird das Projekt initialisiert
(s. weiter unten). Fr die Projektinitialisierung erzeugt das Entwicklungssystem ebenfalls
eine Standard-Kommandofolge.
S Wird die Funktion mit Parametern aufgerufen, so muss der Funktionsname der erste Parameter sein. Der Funktionsaufruf wird durch die Interpreter-Funktion feval realisiert. Damit
kann die Funktion auch eine lokale Funktion im aktuellen M-File sein. Auf diesem Wege
aktiviert das Laufzeitsystem die Callback-Routinen, die im M-File als lokale Funktionen
verfgbar sind. Das setzt voraus, dass die Callback-Routinen in einer standardisierten Form
programmiert werden und als Eigenschaften den Komponenteninstanzen zugeordnet werden
(s. folgenden Abschnitt 3.5.4).
Die Initialisierung der Projektdatenstruktur
Durch den Standardkopf des M-File wird auch die Initialisierung des Zugriffs auf die Projektdaten vorgenommen. Die Projektdaten werden in einer Struktur bereitgestellt; der Programmierer hat ber diese Struktur Zugriff auf die Projektdaten, insbesondere auf die Eigenschaften aller
in der grafischen Oberflche enthaltenen Objektinstanzen. Die Initialisierung umfasst die
folgenden Kommandos (die in dieser Form automatisch in das M-File eingefgt werden):
S

ffnen des Figure-File fr die grafische Oberflche


fig = openfig(mfilename,'reuse');
Die Variable mfilename steht fr den Namen des M-File. In der Variablen fig steht nach
dem ffnen das Handle fr die grafische Oberflche des Projektes. Der Parameter 'reuse'
hat zur Folge, dass eine neue Instanz der Anwendung nur dann geffnet wird, wenn sie noch
nicht existiert; sonst wird das Grafikfenster lediglich in den Vordergrund geholt.
Erzeugen der Struktur, die die Eigenschaften der Instanzen enthlt:
handles = guihandles(fig);
Die Variable handles stellt den Zugriff auf die Instanzeigenschaften der grafischen
Oberflche her. Diese Struktur wird an die Callback-Routinen bergeben, so dass damit der
Zugriff auf die Eigenschaften und auch die Vernderung der Eigenschaften mglich ist. Der
Programmierer kann diese Struktur durch eigene Datenfelder ergnzen; damit knnen
zustzliche Daten zwischen den Callback-Routinen ausgetauscht werden.
Speichern der Daten im Speicherbereich der Anwendung
guidata(fig,handles);
Durch den Aufruf der Funktion werden die Instanzdaten im Datenbereich des GUI-Projektes
gespeichert. Damit wird gewhrleistet, dass die Callback-Routinen auf die Daten zugreifen
knnen. Nach Vernderungen an den Instanzdaten muss der Programmierer diese Funktion
aufrufen; nur so werden die Vernderungen auch an anderen Stellen der Anwendung wirksam (s.u.).

Zugriff auf die Datenstruktur; Vernderung der Daten


Im Verlauf der Anwendung muss auf die ber die Instanzeigenschaften bereitgestellten Daten
zugegriffen werden, bzw. die Eigenschaften mssen verndert werden. Das Lesen des Wertes
einer Eigenschaft, die zu einer Instanz gehrt, erfolgt mit dem folgenden Funktionsaufruf:
wert = get (handles.instanz,name_der_eigenschaft)

3 - 36

Programmentwicklung

Unter wert steht nach dem Aufruf der Wert der Eigenschaft bereit, deren Name im Parameter
name_der_eigenschaft angegeben wird und die zu der Komponenteninstanz gehrt,
deren Name im Datenfeld instanz der Struktur handles steht.
Das Schreiben eines Wertes in die Datenstruktur wird durch den folgenden Funktionsaufruf
bewirkt:
set ( handles.instanz,name_der_eigenschaft,wert )
Der Eigenschaft, deren Name durch die Zeichenkette name_der_eigenschaft gegeben
ist und die zur Komponenteninstanz gehrt, deren Name im Datenfeld instanz der Struktur
handles steht, wird der Wert zugewiesen, der im Parameter wert bergeben wird.
Es ist zu beachten, dass Vernderungen an den Daten des GUI-Projektes erst dann auch auerhalb der Funktion, in deren Gltigkeitsbereich die Vernderungen erfolgen, wirksam werden
( also fr den gesamten Gltigkeitsbereich, der durch das M-File gegeben ist ), wenn sie durch
den Aufruf der Funktion guidata(fig,handles)in den Datenbereich des GUI-Projektes
bernommen wurden.
Sollen Daten zwischen den Callback-Routinen ausgetauscht werden, die ber die durch die
Initialisierung verfgbaren Daten hinausgehen, so ist wie folgt zu verfahren:
S Es ist ein neues Datenfeld an die Strukturvariable anzuhngen. Dafr ist es ausreichend, dass
dieses Feld in einer Zuweisung eingefhrt wird.
S Dem Feld ist ein Wert zuzuweisen.
S Nach dem Aufruf von guidata(fig,handles)ist das Datenfeld in allen anderen
Routinen des M-File verfgbar.
<

Beispiel

Zustzlich zu den Instanzeigenschaften soll eine zentrale Fehlerberwachung fr alle Funktionen


des M-File verfgbar sein. Dafr wird ein einheitlicher Text und ein gemeinsamer Fehlerzhler
eingefhrt. Die beiden neuen Datenfelder errorString und numberOfErrors werden
unmittelbar nach der Initialisierung definiert und mit Werten belegt.
fig = openfig(mfilename,'reuse');
handles = guihandles(fig);
handles.errorString = 'Total number of errors: ';
handles.numberOfErrors = 0;
guidata(fig,handles);

3.5.4

Callback-Routinen

Die Callback-Routine definiert den Programmabschnitt, der beim Auftreten des Standardereignisses (in der Regel durch den Mausklick ausgelst) abgearbeitet werden soll. Die Zuordnung einer Funktion zu einer Komponenteninstanz als Callback-Routine wird dadurch
organisiert, dass der Name der Funktion unter der Eigenschaft Callback gefhrt wird. Mit dem
Eigenschaftsinspektor kann dieser Name eingesehen und gegebenenfalls auch verndert werden.
Die Callback-Routinen sind normale MATLAB-Funktionen, die durch eine besondere Technik
das Aufrufs gekennzeichnet sind. Sie werden zur Laufzeit nicht durch direkte Aufrufe der

Programmentwicklung

3 - 37

Anwendung aktiviert, sondern durch die ereignisgetriebenen, indirekten Aufrufe ber das
Laufzeitsystem. Da sie als lokale Funktionen in einem M-File nicht global verfgbar sind,
mssen sie ber den bereits im Abschnitt 3.5.3 beschriebenen Rangiermechanismus aufgerufen werden. Diese Form des Aufrufs hat zwei Besonderheiten:
S Alle Callback-Routinen werden vom Laufzeitsystem ber den Namen des Projektes aufgerufen, denn nur dieser Name ist auerhalb des M-File bekannt.
S Die Callback-Routinen haben einen definierten Parameterteil, der beim Aufruf der ersten
Funktion des M-File in den zweiten Zweig der bedingten Anweisung und damit zum indirekten Aufruf ber die Funktion feval fhrt (s. Abschnitt 3.5.3). Der erste Parameter ist der
Name der Callback-Funktion als Zeichenkette dargestellt. Ergnzend zur Beschreibung der
Funktion feval im Abschnitt 3.4.1 ist hierbei festzuhalten, dass der erste Parameter beim
Aufruf von feval nicht nur ein Funktions-Handle, sondern auch eine Zeichenkette sein
kann. Im letzteren Falle wird diese Zeichenkette als der Name der aufzurufenden Funktion
interpretiert. Da die Funktion im Gltigkeitsbereich des M-File definiert ist, kann sie auf
diesem Wege aufgerufen werden.
Standardnamen fr Callback-Routinen und fr die Callback-Eigenschaft
Wird eine Komponenteninstanz in den Arbeitsbereich des Entwicklungsfensters aufgenommen,
fr die die Eigenschaft Callback relevant ist, wird der Kopf der Callback-Routine automatisch
nach bestimmten Regeln erzeugt. Dieser Kopf besteht aus dem Namen und dem Parameterteil.
Der Programmierer kann dann den algorithmischen Teil ergnzen. Ebenfalls automatisch wird
der Eintrag fr die Eigenschaft Callback erzeugt. Dieser Eintrag muss den Aufruf der Funktion
zur Laufzeit beschreiben; darum sind dafr weitere Regeln magebend.
Fr die Festlegung des Namens der Callback-Routine gilt folgende Regel:
name_der_callback_routine = eigenschaft_tag_der_instanz+_Callback
Der Name wird also aus dem Namen der Instanz (der in der Eigenschaft Tag abgelegt ist) und
der angehangenen Zeichenkette _Callback gebildet.
Der Eintrag fr die Eigenschaft Callback wird wie folgt gebildet:
callback_eintrag = name_des_m_file(name_der_callback_routine,gcbo,[],guidata(gcbo))
Dieser Eintrag beschreibt den Aufruf der Callback-Routine nach der oben beschriebenen
indirekten Technik zur Laufzeit. Der erste Parameter ist der Name der Callback-Routine,
dargestellt als Zeichenkette. Der zweite Parameter ist ein Funktionsaufruf, der die Quelle des
auslsenden Ereignisses liefert. Der dritte, leere Parameter ist fr knftige Anwendungen
vorgesehen. Der vierte Parameter liefert den Zugriff auf die Projektdaten. Der in Klammer
stehende Abschnitt, der dem Namen der Routine folgt, lsst sich als die von der Funktion
feval auszuwertende Liste der aktuellen Eingangs-Parameter fr die Callback-Routine
interpretieren.
Die Standardform der formalen Eingabeparameter-Liste fr eine Callback-Routine
Die Eingabeparameter-Liste hat, entsprechend der fr die Callback-Eigenschaft bereits beschriebenen Aufrufstechnik die folgende (wiederum vom Entwicklungssystem automatisch
erzeugte) Standardform:

3 - 38

Programmentwicklung
name_der_callback_routine ( h, eventdata, handles, varargin)

Die Parameter haben dabei folgende Bedeutung:


h
Unter diesem aktuellen Parameter wird das Handle auf die das Ereignis auslsende
Instanz verfgbar.
eventdata Dieser Parameter hat zur Zeit keine Bedeutung.
handles ber diesen Parameter wird die Struktur mit den Projektdaten bergeben.
varargin Dieser Parameter steht fr eine Liste variabler Lnge, die nutzerspezifische Parameter bereitstellen kann. Wenn diese Liste zur Anwendung kommen soll, muss im
Eigenschaftseditor der Instanz auch die Eigenschaft Callback entsprechend ergnzt
werden! Denn den formalen Parametern mssen dann auch aktuelle Parameter
zugeordnet werden.
Besonderheiten fr die Callback-Routinen, die Menpunkten zugeordnet werden sollen
In der Regel sollen beim Anklicken von Menpunkten bestimmte Aktionen ausgefhrt werden,
die im Umfang den Einsatz einer eigenstndigen Callback-Routine notwendig machen. Dabei ist
aber zu beachten, dass fr die Menpunkte weder die Kpfe von Callback-Routinen im M-File
erzeugt werden, noch die automatische Generierung der Callback-Eigenschaft erfolgt. Der
Programmierer muss beide Festlegungen von Hand vornehmen. Dabei ist wie folgt zu verfahren:
S Der Name des Menpunktes, der im Meneditor im Feld Tag angezeigt wird, ist wie der
Name einer Komponenteninstanz zu interpretieren.
S Damit knnen fr einen Menpunkt der Kopf der Callback-Routine im M-File sowie die
Callback-Eigenschaft im Meneditor nach den oben beschriebenen Regeln gebildet und
eingetragen werden.
3.5.5

Zur Laufzeit erzeugte Komponenten

Prinzipiell sind alle bisher behandelten Komponenten durch entsprechende Funktionsaufrufe


auch dynamisch zur Laufzeit zu instantiieren. Daneben gibt es aber auch Komponenten, die
grundstzlich erst zur Laufzeit instantiiert werden knnen. Die wichtigsten Typen laufzeitaktiver
Komponenten werden im folgenden dargestellt. In der Regel handelt es sich dabei um Dialogkomponenten; nach Abschluss des Dialogs verschwinden die Instanzen wieder. Ausfhrliche
Informationen sind den Artikeln der on-line-Hilfe zu entnehmen, die ber die Funktionsnamen,
die zur Aktivierung der Komponenten fhren, abgerufen werden knnen.
! Messagebox
Dieser Komponententyp erzeugt ein Fenster mit einer Nachricht und einem OK-Button. Fr die
Fortsetzung des aufrufenden Programmabschnitts ist es notwendig, dass das Button angeklickt
wird. Die Gre der Box wird dem Umfang der Nachricht angepasst. Eine Messagebox wird
durch folgende Funktionsaufrufe erzeugt:
msgbox(message)

Es wird eine Nachricht in einer speziellen Box ausgegeben. Die Nachricht ist in der Variablen message bereitzustellen. Diese Variable kann ein Zeichenkettenvektor, eine Zeichenkettenmatrix oder ein zellulres Feld sein, das Zeichenketten in den Feldern enthlt. Im
letzteren Fall werden die Zeichenketten zeilenweise in die Messagebox geschrieben.

Programmentwicklung

3 - 39

msgbox(message,title)

Zustzlich zur vorherigen Form wird die unter title angegebene Zeichenkette als Boxtitel
ausgegeben.
msgbox(message,title,'icon')
Als weitere Ergnzung kann die Box durch ein spezielles Icon ergnzt werden. Dessen
Erscheinungsbild wird durch die Textkette ausgewhlt, die im Parameter 'icon' angegeben wird. Es gelten folgende Festlegungen:

<

'icon'

Bedeutung

'non'

Es wird kein Icon angezeigt.

'error'

Das Fehler-Icon wird eingeblendet.

'help'

Das Hilfe-Icon wird eingeblendet.

'warn'

Das Warnung-Icon wird eingeblendet.

'costum'

Es wird ein anwenderspezifisches Icon eingeblendet. Details


hierzu sind der on-line-Hilfe zu entnehmen.

Beispiel

message={'Fehler 25','Keine Daten !!'};


msgbox(message,'ABBRUCH','error');

! Input-Dialog
Es wird ein Dialogfeld erzeugt, das die Dateneingabe ermglicht. Im folgenden werden drei
Formen der Erzeugung eines Input-Dialogs behandelt; weitere Mglichkeiten sind der on-lineHilfe zu entnehmen.
answer = inputdlg(prompt)
Es wird eine Dialogbox erzeugt, die durch die Struktur des zellulren Feldes prompt
bestimmt wird. Die Elemente von prompt werden als Eingabeanforderungen angezeigt,
wobei fr jedes Element ein neuer Eingabebereich, der eine Zeile umfasst, erffnet wird. Die
Eingabe-Strings werden im zellulren Feld answer bergeben. Die Zellen korrespondieren
mit den Eingabebereichen.
answer = inputdlg(prompt,title)
Die Input-Dialogbox wird zustzlich mit einem Titel versehen, der als Zeichenkette in der
Variablen title bergeben wird.

3 - 40

Programmentwicklung

answer = inputdlg(prompt,title,lineNo)
Zustzlich wird ein Parameter lineNo eingefhrt, der es erlaubt, die Anzahl der Eingabezeilen fr die Eingabebereiche festzulegen. Es gelten folgende Regeln:
S Ist lineNo ein Skalar, so bezieht sich der Parameter auf alle Eingabebereiche.
S Ist lineNo ein Vektor, so werden seine Elemente als Zeilenzahlen den Eingabebereichen nacheinander zugeordnet.
S Ist lineNo eine Matrix (nur m x 2 - Matrizen sind sinnvoll, wobei m die Anzahl der
Eingabebereiche ist), so werden die Zeilen den Eingabebereichen nacheinander zugeordnet; in der ersten Spalte steht dabei die Anzahl der Zeilen im jeweiligen Eingabebereich und in der zweiten Spalte die Breite des Eingabebereichs.
<

Beispiel

Als Bestandteil eines MATLAB-Programms treten die folgenden Anweisungen auf:


answer=inputdlg({'E1:','E2:'},'Eingabebox',[2 10; 3 20]);
e1=str2num(answer{1})
e2=str2num(answer{2})

Nebenstehend ist die Input-Box zu sehen.


Die Ergebnisdarstellung hat dann die folgende Form:
e1 =
12.0000 14.0000 23.5000
e2 =
25.0000 28.0000 30.0000 38.6000

! Frage/Antwort-Dialog
Es wird ein Dialogfeld erzeugt, das auf eine definierte Frage mehrere Antworten zur Auswahl
anbietet. Die Antworten werden durch Buttons dargestellt. Das durch den Bediener angeklickte
Button wird zur Laufzeit als Antwort zurckgegeben. Folgende Formen des Aufrufs sind
mglich:
button = questdlg('qstring')
Es erscheint ein Dialogfeld, das den Fragetext 'qstring' und drei Standard-Buttons mit
den Bezeichnungen Yes , No und Cancel enthlt. Das Ergebnis button stellt den Wert
dar, der dem angeklickten Button entspricht. Standard-Button ist Yes.
button = questdlg('qstring','title')
Zustzlich wird die Zeichenkette 'title' als Titel im Fensterrahmen dargestellt.
button = questdlg('qstring','title','default')
Der Parameter 'default' gestattet es, das Standard-Button neu festzulegen. Als Zeichenketten sind 'Yes' ,' No' oder 'Cancel' zugelassen.
button = questdlg('qstring','title','str1','str2','default')
Es werden zwei Buttons definiert, die die Namen 'str1' und 'str2' besitzen. Das
Standard-Button muss im Parameter 'default' festgelegt werden. Als Ergebnis wird
dann eine der beiden Zeichenketten 'str1' bzw. 'str2' zurckgegeben.

Programmentwicklung

3 - 41

button = questdlg('qstring','title','str1','str2','str3','default')
Es werden drei Buttons erzeugt.
<

Beispiel

In einem MATLAB-Programm werde der folgende Funktions-Aufruf ausgefhrt:


button=questdlg('Fertig?','Wiederholungs-Abfrage','Ja','Nein','Abbruch','Nein')

Es erscheint der nebenstehend abgebildete Frage/Antwort-Dialog


Das Ergebnis nach Anklicken des Ja-Schalters:
button =
Ja

! Dialog zum ffnen einer Datei


Durch die im folgenden beschriebenen Funktionsaufrufe wird das Fenster fr die Auswahl einer
zu ffnenden Datei angezeigt. Folgende Formen des Aufrufs sind mglich:
[fname,pname] = uigetfile
Es wird der Auswahldialog angezeigt. In den Ergebnisparametern fname und pname
werden der Name der Datei und der Pfad als Zeichenketten bereitgestellt. Wenn der Dialog
abgebrochen wird, erhalten diese Parameter den Wert 0.
[fname,pname] = uigetfile('FilterSpec')
Ergnzend wird durch den Parameter 'FilterSpec' der Typ der anzuzeigenden Dateien
festgelegt.
[fname,pname] = uigetfile('FilterSpec','DialogTitle')
Zustzlich wird eine Titelzeile im Dialogfenster erzeugt.
[fname,pname] = uigetfile('FilterSpec','DialogTitle',x,y)
Die Werte der Parameter x und y geben die Abstnde der linken oberen Ecke des Dialogfensters von der linken oberen Ecke des Bildschirms an; damit lsst sich das Dialogfenster
bei seinem Erscheinen auf dem Bildschirm genau positionieren.
<

Beispiel

In einem MATLAB-Programm befindet sich der folgende Funktionsaufruf:


[str_file,str_path]=uigetfile('*.dat','ffnen des Daten-File')

3 - 42

Programmentwicklung

Das nebenstehende Dialogfenster erscheint. Die Datei Sprung.dat soll ausgewhlt werden. Die
Ergebnisparameter liefern
dann folgende Zeichenketten:
str_file =
Sprung.dat
str_path =
G:\matlabR12\work\

Mit diesen Angaben kann


nun die Datei geffnet werden.
! Dialog zum Speichern
einer Datei
Durch die im folgenden beschriebenen Funktionsaufrufe wird das Fenster fr das Speichern einer Datei angezeigt. Der entscheidende Unterschied
zum Dialog fr das ffnen besteht darin, dass der Dateiname und der Dateityp explizit in einem
Eingabefeld eingetragen werden knnen. Folgende Formen des Aufrufs sind mglich:
[fname,pname] = uiputfile
Es erscheint das Dialogfeld. Zur Bedeutung der Parameter s. uigetfile.
[fname,pname] = uiputfile('InitFile')
Der Parameter 'InitFile' erlaubt die Einstellung eines Start-Verzeichnisses. Auch eine
Vorzugs-Maske fr den Dateityp kann gesetzt werden.
[fname,pname] = uiputfile('InitFile','DialogTitle')
[fname,pname] = uiputfile('InitFile','DialogTitle',x,y)
S. Beschreibung der Aufrufe von uigetfile.
<

Beispiel
Es soll eine Datei mit der
Bezeichnung neue_daten.dat
angelegt werden. Nach dem
folgenden Funktionsaufruf
in einem MATLAB-Programm erscheint das nebenstehende Dialogfenster, das
im Feld Dateinamen keinen
Eintrag hat. In dieses Feld
wird der Dateiname eingetragen (s. Abbildung).

Programmentwicklung

3 - 43

[str_file,str_path]=uiputfile('*.dat','Schreiben eines Daten-File')

Es stellen sich die folgenden Ergebnisse ein:


str_file =
neue_daten
str_path =
G:\matlabR12\work\
Hinweis: Wird eine Datei im Dialogfenster ausgewhlt (die Datei existiert also bereits), so
wird in einem Dialogfenster darauf hingewiesen, dass in diesem Falle eine bereits
existierende Datei berschrieben werden knnte. Der Nutzer kann dann noch entscheiden, ob er die Operation fortsetzt oder abbricht.
! Druck-Dialog
Durch die folgenden Funktionsaufrufe wird ein Dialogfenster erzeugt, das den Druck des
aktuellen Grafikfensters ermglicht, bzw. die Druckereinstellung zu modifizieren gestattet:
printdlg
Es wird das Dialogfenster angezeigt, das den Druck des aktuellen Grafikfensters einleitet.
Der Nutzer kann den Druckvorgang einleiten oder die weitere Bearbeitung abbrechen.
printdlg(fig)
Es wird das Dialogfenster angezeigt, das den Druck des Grafikfensters einleitet, dessen
Handle durch fig gegeben ist.
printdlg('-setup',fig)
Es wird der Setup-Dialog fr den Drucker angezeigt.
! Seiten-Dialog
Durch die folgenden Funktionsaufrufe wird ein Dialogfenster aktiviert, ber das die Parameter
der zu druckenden Seite eingestellt werden knnen:
pagedlg
Das nebenstehende Dialogfenster
wird angezeigt; die Einstellungen knnen gewhlt werden.
pagedlg(fig)
Die Einstellungen beziehen sich
auf die Seitengestaltung fr den
Druck der Grafik, deren Handle
in fig bereitgestellt wird.

3 - 44
3.5.6

Programmentwicklung
Ein Beispiel

! Problemstellung
Die Parametrierung eines Reglers kann u.a. nach den heuristischen Regeln nach CHIEN , HRONES
und RESWICK erfolgen.
Diese Regeln gehen
von der experimentell
ermittelten Sprungantwort der Regelstrecke
aus. Es werde also angenommen, die Streckenverstrkung Ks,
die Ausgleichszeit Tg
und die Verzugszeit Tu
seien durch Konstruktion der Wendetangente
ermittelt worden (s.
nebenstehendes Bild).
Dann kann man nach
den Einstellregeln die
Reglerparameter finden. Es existieren verschiedene Regelstze,
die zum einen bercksichtigen, ob das Fhrungs- oder das Strverhalten von Interesse sind und die zum anderen
bercksichtigen, ob ein berschwingen der Antwortfunktionen zugelassen ist oder nicht. Die
Regeln fr die unterschiedlichen Ausgangssituationen lassen sich wie folgt beschreiben:
Einstellregeln fr gnstiges Strverhalten / Aperiodische Strsprungantwort
Reglertyp

Reglerparameter
KR

Tn

Tv

P-Regler

PI-Regler
PID-Regler

Einstellregeln fr gnstiges Strverhalten / ca. 20 % berschwingen bei Strsprung

Programmentwicklung

3 - 45

Reglertyp

Reglerparameter
KR

Tn

Tv

P-Regler

PI-Regler
PID-Regler

Einstellregeln fr gnstiges Fhrungsverhalten / Aperiodische Fhrungssprungantwort


Reglertyp

Reglerparameter
KR

Tn

Tv

P-Regler

PI-Regler
PID-Regler

Einstellregeln fr gnstiges Fhrungsverhalten / ca. 20% berschwingen bei Fhrungssprung


Reglertyp

Reglerparameter
KR

Tn

Tv

P-Regler

PI-Regler
-

3 - 46

Programmentwicklung

PID-Regler

! Entwurf der Oberflche


Die Oberflche sollte in einfacher Weise die Entscheidungen ber die Wahl des zutreffenden
Regelsatzes untersttzen. Dafr sind als Elemente Radio-Buttons gut geeignet. Fr die Eingabe
der Streckenparameter sind Edit-Elemente vorzusehen. Die Bedienoberflche nimmt dann die
folgende Gestalt an:

! Callback-Routinen
Alle Callback-Routinen sind Bestandteil des M-Files, das mit der Funktion beginnt, die die
Anwendung aktiviert. Diese Funktion besitzt die Standardform (s. Abschnitt 3.5.3.) und beginnt
entsprechend mit der folgenden Kopfzeile:
function varargout = regler_einstellung(varargin)
Fr den wechselseitigen Ausschluss der Radio-Buttons ist es notwendig, dass in den Callback-

Programmentwicklung

3 - 47

Routinen jeweils die zur Gruppe gehrenden Elemente, die nicht aktiv sind, zurckgesetzt
werden. Fr das Rcksetzen wurde das Unterprogramm mutual_exclude eingefhrt. Es
ergeben sich damit die folgenden Callback-Routinen:
%--------------------------------------------------------------------function mutual_exclude(off)
%Funktion zur Steuerung des wechselseitigen Ausschlusses der radiobuttons.
set(off,'Value',0);
% -------------------------------------------------------------------function varargout = radiobutton1_Callback(h, eventdata, handles, varargin)
% P-Regler
off=[handles.radiobutton2,handles.radiobutton3];
mutual_exclude(off);
% -------------------------------------------------------------------function varargout = radiobutton2_Callback(h, eventdata, handles, varargin)
% PI - Regler
off=[handles.radiobutton1,handles.radiobutton3];
mutual_exclude(off);
% -------------------------------------------------------------------function varargout = radiobutton3_Callback(h, eventdata, handles, varargin)
% PID - Regler
off=[handles.radiobutton1,handles.radiobutton2];
mutual_exclude(off);
% -------------------------------------------------------------------function varargout = radiobutton4_Callback(h, eventdata, handles, varargin)
% Fhrungsverhalten
off=[handles.radiobutton5];
mutual_exclude(off);
% -------------------------------------------------------------------function varargout = radiobutton5_Callback(h, eventdata, handles, varargin)
% Strverhalten
off=[handles.radiobutton4];
mutual_exclude(off);
% -------------------------------------------------------------------function varargout = radiobutton6_Callback(h, eventdata, handles, varargin)
% Antwortfunktion mit berschwingen
off=[handles.radiobutton7];
mutual_exclude(off);
% -------------------------------------------------------------------function varargout = radiobutton7_Callback(h, eventdata, handles, varargin)
% Aperiodische Antwortfunktion
off=[handles.radiobutton6];
mutual_exclude(off);

Die Callback-Routinen fr die Edit-Elemente werden nicht genutzt; sie sind entsprechend leer.
Die Callback-Routine fr das Push-Button im Eingabefeld stellt die zentrale Funktion der
Anwendung dar. Mit Klick auf das Button werden folgende Teilfunktionen ausgelst:
1. Konvertierung der Eingabedaten (mit Test auf Vollstndigkeit der Daten)
2. Ausfhrung der Berechnungen gem den Schalterpositionen.
3. Konvertierung und Ausgabe der Resultate.

3 - 48

Programmentwicklung

% -------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)


% Konvertierung der Eingabedaten / berwachung der Vollstndigkeit.
Ks=str2num(get(handles.edit6,'String'));
if isempty(Ks)
msgbox({'Ks fehlt!', 'Wiederholung'},'Eingabefehler','error');
return;
end
Tu=str2num(get(handles.edit4,'String'));
if isempty(Tu)
msgbox({'Tu fehlt!', 'Wiederholung'},'Eingabefehler','error');
return;
end
Tg=str2num(get(handles.edit5,'String'));
if isempty(Tg)
msgbox({'Tg fehlt!', 'Wiederholung'},'Eingabefehler','error');
return;
end
% Berechnung der Reglerparameter
if get(handles.radiobutton1,'Value')>0
% P-Regler
set(handles.edit2,'String','');
set(handles.edit3,'String','');
if get(handles.radiobutton4,'Value')>0
% Fhrungsverhalten
if get(handles.radiobutton6,'Value')>0
% Mit berschwingen
Kr=0.7*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
else
%Ohne berschwingen
Kr=0.3*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
end
else
%Strverhalten
if get(handles.radiobutton6,'Value')>0
% Mit berschwingen
Kr=0.7*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
else
%Ohne berschwingen
Kr=0.3*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
end
end
elseif get(handles.radiobutton2,'Value')>0
%PI - Regler
set(handles.edit3,'String','');
if get(handles.radiobutton4,'Value')>0
% Fhrungsverhalten
if get(handles.radiobutton6,'Value')>0
% Mit berschwingen
Kr=0.6*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
Tn=Tg; set(handles.edit2,'String',num2str(Tn));
else
%Ohne berschwingen
Kr=0.35*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
Tn=1.2*Tg; set(handles.edit2,'String',num2str(Tn));
end
else
%Strverhalten
if get(handles.radiobutton6,'Value')>0
% Mit berschwingen

Programmentwicklung

3 - 49

Kr=0.7*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
Tn=2.3*Tu; set(handles.edit2,'String',num2str(Tn));
else
%Ohne berschwingen
Kr=0.6*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
Tn=4*Tu; set(handles.edit2,'String',num2str(Tn));
end
end
elseif get(handles.radiobutton3,'Value')>0
% PID - Regler
if get(handles.radiobutton4,'Value')>0
% Fhrungsverhalten
if get(handles.radiobutton6,'Value')>0
% Mit berschwingen
Kr=0.95*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
Tn=1.35*Tg; set(handles.edit2,'String',num2str(Tn));
Tv=0.47*Tu; set(handles.edit3,'String',num2str(Tv));
else
%Ohne berschwingen
Kr=0.6*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
Tn=Tg; set(handles.edit2,'String',num2str(Tn));
Tv=0.5*Tu; set(handles.edit3,'String',num2str(Tv));
end
else
%Strverhalten
if get(handles.radiobutton6,'Value')>0
% Mit berschwingen
Kr=1.2*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
Tn=2.0*Tu; set(handles.edit2,'String',num2str(Tn));
Tv=0.42*Tu; set(handles.edit3,'String',num2str(Tv));
else
%Ohne berschwingen
Kr=0.95*Tg/Tu/Ks; set(handles.edit1,'String',num2str(Kr));
Tn=2.4*Tu; set(handles.edit2,'String',num2str(Tn));
Tv=0.42*Tu; set(handles.edit3,'String',num2str(Tv));
end
end
end

Wenn einer der Eingabeparameter fehlt, erscheint ein Mitteilungsfenster, das einen Hinweis auf
den fehlenden Parameter enthlt. Mit der Funktion isempty kann getestet werden, ob die
jeweilige Eingabevariable leer ist oder nicht.

Symbolisches Rechnen
4.
4.1.

4-1

Symbolisches Rechnen mit MATLAB1


Definition von symbolischen Variablen

Die Symbolic Math Toolbox von MATLAB erlaubt die Ausfhrung mathematischer Operationen, wie Differentiation oder Integration in symbolischer Form. Die dafr notwendigen Operanden mssen vorher als symbolische Operanden vereinbart werden, um sie von normalen (numerischen) Variablen unterscheiden zu knnen. Weiterhin ist es notwendig, Ausdrcke definieren
zu knnen, die als symbolische Verknpfungen von Konstanten und/oder Variablen interpretiert
werden. Es bestehen die folgenden Mglichkeiten:

Der sym - Befehl


Bei allen Formen des sym - Befehls kann auf der linken Seite der Name einer symbolischen Variablen stehen. Wurde diese nicht bereits an anderer Stelle deklariert, so wird
sie durch den betreffenden sym - Befehl als symbolische Variable eingefhrt.

symbolische_variable = sym (zeichenkette)


Die symbolische Variable, die auf der linken Seite steht, erhlt den symbolischen
Ausdruck, der jetzt als Zeichenkette kodiert wird, zugewiesen. In dieser Zeichenkette
knnen auch Symbole auftreten, die nicht als symbolische Variable definiert wurden.
Diese werden dann wie symbolische Konstanten behandelt. Bei der spteren Verarbeitung solcher Ausdrcke knnen Fehler auftreten, wenn auf diese Konstanten in Zusammenhngen zugegriffen wird, die nur fr Variable zulssig sind (z.B. Differentiation). ber den sym-Befehl lsst sich eine symbolische Konstante wie folgt in eine
Variable konvertieren:
symbolische_variable = sym (name_der_konstanten)
Dabei wird der Name der Variablen so wie der Name der Konstanten gewhlt, d.h. der
Name der Variablen stimmt mit dem Inhalt der Zeichenkette berein.

symbolische_variable = sym (symbolischer_ausdruck)


Die symbolische Variable, die auf der linken Seite steht, erhlt den symbolischen
Ausdruck zugewiesen. Die Variable auf der linken Seite ist damit als symbolische
Variable definiert. Der symbolische Ausdruck darf nur symbolische Variable und
Konstanten enthalten.

symbolische_variable = sym (MATLAB_ausdruck , flag)


Der MATLAB-Ausdruck wird berechnet und anschlieend in eine seinem Typ entsprechende symbolische Form konvertiert. Das Format der Darstellung wird durch den
Parameter flag bestimmt:

Neben dem Originalhandbuch zur Symbolic Math Toolbox kann zu diesem Abschnitt
folgendes Buch empfohlen werden:
PALM ; W., J. Introduction to MATLAB 6 for Engineers,
McGraw-Hill, Boston, 2001. Hierzu: Kapitel 9, S. 507 ff.

4-2

Symbolisches Rechnen
flag

<
%
%
%
%

Bedeutung

Die Daten werden in eine rationale Darstellung konvertiert.

Es wird eine dezimale Darstellung erzeugt. Die Lnge der Dezimalzahl wird durch die vpa-Funktion
festgelegt.

Es wird eine Gleitkommadarstellung erzeugt, wobei


der exponentielle Anteil mit der Basis 2 dargestellt
wird

Beispiele
Die Variable x wird als symbolische Variable eingefhrt und
sie erhlt einen symbolischen Ausdruck zugewiesen, auf den
ber x zugegriffen werden kann.
Achtung: a und b sind symbolische Konstanten!

>> x=sym('a+b*b+3');
>> x*x
ans =
(a+b^2+3)^2
%
%
%
%

Im folgenden Beispiel wird die symbolische Variable y


eingefhrt; ihr wird die symbolische Konstante 1/2
zugewiesen. Die Konstante wird aus dem numerischen Wert
erzeugt.

>> c=0.5;
>> y=sym(c,'r')
y =
1/2
% Im folgenden Beispiel wird die symbolische Variable z
% eingefhrt. Sie erhlt die Summe x+y zugewiesen.
>> z=sym(x+y)
z =
a+b^2+7/2
%
%
%
%
%

Mit dem sym-Befehl lassen sich nicht nur symbolische


skalare Variable, sondern auch symbolische Vektoren und
Matrizen definieren. Die folgenden Befehle liefern als
Beispiel die symbolische Berechnung der Inversen einer Matrix.
a ist wieder eine symbolische Konstante.

>> A=sym('[ a 2*a 3*a; 4*a 5*a 6*a; a 2*a 4*a]')

Symbolisches Rechnen

4-3

A =
[
a, 2*a, 3*a]
[ 4*a, 5*a, 6*a]
[
a, 2*a, 4*a]
>> inv(A)
ans =
[ -8/3/a, 2/3/a,
[ 10/3/a, -1/3/a,
[
-1/a,
0,

1/a]
-2/a]
1/a]

>> ans*A
ans =
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]

Die syms - Deklaration


Soll eine Reihe symbolischer Variablen deklariert werden ohne dass diesen gleichzeitig
Ausdrcke zuzuweisen sind, so ist die folgende Deklaration dem sym-Befehl vorzuziehen:

syms symbolische_variable symbolische_variable ...


Dem Schlsselwort syms folgt die Liste der Namen, die die symbolischen Variablen
bezeichnen. Das Trennzeichen in dieser Liste ist das Leerzeichen.

syms symbolische_variable symbolische_variable ... typspezifikation


typspezifikation 6 real | unreal
Dem Schlsselwort syms folgt die Liste der Namen, die die symbolischen Variablen
bezeichnen. Das Trennzeichen in dieser Liste ist das Leerzeichen. Soll fr sptere
Operationen angenommen werden, dass die Variablen reell sind, so ist das durch die
Typspezifikation anzugeben. Als Standard gilt unreal.
<

Beispiel

% Im folgenden Beispiel wird die symbolische Multiplikation


% zweier Matrizen ausgefhrt.
>> syms X Y Z a b c
>> X=[a b c; 2*a 3*b 4*c]
X =
[
a,
b,
c]
[ 2*a, 3*b, 4*c]
>> Y=[a b; c a ; a c]

4-4
Y
[
[
[

Symbolisches Rechnen

=
a, b]
c, a]
a, c]

>> Z=X*Y
Z =
[
a^2+b*c+c*a,
[ 2*a^2+3*b*c+4*c*a,

4.2.
4.2.1

2*a*b+c^2]
5*a*b+4*c^2]

Symbolische Ausdrcke
Bildung symbolischer Ausdrcke

Symbolische Ausdrcke entstehen durch die Verknpfung symbolischer Variablen sowie


Konstanten durch die Operatoren + , - , * , / und ^. Es knnen ebenfalls die in MATLAB
definierten Standardfunktionen verwendet werden. Die syntaktischen Regeln sind konform zu
denen arithmetischer Ausdrcke in MATLAB.
Wird ein symbolischer Ausdruck einer Variablen zugewiesen, so wird diese implizit als symbolische Variable deklariert.
<

Beispiele

% Im Folgenden wird die komplexe Gre a eingefhrt.


>> syms X a b c real
>> a=b+i*c
a =
b+i*c
% Die konjugiert komplexe Gre und der Betrag lassen sich
% wie folgt bestimmen.
>> ca=conj(a)
ca =
b-i*c
>> abs_a=sqrt(a*ca)
abs_a =
((b+i*c)*(b-i*c))^(1/2)
%
%
%
%

Die Variablen ca und abs_a wurden implizit als symbolische


Variable eingefhrt.
Die Darstellung des Betrages lsst sich weiter vereinfachen.
Dafr muss die Funktion simple herangezogen werden.

>> abs_a=simple(sqrt(a*ca))
abs_a =
(b^2+c^2)^(1/2)
% Das gleiche Ergebnis erhlt man mit der Standardfunktion abs:

Symbolisches Rechnen

4-5

>> abs_a=abs(a)
abs_a =
(b^2+c^2)^(1/2)
% Eine Matrix, die unterschiedliche Potenzen von a enthlt,
% wird durch folgenden Ausdruck definiert:
>> X=a.^((0:2)'*(0:2))
X =
[
[
[

1,
1,
1]
1,
b+i*c, (b+i*c)^2]
1, (b+i*c)^2, (b+i*c)^4]

% Die Betrge der Elemente dieser Matrix erhlt man wie folgt:
>> abs(X)
ans =
[
1,
1,
1]
[
1, (b^2+c^2)^(1/2),
b^2+c^2]
[
1,
b^2+c^2,
(b^2+c^2)^2]

4.2.2

Umformung symbolischer Ausdrcke

Die Variablen-Konvention

Im Zusammenhang mit den Umformungsfunktionen taucht das Problem auf, eine symbolische
Variable als unabhngige Variable innerhalb eines Ausdrucks zu deklarieren. Dafr gilt folgende
Regel:
Wenn keine explizite Deklaration der unabhngigen Variablen erfolgt,
so wird die Variable mit dem Namen x als unabhngige Variable
angenommen. Wenn es keine Variable mit diesem Namen gibt, wird
die Variable angenommen die im Alphabet x am nchsten steht.

Diese Regel gilt auch im Folgenden, wenn in anderen Zusammenhngen eine unabhngige
Variable festgelegt werden muss (z.B. bei der Differentiation oder der Integration).

Ordnen nach Potenzen einer Variablen

collect( S )
Der symbolische Ausdruck S wird nach Potenzen der Variablen sortiert. Welche symbolische Variable fr den Sortiervorgang ausgewhlt wird, wird nach der oben angegebenen Regel entschieden.

collect( S , v)
Der symbolische Ausdruck S wird nach Potenzen der Variablen v sortiert.

4-6
<

Symbolisches Rechnen
Beispiele

>> syms a b x
>> a=(b+x)^3+x^2+4
a =
(b+x)^3+x^2+4
% Der folgende Aufruf von collect sortiert den Ausdruck a
% nach Potenzen von x (implizite Annahme der Variablen)
>> collect(a)
ans =
x^3+(3*b+1)*x^2+3*b^2*x+b^3+4
% Der folgende Aufruf sortiert den Ausdruck a nach Potenzen
% von b (explizite Deklaration der Variablen)
>> collect(a,b)
ans =
b^3+3*b^2*x+3*x^2*b+x^3+4+x^2

Zerlegung in Faktoren / Ausklammern

factor ( S )
Diese Funktion zerlegt den Ausdruck S in Faktoren durch Ausklammern gemeinsamer
Bestandteile von Teilausdrcken.

<

Beispiel

% Das folgende Beispiel zeigt, dass als Argumente der Funktionen


% auch Vektoren und/oder Matrizen auftreten knnen.
>> syms a b x X
>> X=[x^3+b^3 x^2-b^2]
X =
[ x^3+b^3, x^2-b^2]
>> factor(X)
ans =
[ (b+x)*(x^2-x*b+b^2),
(x-b)*(b+x)]

Auflsen von Klammerausdrcken

expand ( S )
Alle in S enthaltenen Klammerausdrcke werden aufgelst; der Ausdruck S expandiert.
<

Beispiel

% Im folgenden Beispiel werden alle Klammerausdrcke aufgelst


>> syms a b c x
>> a=(x+3)^3*(x+c)
a =
(x+3)^3*(x+c)

Symbolisches Rechnen

4-7

>> expand(a)
ans =
x^4+x^3*c+9*x^3+9*x^2*c+27*x^2+27*x*c+27*x+27*c

Vereinfachung eines Ausdrucks

simplify ( S )
Der symbolische Ausdruck S wird nach gewissen algebraischen Regeln, die auch im
Mathematik-Paket MAPLE zur Anwendung kommen, vereinfacht.

simple ( S )
Es wird versucht, einen Ausdruck zu erzeugen, der krzer als der ursprngliche Ausdruck S ist. Die Zwischenschritte der Umformung werden angezeigt, wenn simple allein
aufgerufen wird. Wird das Ergebnis der Funktionsauswertung einer Variablen zugewiesen, werden die Zwischenergebnisse nicht angezeigt.
<

Beispiele

% Im folgenden Beispiel liefern beide Funktionen zur


% Vereinfachung das gleiche Resultat
>> syms a b c x
>> a=cos(x)^2+sin(x)^2
a =
cos(x)^2+sin(x)^2
>> simplify(a)
ans =
1
% Die Zwischenschritte, die nach dem Aufruf von simple angezeigt
% werden, wurden im Folgenden weggelassen.
>> simple(a);
............
ans =
1
% Im nachfolgenden Beispiel fallen die Ergebnisse leicht
% unterschiedlich aus. Zwischenergebnisse von simple
% werden angegeben. Die Endergebnisse werden fett hervorgehoben.
>> a=(sin(x)+cos(x))^2
a =
(sin(x)+cos(x))^2
>> simple(a)
simplify:
2*sin(x)*cos(x)+1
radsimp:
(sin(x)+cos(x))^2
combine(trig):
1+sin(2*x)

4-8

Symbolisches Rechnen

factor:
(sin(x)+cos(x))^2
expand:
sin(x)^2+2*sin(x)*cos(x)+cos(x)^2
combine:
1+sin(2*x)
convert(exp):
(-1/2*i*(exp(i*x)-1/exp(i*x))+1/2*exp(i*x)+1/2/exp(i*x))^2
convert(sincos):
(sin(x)+cos(x))^2
convert(tan):
(2*tan(1/2*x)/(1+tan(1/2*x)^2)+(1-tan(1/2*x)^2)/(1+tan(1/2*x)^2))^2

collect(x):
(sin(x)+cos(x))^2
ans =
1+sin(2*x)
>> simplify(a)
ans =
2*sin(x)*cos(x)+1

Zerlegung eines Ausdrucks in Zhler- und Nennerausdruck

[num , den] = numden (S)


Diese Funktion ist nur sinnvoll anzuwenden, wenn der Ausdruck S eine rationale Funktion darstellt. Im Ergebnisparameter num wird der Zhlerausdruck und im Ergebnisparameter den der Nennerausdruck bergeben.

<

Beispiel

>> syms a b c x
>>
>> a=(x+5)^3
a =
(x+5)^3
>> b=x+c
b =
x+c
% Es folgt die Anwendung der Funktion numden auf einen Ausdruck,
% der sich aus den Teilausdrcken a und b zusammensetzt.
>> [z,n]=numden(a+a/(a+b))
z =
(x+5)^3*(x^3+15*x^2+76*x+126+c)
n =
x^3+15*x^2+76*x+125+c

Symbolisches Rechnen

4-9

Symbolische Operationen mit Polynomen

poly2sym ( p )
Es wird ein Polynom als symbolischer Ausdruck in der symbolischen Variablen x
erzeugt, dessen Koeffizienten im Vektor p in numerischer Form vorgegeben werden.

poly2sym ( p , v )
Es wird ein Polynom als symbolischer Ausdruck in der symbolischen Variablen v
erzeugt, dessen Koeffizienten im Vektor p in numerischer Form vorgegeben werden.

p = sym2poly ( S )
Der symbolische Ausdruck S wird als Polynom interpretiert. Im Vektor p werden die
Polynomkoeffizienten in numerischer Form bereitgestellt.
i
Hinweis
Wie in MATLAB allgemein blich, werden in den Koeffizientenvektoren fr Polynome
die Koeffizienten so geordnet, dass die Komponente mit dem niedrigsten Index den
Koeffizienten vor der hchsten Potenz der Polynomvariablen darstellt und die mit dem
hchsten Index den Koeffizienten vor der 0-ten Potenz.
<

Beispiele

% Es folgen zwei Beispiele fr die Erzeugung symbolischer


% Polynome
>> syms x y
>> poly2sym([25 2 25 3])
ans =
25*x^3+2*x^2+25*x+3
>> poly2sym([25 2 25 3],y)
ans =
25*y^3+2*y^2+25*y+3
% Es folgt ein Beispiel fr die Rckkonvertierung des % Koeffi% zientenvektors aus der symbolischen in die numerische Form.
>> p=sym2poly(3*y^3+6*y^2+y+24)
p =
3
6
1
24

Substitutionsoperationen

pretty ( S )
Der symbolische Ausdruck S wird in eine der mathematischen Notation hnliche Form
transformiert und angezeigt.

subs ( S )
Alle im symbolischen Ausdruck S enthaltenen symbolischen Konstanten werden durch
numerische Werte ersetzt, wenn unter den Namen der symbolischen Konstanten numerische Variable im aktuellen Workspace existieren.

4 - 10

Symbolisches Rechnen

subs ( S , s_alt , s_neu )


Der Teilausdruck s_alt wird im symbolischen Ausdruck S durch den Teilausdruck s_neu
ersetzt. Jedes Auftreten von s_alt in S wird bei der Substitution durch s_neu bercksichtigt. Die Parameter S, s_alt und s_neu knnen durch symbolische Ausdrcke oder
durch Zeichenketten gegeben sein.

<

Beispiele

% Es folgt ein Beispiel zur Anwendung der pretty-Funktion


>> syms x y t
>> x=sin(5*t)^2+exp(-0.3*t)*cos(3*pi*t)
x =
sin(5*t)^2+exp(-3/10*t)*cos(3*pi*t)
>> pretty(x)
2
sin(5 t) + exp(- 3/10 t) cos(3 pi t)
>> y=sqrt(x);
>> pretty(y)
2
1/2
(sin(5 t) + exp(- 3/10 t) cos(3 pi t))
% Im folgenden Beispiel wird die Variable t durch einen neuen
% Teilausdruck ersetzt, der als Zeichenkette gegeben ist .
y =
(sin(5*t)^2+exp(-3/10*t)*cos(3*pi*t))^(1/2)
>> subs(y,t,'(x+pi/5)')
ans =
(sin(5*x)^2+exp(-3/10*x-3/50*pi)*cos(3*pi*(x+1/5*pi)))^(1/2)
% Im folgenden Beispiel wird zunchst die gleiche Wirkung
% erreicht, obwohl der neue Teilausdruck als symbolischer
% Ausdruck gegeben ist.
>> y=sin(5*t)^2+exp(-0.3*t)*cos(3*pi*t)
y =
sin(5*t)^2+exp(-3/10*t)*cos(3*pi*t))^(1/2)
>> subs(y,t,x+pi/5)
ans =
(sin(5*x)^2+exp(-3/10*x-3/50*pi)*cos(3*pi*(x+1/5*pi)))^(1/2)
% Im folgenden Fall fhrt die Substitution zu einen anderen
% Ergebnis, da die Variable vorher durch einen Ausdruck
% belegt wurde.
>> x=pi/2
x =
1.5708
>> subs(y,t,x+pi/5)
ans =
0.9189
% Im folgenden Beispiel werden symbolische Konstanten
% durch numerische Variablen des Workspace belegt.

Symbolisches Rechnen

4 - 11

% Zunchst wird die symbolische Matrix X eingefhrt. Diese


% enthlt die symbolische Konstante a.
>> syms X
>> X=sym('[a 2*a ; 4*a^2 5*a^2 ]')
X =
[
a,
2*a]
[ 4*a^2, 5*a^2]
% Die Variable a wird als numerische MATLAB-Variable definiert.
>> a=3
a =
3
% Der folgende Substitutionsbefehl ersetzt die symbolische
% Konstante durch den momentanen Wert der MATLAB-Variablen.
>> subs(X)
ans =
3
6
36
45

4.2.3. Berechnung und grafische Darstellung von Ausdrcken

Bestimmung des Wertes eines symbolischen Ausdrucks, der aus symbolischen Konstanten besteht

double ( N )
Der symbolische Ausdruck N beschreibe die arithmetische Verknpfung numerischer
Konstanten. Durch die Funktion double wird der Wert des Ausdrucks berechnet und in
einer reellen Zahlendarstellung bereitgestellt.

<

Beispiel

% Die Variable wert wird mit einem Ausdruck belegt, der in


% symbolischer Form nur Konstanten enthlt.
>> wert=sym('sqrt(3*pi/2)+sin(0.6*pi)')
wert =
sqrt(3*pi/2)+sin(0.6*pi)
% Mit wert wird zunchst noch eine Operation in der symbolischen
% Ebene ausgefhrt.
>> wert=wert*2
wert =
6^(1/2)*pi^(1/2)+2*sin(.6*pi)
% Der numerische Wert des Ausdrucks wird ber double bestimmt
>> double(wert)
ans =
6.2437

4 - 12

Symbolisches Rechnen
Bestimmung des Wertes eines symbolischen Ausdrucks ber die Substitution der
Variablen durch numerische Konstanten

subs ( S , v , w )
Der Aufruf der Substitutionsfunktion in dieser Form hat zwei Schritte zur Folge:
S
Die Variable v im Ausdruck S wird durch den Wert des numerischen Ausdrucks
w ersetzt.
S
Der Wert des so entstehenden Ausdrucks wird berechnet.
Der Ausdruck w muss keine Konstante, sondern kann auch ein MATLAB-Ausdruck
sein.

<

Beispiel

% Im folgende Beispiel wird zunchst ein symbolischer Ausdruck


% definiert.
>> syms x y
>> y=2*exp(-0.1*x)/sin(x)^2
y =
2*exp(-1/10*x)/sin(x)^2
% Der Wert des Ausdrucks soll fr den Wertebereich 1 .. 6
% bestimmt werden. Dafr kann die implizite MATLAB-Schleife
% genutzt werden.
>> subs(y,x,(1:6))
ans =
2.5558
1.9804
74.3985
2.3407
1.3192
14.0589

Grafische Darstellung einer symbolisch definierten Funktion

Es kann an dieser Stelle nur die Funktion ezplot genauer beschrieben werden. Es gibt eine
Reihe weiterer Funktionen zur graphischen Darstellung symbolisch definierter Funktionen, die
die Mglichkeiten der Erzeugung grafischer Funktionsdarstellungen noch wesentlich erweitern1,
deren Beschreibung aber den Umfang dieses Handbuchs sprengen wrde.

ezplot ( f )
Der symbolische Ausdruck beschreibe eine Funktion f(x). Die Funktion wird ber x im
Standardbereich -2B < x < 2B dargestellt. Wenn im Ausdruck f zwei Variable auftreten,
so wird angenommen, dass es sich um eine implizit definierte Funktion f( x , y ) = 0
handelt. Diese Form wird der grafischen Darstellung zu Grunde gelegt. Die Variablen
werden dann in folgenden Bereichen variiert: -2B < x < 2B ; -2B < y < 2B. Die Variablen mssen nicht mit x und y bezeichnet werden, sondern knnen mit anderen Namen
bezeichnet werden.

Es handelt sich um folgende Funktionen, deren Beschreibungen der Online-Hilfe oder dem Handbuch zu
entnehmen sind:
ezplot3 , ezsurf, ezpolar, ezmesh, ezmeshc, ezcontour, ezcontourf

Symbolisches Rechnen

4 - 13

ezplot ( f , [min,max])
Es gelten die gleichen Festlegungen wie fr ezplot nach der obigen Beschreibung.
Lediglich der Wertebereich fr die unabhngige Variable wird durch min < x < max neu
festgelegt.

ezplot ( f , [xmin,xmax,ymin,ymax])
Dieser Aufruf modifiziert die Wertebereiche der Variablen x und y bei der Darstellung
einer implizit definierten Funktion.

ezplot (x , y )
Durch diesen Aufruf wird die ebene Kurve, deren Parameterdarstellung durch die beiden
Funktionen x = x(t) und y = y(t) gegeben ist, grafisch dargestellt. Als Wertebereich fr
den Parameter wird 0 < t < 2B angenommen.

ezplot (x , y , [tmin , tmax] )


Es gelten die gleichen Festlegungen wie in der vorangegangenen Beschreibung; der
Kurvenparameter wird jetzt aber im Bereich tmin < t < tmax variiert.

ezplot (.... , handle )


Die Punkte .... stehen fr eine der in den vorangegangenen Beschreibungen eingefhrten
Parameterlisten. Der Parameter handle verweist auf ein Grafik-Fenster, in das die aktuelle Darstellung zu bernehmen ist.
<

Beispiele

% Im folgenden Beispiel wird der Graf der Funktion sin(x)/x


% dargestellt.
>> syms x y z
>> z=sin(x)/x
z =
sin(x)/x
ezplot(z,[-5*pi,5*pi])

4 - 14

Symbolisches Rechnen

% Das folgende Beispiel fhrt die darzustellende Funktion


% in impliziter Form ein.
>> z=sin(x*y)
z =
sin(x*y)
>> ezplot(z)

% Im folgenden Beispiel wird eine Ellipse dargestellt, die in


% der Parameterdarstellung gegeben ist.
>>
>>
>>
>>

syms x y t
x=2*sin(t);
y=cos(t);
ezplot(x,y)

Symbolisches Rechnen
4.3.
4.3.1

4 - 15

Symbolische Differentiation und Integration


Differentiation

Sowohl fr die symbolische Differentiation als auch die symbolische Integration ist die
Variablen-Konvention (s. Abschnitt 4.2.2) zu beachten, wenn nicht eine explizite Definition der
unabhngigen Variablen erfolgt.

diff ( S )
Es wird die erste Ableitung der durch den symbolischen Ausdruck S definierten Funktion
gebildet. Die unabhngige Variable wird gem der Variablen-Konvention gewhlt.

diff ( S , v )
Es wird die erste Ableitung der durch den symbolischen Ausdruck S definierten Funktion
nach der Variablen v gebildet.

diff ( S , n )
Es wird die n-te Ableitung der durch den symbolischen Ausdruck S definierten Funktion
gebildet. Die unabhngige Variable wird gem der Variablen-Konvention gewhlt.

diff ( S , v , n )
Es wird die n-te Ableitung der durch den symbolischen Ausdruck S definierten Funktion
nach der Variablen v gebildet.
<

Beispiele

% Im folgenden Beispiel wird die erste Ableitung nach der


% Standardvariablen x ermittelt.
>> syms x y
>> y=(x*log(x))^x
y =
(x*log(x))^x
>> diff(y)
ans =
(x*log(x))^x*(log(x*log(x))+(log(x)+1)/log(x))
% Im folgenden Beispiel wird nach der Variablen a differenziert.
% Der Ausdruck und die Variable werden im Zeichenkettenformat
% dargestellt.
>> diff('(x*log(a))^a','a')
ans =
(x*log(a))^a*(log(x*log(a))+1/log(a))
% Im folgenden Beispiel werden Ableitungen unterschiedlicher
% Ordnung eines Ausdrucks ermittelt und in einer symbolischen
% Matrix abgespeichert.
>> syms x y X
>> y=x*exp(-2*x);

4 - 16

Symbolisches Rechnen

>> X=[diff(y) diff(y,2); diff(y,3) diff(y,4)]


X =
[
exp(-2*x)-2*x*exp(-2*x),
-4*exp(-2*x)+4*x*exp(-2*x)]
[
12*exp(-2*x)-8*x*exp(-2*x), -32*exp(-2*x)+16*x*exp(-2*x)]
% Diese Matrix lsst sich noch in der Darstellung modifizieren
>> factor(X)
ans =
[
-exp(-2*x)*(-1+2*x),
4*exp(-2*x)*(x-1)]
[ -4*exp(-2*x)*(-3+2*x),
16*exp(-2*x)*(-2+x)]

4.3.2

Integration

int ( S )
ber die durch den symbolischen Ausdruck S gegebene Funktion wird unbestimmt
integriert. Die Integrationsvariable wird gem der Variablen-Konvention gewhlt.

int ( S , v )
ber die durch den symbolischen Ausdruck S gegebene Funktion wird unbestimmt
integriert. Die Integrationsvariable ist die Variable v.

int ( S , a , b)
ber die durch den symbolischen Ausdruck S gegebene Funktion wird bestimmt in den
Grenzen a und b integriert. Die Integrationsvariable wird gem der Variablen-Konvention gewhlt. Die Integrationsgrenzen a und b sind numerische MATLAB-Ausdrcke.

int ( S , v , a ,b )
ber die durch den symbolischen Ausdruck S gegebene Funktion wird bestimmt in den
Grenzen a und b integriert. Die Integrationsvariable ist die Variable v. Die Integrationsgrenzen a und b sind numerische MATLAB-Ausdrcke.

int ( S , unten , oben )


ber die durch den symbolischen Ausdruck S gegebene Funktion wird bestimmt in den
Grenzen unten und oben integriert. Die Integrationsgrenzen unten und oben sind
symbolische Ausdrcke.

<

Beispiele

% Im folgenden Beispiel wird eine Funktion unbestimmt


% integriert. Integrationsvariable ist x.
>> syms x y
>> y=sin(x)*exp(-x);
>> int(y)
ans =
-1/2*exp(-x)*cos(x)-1/2*sin(x)*exp(-x)
% Dieser Ausdruck lsst sich noch vereinfachen. Man kann die
% Integration mit der Vereinfachung kombinieren:

Symbolisches Rechnen

4 - 17

>> simple(int(y))
% Die Einzelschritte von simple werden weggelassen.
% Es wird gleich das Ergebnis angegeben.
ans =
-1/2*exp(-x)*(cos(x)+sin(x))
% Es folgt ein Beispiel fr die bestimmte Integration
>> syms x y a b
>> y=sin(2*x)^2;
>> int(y,-pi/2,pi/2)
ans =
1/2*pi
% Im folgenden Beispiel wird die bestimmte Integration mit
% symbolischen Grenzen ausgefhrt.
>> simple(int(y,a-pi/2,b+pi/2))
ans =
-1/8*sin(4*b)+1/2*b+1/2*pi+1/8*sin(4*a)-1/2*a

4.3.3

Grenzwertberechnung

limit ( S )
Es wird der Grenzwert der durch den symbolischen Ausdruck S gegebenen Funktion
bestimmt. Dabei wird angenommen, dass die unabhngige Variable gegen Null geht. Die
unabhngige Variable wird gem der Variablen-Konvention gewhlt.

limit ( S , g )
Es wird der Grenzwert der durch den symbolischen Ausdruck S gegebenen Funktion
bestimmt. Die unabhngige Variable geht gegen den Wert g. Die unabhngige Variable
wird gem der Variablen-Konvention gewhlt.

limit ( S , v , g )
Es wird der Grenzwert der durch den symbolischen Ausdruck S gegebenen Funktion
bestimmt. Die unabhngige Variable v geht gegen den Wert g.

limit ( S , v , g , left | right )


Es wird der Grenzwert der durch den symbolischen Ausdruck S gegebenen Funktion
bestimmt. Die unabhngige Variable v geht gegen den Wert g - 0, wenn der vierte
Parameter auf left gesetzt wird und sie geht gegen g + 0, wenn dieser Parameter auf
right gesetzt wird.

<

Beispiele

% Im ersten Beispiel wird der Grenzwert einer Funktion fr


% x gegen 0 bestimmt.
>> syms x y
>> y=sin(x)/x

4 - 18

Symbolisches Rechnen

y =
sin(x)/x
>> limit(y)
ans =
1
% Im folgenden Beispiel wird fr die gleiche Funktion der
% Grenzwert fr den Fall, dass x gegen inf geht, bestimmt.
>> limit(y,inf)
ans =
0
% Im folgenden Beispiel wird die Variable h zur unabhngigen
% Variablen deklariert.
>> syms x h
>> limit((sin(x+h)-sin(x))/h,h,0)
ans =
cos(x)

4.3.4

TAYLOR -Reihenentwicklung

taylor ( S )
Es wird die durch den symbolischen Ausdruck S definierte Funktion in eine TAYLORReihe entwickelt. Als Entwicklungsstelle wird Null angenommen; die Entwicklung wird
bis zum sechsten Reihenterm angegeben. Die unabhngige Variable wird gem der
Variablen-Konvention gewhlt.

taylor ( S , n , v )
Es wird die durch den symbolischen Ausdruck S definierte Funktion in eine TAYLORReihe entwickelt. Die unabhngige Variable ist die Variable v. Als Entwicklungsstelle
wird Null angenommen; die Entwicklung wird bis zum n-ten Reihenterm angegeben.

taylor ( S , n , v , a )
Es wird die durch den symbolischen Ausdruck S definierte Funktion in eine TAYLORReihe entwickelt. Die unabhngige Variable ist die Variable v. Die Entwicklung wird
bis zum n-ten Reihenterm angegeben. Als Entwicklungsstelle wird der Wert des numerischen Ausdrucks a angenommen.

<

Beispiele

% Im folgenden Beispiel werden alle Standardannahmen als


% zutreffend vorausgesetzt.
>> syms x y
>> y=taylor(exp(-x^2/2))
y =
1-1/2*x^2+1/8*x^4

Symbolisches Rechnen

4 - 19

% Im folgenden Beispiel werden Ordnung und Entwicklungsstelle


% vorgegeben. Fr die Funktion ist die Entwicklungsstelle
% Null nicht anwendbar!
>> simple(taylor(exp(-x)/x,3,x,1))
ans =
1/2*exp(-1)*(11-14*x+5*x^2)

4.3.5

Symbolische Summation

symsum ( S )
Es wird die Summe der Reihe berechnet, deren allgemeines Glied durch den symbolischen Ausdruck S gegeben ist. Als Summationsvariable wird die Variable k bzw. die
ihr lexikalisch nchste Variable im Ausdruck angenommen; die Variablen-Konvention
gilt fr diesen Fall demnach bezogen auf k. Die Summation wird von Null bis k-1
ausgefhrt.

symsum ( S , v )
Es wird die Summe der Reihe berechnet, deren allgemeines Glied durch den symbolischen Ausdruck S gegeben ist. Als Summationsvariable wird die Variable v angenommen. Die Summation wird von Null bis v-1 ausgefhrt.

symsum ( S , a , b)
Es wird die Summe der Reihe berechnet, deren allgemeines Glied durch den symbolischen Ausdruck S gegeben ist. Als Summationsvariable wird die Variable k bzw. die
ihr lexikalisch nchste Variable im Ausdruck angenommen; die Variablen-Konvention
gilt fr diesen Fall demnach bezogen auf k. Die Summationsvariable durchluft den
Bereich von a bis b.

symsum ( S , v , a , b )
Es wird die Summe der Reihe berechnet, deren allgemeines Glied durch den symbolischen Ausdruck S gegeben ist. Als Summationsvariable wird die Variable v angenommen. Die Summationsvariable durchluft den Bereich von a bis b.

<

Beispiele

% Es folgt zunchst ein bekanntes und zugleich berhmtes


% Beispiel: die Formel fr die Summe der natrlichen Zahlen
% von Null bis k-1.
>> syms s k
>> factor(symsum(k))
ans =
1/2*k*(k-1)
% Im Folgenden wird ein Ausdruck fr die Summe der Quadrate
% der natrlichen Zahlen von Null bis k-1 bestimmt.
>> s=symsum(k^2)
s =
1/3*k^3-1/2*k^2+1/6*k

4 - 20

Symbolisches Rechnen

% Im folgenden Beispiel wird der numerische Wert einer Summe


% in vorgegebenen Grenzen berechnet.
>> double(symsum(1/k^2, 1 , 100))
ans =
1.6350

4.4
4.4.1

Symbolische Lsung algebraischer Gleichungen


Symbolische lineare Algebra und lineare Gleichungssysteme

Die Grundfunktionen der linearen Algebra stehen auch als symbolische Funktionen bereit. Mit
Hilfe dieser Funktionen lassen sich lineare Gleichungssysteme lsen. Prinzipiell kann fr diese
Aufgabe aber auch die solve Funktion genutzt werden, die im Abschnitt 4.4.2 beschrieben
wird.

Symbolische Inverse und Determinante einer Matrix

inv ( A )
Die symbolische Inverse der Matrix A, die als symbolischer Ausdruck gegeben sein
muss, wird ermittelt.

det ( A )
Die symbolische Determinante der Matrix A, die als symbolischer Ausdruck gegeben
sein muss, wird ermittelt.

<

Beispiele

% Es werden die Determinante und die Inverse der Matrix A


% in symbolischer Form ermittelt.
>> syms A X
>> A=sym('[T1*T2*T3 T1*T2; T1/T2 T2*T3]')
A =
[ T1*T2*T3,
T1*T2]
[
T1/T2,
T2*T3]
>> det(A)
ans =
T1*T2^2*T3^2-T1^2
>> X=inv(A)
X =
[ T2*T3/T1/(T2^2*T3^2-T1),
[
-1/T2/(T2^2*T3^2-T1),

-T2/(T2^2*T3^2-T1)]
T2*T3/(T2^2*T3^2-T1)]

% Das Produkt X*A muss die Einheitsmatrix ergeben


>> simple(A*X)
ans =
[ 1, 0]
[ 0, 1]

Symbolisches Rechnen

4 - 21

Eigenwerte und charakteristische Gleichung einer Matrix

eig ( A )
Diese Funktion liefert in einem symbolischen Vektor die Eigenwerte der Matrix.

[V , D] = eig ( A )
In der symbolischen Matrix V werden die Eigenvektoren der Matrix A bergeben und in
der symbolischen Diagonalmatrix D die Eigenwerte.

poly ( A )
Diese Funktion liefert das charakteristische Polynom der Matrix A in Form eines
symbolischen Ausdrucks. Als Polynomvariable wird x angenommen.

poly ( A , v )
Diese Funktion liefert das charakteristische Polynom der Matrix A in Form eines
symbolischen Ausdrucks. Als Polynomvariable wird die Variable v angenommen.

<

Beispiele

% Es werden zunchst die Eigenvektoren und die Eigenwerte der


% Matrix A bestimmt.
>> syms A V D
>> A=sym('[a a^2; 2*a^2 5*a]')
A =
[
a,
a^2]
[ 2*a^2,
5*a]
>> [V,D]=eig(A)
% Es folgt die Matrix mit den Eigenvektoren
V =
[ -1/2*(-(3+(4+2*a^2)^(1/2))*a+5*a)/a^2, -1/2*(-(3-(4+2*a^2)^(1/2))*a+5*a)/a^2]
[
1,
1]

% Es folgt die Diagonalmatrix mit den Eigenwerten


D =
[ (3+(4+2*a^2)^(1/2))*a,
0]
[
0, (3-(4+2*a^2)^(1/2))*a]
% Das charakteristische Polynom wird erzeugt
>> poly(A)
ans =
x^2-6*x*a+5*a^2-2*a^4
% Die Nullstellen knnen mit der Funktion solve bestimmt werden
>> solve(ans)
ans =
[ (3+(4+2*a^2)^(1/2))*a]
[ (3-(4+2*a^2)^(1/2))*a]
% Das sind genau die Diagonalelemente der Matrix D!

4 - 22

Symbolisches Rechnen
Symbolische Lsung linearer Gleichungssysteme

Wenn es darum geht, die symbolische Lsung des linearen Gleichungssystems

zu bestimmen, so kann man die oben eingefhrte Funktion fr die symbolische Inverse inv
anwenden, da gilt:

Es kann aber auch die Notation mit dem Backslash-Operator \ gewhlt werden:

Als dritte Mglichkeit kann die solve-Funktion herangezogen werden (s. folgenden Abschnitt).
<

Beispiele

% Zunchst werden die Koeffizientenmatrix und der Vektor der


% rechten Seiten definiert
>> syms x A b
>> A=sym('[a a^2; 2*a^2 5*a]')
A =
[
a,
a^2]
[ 2*a^2,
5*a]
>> b=sym('[b1; b2]')
b =
[ b1]
[ b2]
% Es folgt die Lsung des Gleichungssystems in der Backslash% Notation
>> x=A\b
x =
[ (-5*b1+a*b2)/a/(2*a^2-5)]
[ (2*a*b1-b2)/a/(2*a^2-5)]
% Es folgt die Lsung unter Verwendung der Inversen von A
>> x=simple(inv(A)*b)
x =
[ (-5*b1+a*b2)/a/(2*a^2-5)]
[ (2*a*b1-b2)/a/(2*a^2-5)]
% Es folgt die Anwendung der solve-Funktion
>> X=solve('a*x1+a^2*x2-b1','2*a^2*x1+5*a*x2-b2')
X =

Symbolisches Rechnen

4 - 23

x1: [1x1 sym]


x2: [1x1 sym]
>> X.x1
ans =
(-5*b1+a*b2)/a/(2*a^2-5)
>> X.x2
ans =
(2*a*b1-b2)/a/(2*a^2-5)

4.4.2

Lsung algebraischer Gleichungssysteme

Im Mittelpunkt des Interesses steht im folgenden Abschnitt die symbolische Lsung nichtlinearer algebraischer Gleichungssysteme. Die dafr verfgbare solve-Funktion ist, wie bereits
im Abschnitt 4.4.1 mehrfach hervorgehoben, prinzipiell auch fr die symbolische Lsung
linearer algebraischer Gleichungssysteme anwendbar. Allerdings drften in diesem Fall die im
vorangegangenen Abschnitt behandelten Methoden effektiver sein.

Allgemeine Hinweise

1.

Die zu lsenden Gleichungen knnen durch symbolische Ausdrcke oder durch Zeichenketten dargestellt werden. In den folgenden syntaktischen Beschreibungen werden die
Gleichungen durch die Parameter eq bzw. eq1, eq2 , ... , eqn bezeichnet.
Sollen die Gleichungen durch symbolische Ausdrcke dargestellt werden, so wird
angenommen, dass diese die Form eq1 = 0, ... , eqn = 0 besitzen. Es werden
demzufolge nur die linken Seiten erwartet; das Gleichheitszeichen darf in Gleichungen,
die durch symbolische Ausdrcke kodiert werden, nicht auftreten.
Werden die Gleichungen durch Zeichenketten kodiert, so knnen sie unter Einschluss
des Gleichheitszeichens in blicher mathematischer Darstellung angegeben werden.
Fehlt das Gleichheitszeichen, so wird angenommen, dass die Zeichenkette die linke Seite
der Gleichung darstellt; die rechte Seiten wird dann zu Null gesetzt.
Wenn die Namen der Unbekannten, fr die die Lsungen zu bestimmen sind, nicht
explizit angegeben werden, gilt die Variablen-Konvention. Dabei wird die Konvention
so oft angewandt, wie es der Anzahl der Unbekannten bzw. der Anzahl der Gleichungen
entspricht.
Wird ein System von Gleichungen gelst, treten also mehrere Unbekannte auf, so werden
die Lsungen in einer Struktur abgespeichert. Die Namen der Unbekannten bezeichnen
die Namen der Datenfelder, unter denen die Lsungen zu finden sind.
Wenn die Gleichungen nach den Unbekannten nicht auflsbar sind, erfolgt eine Fehlermitteilung.
Wenn die Lsung sich numerisch darstellen lsst, so ist zu beachten, dass diese numerischen Konstanten ebenfalls symbolische Konstanten sind. In die normale Darstellung
mssen sie mit der double-Funktion konvertiert werden.

2.

3.

4.

5.

6.
7.

4 - 24

Symbolisches Rechnen
Formen des Aufrufs der Lsungs-Funktion

solve ( eq )
Der Parameter eq beschreibt eine zu lsende Gleichung; es sind die allgemeinen Regeln
zu beachten.

solve ( eq , v )
Der Parameter eq beschreibt eine zu lsende Gleichung; es sind die allgemeinen Regeln
zu beachten. Die Lsung wird fr die Unbekannte v bestimmt.

solve ( eq1 , eq2 ,..., eqn )


Die Parameter eq1 ... eqn, beschreiben die zu lsenden Gleichungen; es sind die allgemeinen Regeln zu beachten. Die Lsung wird fr n Unbekannte gem VariablenKonvention bestimmt.

solve ( eq1 , eq2 ,..., eqn , v1 , v2 ,..., vn)


Die Parameter eq1 ... eqn, beschreiben die zu lsenden Gleichungen; es sind die allgemeinen Regeln zu beachten. Die Lsung wird fr die n Unbekannten v1 ... vn bestimmt.

<

Beispiele

% Der folgende Aufruf liefert die bekannte Lsungsformel fr


% eine quadratische Gleichung
>> syms a b c x y X
>> solve(a*x^2+b*x+c)
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
% Das nachfolgende Gleichungssystem wird fr die Unbekannten
% x und y gelst.
>> X=solve(a*x^2+b*x*y+c,b*y^2+a*x*y-c)
X =
x: [2x1 sym]
y: [2x1 sym]
>> X.x
ans =
[ c/(-c*(-b+a))^(1/2)]
[ -c/(-c*(-b+a))^(1/2)]
>> X.y
ans =
[ 1/(-b+a)*(-c*(-b+a))^(1/2)]
[ -1/(-b+a)*(-c*(-b+a))^(1/2)]
% Die Lsung der folgenden Gleichung ist durch eine numerische
% Konstante darstellbar.
solve('log(x)-exp(-2*x)=0')

Symbolisches Rechnen

4 - 25

ans =
exp(.10778502390377436626197930837265)
% Der folgenden Aufruf fhrt zu einer modifizierten
% Ergebnisdarstellung
simple(solve('log(x)-exp(-2*x)=0'))
ans =
1.1138082774920142479374572409634
% Im folgenden Fall wird das Ergebnis in einen reellen Wert
% konvertiert und der numerischen Variablen a zugewiesen.
>> a=double(solve('log(x)-exp(-2*x)=0'))
a =
1.1138
% Die folgende Gleichung lsst sich nicht nach der Unbekannten
% x auflsen.
>> a=double(solve('log(x)-exp(-a*x)=0'))
??? Error using ==> solve
Error, (in allvalues/rootseq) cannot evaluate with symbolic
coefficients
% Wenn dagegen a die Unbekannte bezeichnet, kann eine Lsung
% gewonnen werden
>> solve('log(x)-exp(-a*x)=0','a')
ans =
-log(log(x))/x
4.5

Symbolische Lsung von Differentialgleichungen

Allgemeine Hinweise

Die zu lsenden Gleichungen werden in der Zeichenkettenform dargestellt; die Beschreibung durch symbolische Ausdrcke ist hier nicht mglich. In den folgenden
syntaktischen Beschreibungen werden die Gleichungen wiederum durch die Parameter
eq bzw. eq1, eq2 , ... , eqn bezeichnet.
Als unabhngige Variable ist im Standardfall t angenommen. Soll eine andere Variable
hierfr herangezogen werden, so ist diese explizit anzugeben. Auch diese Angabe muss
in Zeichenkettenform erfolgen.
Der Buchstabe D innerhalb der Zeichenkette, die eine Gleichung kodiert, steht fr den
Differentialoperator. Es gilt die folgende Syntax:

S
S

Der dem Symbol D (bzw. D n ) folgende Name bezeichnet die gesuchte Funktion, auf
die sich der Differentialoperator bezieht.
Die Bezeichnungen der gesuchten Funktionen ergeben sich implizit dadurch, dass sie im
Zusammenhang mit einem Differentialoperator auftreten.
Die Anfangs- bzw. die Randbedingungen geben die gesuchten Funktionen bzw. deren
Ableitungen an definierten Stellen vor. Es gilt folgende Syntax:

4 - 26

Symbolisches Rechnen
anfangsbedingung_oder_randbedingung 6
variablenname ( konstante ) = konstante |
D ganzzahlige_konstante variablenname ( konstante ) = konstante
Im folgenden Beispiel ist die spezielle Form der differentiellen Bedingung in ihrer
Semantik detaillierter dargestellt:

S
S

In den folgenden Funktionsbeschreibungen werden die Anfangs-/Randbedingungen


durch die Parameter cond bzw. cond1, cond2 ,... , condn bezeichnet.
Die Gleichungen und die Anfangs-/Randbedingungen knnen jeweils in einem Zeichenkettenparameter oder als Einzelgleichungen bzw. Einzelbedingungen in separaten
Zeichenkettenparametern kodiert werden. Werden die Gleichungen und/oder Bedingungen jeweils durch einen Zeichenkettenparameter kodiert, so sind die einzelnen Gleichungen bzw. Bedingungen innerhalb der betreffenden Zeichenkette durch Kommas zu
trennen. Die Lsungsfunktion akzeptiert maximal 12 Input-Parameter.
Wird ein System von Gleichungen gelst, treten also mehrere gesuchte Funktionen auf,
so werden die Lsungen in einer Struktur abgespeichert. Die Namen der Funktionen
bezeichnen die Namen der Datenfelder, unter denen die Lsungen zu finden sind.
Fehlt die Angabe der Anfangs-/Randbedingungen werden symbolische Integrationskonstanten eingefhrt, die mit C1,C2.... bezeichnet werden.
Formen des Aufrufs der Lsungs-Funktion

dsolve ( eq1 , eq2 , ... , eqn )


Das System aus n Differentialgleichungen wird gelst. Als unabhngige Variable wird t
angenommen. Alle Gleichungen werden durch eine zusammenfassende Zeichenkette
kodiert. Da weder Anfangs- noch Randbedingungen angegeben werden, wird angenommen, dass es sich um ein Anfangswertproblem handelt, wobei fr t=0 Integrationskonstanten C1, ... Cn eingefhrt werden.

dsolve ( eq1 , eq2 , ... , eqn,v )


Das System aus n Differentialgleichungen wird gelst. Als unabhngige Variable wird
die angegebene Variable v angenommen. Alle Gleichungen werden durch eine zusammenfassende Zeichenkette kodiert. Da weder Anfangs- noch Randbedingungen
angegeben werden, wird angenommen, dass es sich um ein Anfangswertproblem handelt,
wobei fr t=0 Integrationskonstanten C1, ... Cn eingefhrt werden.

dsolve ( eq1 , ... , eqn ,cond1 , ... , condn)


Das System aus n Differentialgleichungen wird gelst. Als unabhngige Variable wird t
angenommen. Alle Gleichungen werden durch eine zusammenfassende Zeichenkette
kodiert. Die zu bercksichtigenden Anfangs- bzw. Randbedingungen werden ebenfalls
in einer gemeinsamen Zeichenkette kodiert.

dsolve ( eq1 ,..., eqn ,cond1 ,..., condn,v)

Symbolisches Rechnen

4 - 27

Das System aus n Differentialgleichungen wird gelst. Als unabhngige Variable wird v
angenommen. Alle Gleichungen werden durch eine zusammenfassende Zeichenkette
kodiert. Die zu bercksichtigenden Anfangs- bzw. Randbedingungen werden ebenfalls
in einer gemeinsamen Zeichenkette kodiert.

dsolve ( eq1 ,...,eqn ,cond1,...,condn,v)


Das System aus n Differentialgleichungen wird gelst. Als unabhngige Variable wird v
angenommen. Alle Differentialgleichungen und zu bercksichtigende Anfangs- bzw.
Randbedingungen werden durch separate Zeichenketten kodiert. Die bereits beschriebenen Varianten lassen sich auch in dieser Art der Kodierung angeben. Dabei ist aber die
Maximalzahl von 12 fr die Inputparameter zu beachten.
<

Beispiele

% Im folgenden Beispiel wird eine lineare Differentialgleichung


% 1. Ordnung unter verschiedenen Voraussetzungen gelst.
% Zunchst wird die homogene DGL behandelt
>> dsolve('T1*Dy+y=0')
ans =
C1*exp(-1/T1*t)
>> dsolve('T1*Dy+y=0','y(0)=1')
ans =
exp(-1/T1*t)
% Es folgt die heterogene DGL mit unterschiedlichen rechten
% Seiten
>> dsolve('T1*Dy+y=1','y(0)=0')
ans =
1-exp(-1/T1*t)
y=simple(dsolve('T1*Dy+y=exp(-t/T0)','y(0)=0'))
y =
-T0*(exp(-t/T0)-exp(-1/T1*t))/(T1-T0)
% Es folgt die Lsung fr den Fall T1=T0.
>> y=simple(dsolve('T1*Dy+y=exp(-t/T1)','y(0)=0'))
y =
exp(-1/T1*t)/T1*t
% Im folgenden Beispiel wird ein Anfangswertproblem gelst,
% das durch eine homogene lineare DGL 2. Ordnung beschrieben
% wird.
>> y=dsolve('0.5*D2y+Dy+y=0','y(0)=1,Dy(0)=0')
y =
exp(-t)*(sin(t)+cos(t))
% Im folgenden Beispiel wird ein Anfangswertproblem gelst,
% das durch ein System von zwei DGLs 1. Ordnung beschrieben
% wird
>> X=dsolve('Dx1=x1+0.5*x2,Dx2=0.5*x1+x2','x1(0)=1,x2(0)=0.5')

4 - 28

Symbolisches Rechnen

X =
x1: [1x1 sym]
x2: [1x1 sym]
>> X.x1
ans =
1/4*exp(1/2*t)+3/4*exp(3/2*t)
>> X.x2
ans =
3/4*exp(3/2*t)-1/4*exp(1/2*t)
%
%
>
X

Im folgenden Beispiel wird ein stationres ReaktionsDiffusions-Problem gelst


X=simple(dsolve('D2c-k*c=0','c(0)=c0,Dc(1)=0'))
=

-c0*sinh(k^(1/2))/cosh(k^(1/2))*sinh(k^(1/2)*t)+c0*cosh(k^(1/2)*t)

% Die Lsung kann fr den Fall, dass die Konstanten co und k


% vorgegeben werden, auch sofort grafisch dargestellt werden,
% ohne dass die analytische Darstellung vorher erscheint.
>> ezplot(dsolve('D2c-0.9*c=0','c(0)=0.8,Dc(1)=0','x'),[0,1])
% Die nachfolgend dargestellte Grafik wird erzeugt:

Symbolisches Rechnen
4.6
4.6.1

4 - 29

Ergnzende Funktionen
Berechnung spezieller Funktionen

Die Toolbox stellt eine Reihe spezieller Funktionen bereit, die im Grundumfang von MATLAB
nicht verfgbar sind. Diese Funktionen knnen hier nicht alle behandelt werden. Das ist auch
nicht erforderlich, da der Zugriff auf diese Funktionen nach einem einheitlichen Schema erfolgen kann:
1.
ber ein spezielles Kommando kann die Liste der verfgbaren Funktionen angefordert
werden.
2.
Der Aufruf der gewnschten Funktion erfolgt mit Hilfe einer speziellen Rahmenfunktion; fr den Aufruf sind die Informationen der Liste zu entnehmen.
Im Folgenden werden die beiden Kommandos, die fr den Zugriff auf die speziellen Funktionen
erforderlich sind, beschrieben.

mfunlist
Es wird die Liste der verfgbaren speziellen Funktionen erzeugt. Diese Liste enthlt in
drei Spalten den Namen des Aufrufs, die Parameter und die Bezeichnung der Funktionen. Im Folgenden ist diese Liste angegeben:
MFUNLIST Special functions for MFUN.
The following special functions are listed in alphabetical order
according to the third column. n denotes an integer argument,
x denotes a real argument, and z denotes a complex argument. For
more detailed descriptions of the functions, including any
argument restrictions, see the Reference Manual, or use MHELP.
bernoulli
bernoulli
BesselI
BesselJ
BesselK
BesselY
Beta
binomial
EllipticF EllipticK EllipticCK EllipticE EllipticE EllipticCE EllipticPi EllipticPi EllipticCPi erfc
erfc
Ci
dawson
Psi
dilog
erf
euler
euler
Ei
Ei
FresnelC
FresnelS
GAMMA
harmonic
Chi
Shi

n
n,z
x1,x
x1,x
x1,x
x1,x
z1,z2
x1,x2
z,k
k
k
k
z,k
k
nu,k
z,nu,k
nu,k
z
n,z
z
x
z
x
z
n
n,z
x
n,z
x
x
z
n
z
z

Bernoulli Numbers
Bernoulli Polynomials
Bessel Function of the First Kind
Bessel Function of the First Kind
Bessel Function of the Second Kind
Bessel Function of the Second Kind
Beta Function
Binomial Coefficients
Incomplete Elliptic Integral, First Kind
Complete Elliptic Integral, First Kind
Complementary Complete Integral, First Kind
Complete Elliptic Integrals, Second Kind
Incomplete Elliptic Integrals, Second Kind
Complementary Complete Elliptic Integral, Second Kind
Complete Elliptic Integrals, Third Kind
Incomplete Elliptic Integrals, Third Kind
Complementary Complete Elliptic Integral, Third Kind
Complementary Error Function
Complementary Error Function's Iterated Integrals
Cosine Integral
Dawson's Integral
Digamma Function
Dilogarithm Integral
Error Function
Euler Numbers
Euler Polynomials
Exponential Integral
Exponential Integral
Fresnel Cosine Integral
Fresnel Sine Integral
Gamma Function
Harmonic Function
Hyperbolic Cosine Integral
Hyperbolic Sine Integral

4 - 30

Symbolisches Rechnen

GAMMA
W
W
lnGAMMA
Li
Psi
Ssi
Si
Zeta
Zeta
Zeta
T
U
G
H
P
L
L
P

z1,z2
z
n,z
z
x
n,z
z
z
z
n,z
n,z,x

Incomplete Gamma Function


Lambert's W Function
Lambert's W Function
Logarithm of the Gamma function
Logarithmic Integral
Polygamma Function
Shifted Sine Integral
Sine Integral
(Riemann) Zeta Function
(Riemann) Zeta Function
(Riemann) Zeta Function

Orthogonal Polynomials (Extended Symbolic Math Toolbox only)


n,x
Chebyshev of the First Kind
n,x
Chebyshev of the Second Kind
n,x1,x
Gegenbauer
n,x
Hermite
n,x1,x2,x
Jacobi
n,x
Laguerre
n,x1,x
Generalized Laguerre
n,x
Legendre
See also MFUN, MHELP.

Detaillierte Hinweise und Beschreibungen sind unter den Namen der Funktionen auch
der Online-Hilfe zu entnehmen.

mfun ( name , par1 , par2 , par3 , par4 )


ber dieses Kommando wird eine spezielle Funktion aufgerufen. Der Parameter name
enthlt den konkreten Namen der Funktion als Zeichenkette kodiert. Der Name ist der
oben dargestellten Liste zu entnehmen. Die Parameter par1 ,.., par4 sind die konkreten
Parameter der Funktion. Wie viele Parameter anzugeben sind, hngt vom jeweiligen
Funktionstyp ab. Die Funktion mfun liefert den Funktionswert in reeller Darstellung.
<

Beispiel

Die folgende Funktion (das sogenannte FRESNELsche Sinus-Integral)

soll fr ausgewhlte Werte berechnet werden.


% Aufruf von mfun fr Berechnung der Funktion
% Name der Funktion nach Tabelle: FresnelS
% Die Funktion hat einen Parameter (hier als Vektor definiert)
>> Y=mfun('FresnelS',(0:0.2:1))
Y =
0

0.0042

0.0334

0.1105

0.2493

0.4383

Symbolisches Rechnen
4.6.2

4 - 31

Spezielle Funktionen fr komplexe Ausdrcke

Im Folgenden werden Funktionen, die im Zusammenhang mit komplexen Ausdrcken bentigt


werden, ergnzend behandelt. Es ist zu beachten, dass die Bezeichner i und j in komplexen
Ausdrcken fr die imaginre Einheit stehen knnen. Weiterhin ist zu beachten, dass die
Variablen, die in komplexen Ausdrcken vorkommen als real-Variable spezifiziert werden
mssen (s. Abschnitt 4.1, syms-Deklaration).

real ( K )
Der Realteil des komplexen Ausdrucks K wird in symbolischer Form bestimmt.

imag ( K )
Der Imaginrteil des komplexen Ausdrucks K wird in symbolischer Form bestimmt.

conj ( K )
Der konjugiert komplexe Ausdruck von K wird in symbolischer Form bestimmt.
<

Beispiele

% Im folgenden Beispiel werden verschiedene Kennfunktionen


% eines PT1-Gliedes im Frequenzbereich bestimmt.
% Zunchst wird p durch j*omega substituiert.
>> syms omega T1 real
>> L=subs('1/(1+T1*p)','p','j*omega')
L =
1/(1+T1*(j*omega))
% Im nchsten Schritt wird der Betrag des Frequenzgangs in
% symbolischer Form ermittelt
>> a=abs(L)
a =
1/(1+T1^2*omega^2)^(1/2)
% Der Realteil ergibt sich zu:
>> Re =simple(real(L))
Re =
1/(1+T1^2*omega^2)
% Der Imaginrteil folgt zu:
>> Im=simple(imag(L))
Im =
-T1*omega/(1+T1^2*omega^2)
% Damit kann der Betrag auch wie folgt bestimmt werden:
>> a=simple(sqrt(Re*Re+Im*Im))
a =
1/(1+T1^2*omega^2)^(1/2)
% Die Phasenfunktion ergibt sich wie folgt:
>> phi=asin(Im/Re)
phi =
-asin(T1*omega)

4 - 32
4.6.3

Symbolisches Rechnen
Die symbolische Matrix-Exponentialfunktion

Die Matrix-Exponentialfunktion gibt es auch in symbolischer Form. Sie wird wie folgt aufgerufen:

expm ( A )
Die Funktion bestimmt die symbolische Darstellung der Matrix-Exponentialfunktion.
Der symbolische Ausdruck A muss eine quadratische Matrix darstellen.
<

Beispiel

% Die homogene Lsung eines Zustandsgleichungssystems, das


% die Systemmatrix A=[-a 0 ; b -a] hat, ist zu bestimmen.
>> syms a t c0 b
>> X=expm([-a 0; b -a].*t)
X =
[
exp(-a*t),
0]
[ b*t*exp(-a*t),
exp(-a*t)]
% Die Lsung ergibt sich durch Multiplikation der Matrix X
% mit dem Vektor der Anfangswerte c0
>> c0=sym('[c01;c02]')
>> x=X*c0
x =
[
exp(-a*t)*c01]
[ b*t*exp(-a*t)*c01+exp(-a*t)*c02]
4.6.4

Ergnzende Operationen mit Funktionen

Die symbolische Bestimmung der Umkehrfunktion

Die folgenden Aufrufe dienen der Ermittlung die Umkehrfunktion f -1(x) zu einer vorgegebenen
Funktion f(x).

finverse ( f )
Der symbolische Ausdruck f beschreibt die Funktion, deren Umkehrfunktion zu ermitteln ist. Als unabhngige Variable wird x angenommen. Taucht x nicht auf, gilt die
Variablen-Konvention.

finverse ( f ,v )
Der symbolische Ausdruck f beschreibt die Funktion, deren Umkehrfunktion zu ermitteln ist. Als unabhngige Variable wird v angenommen.
<
Beispiele
>> finverse(tan(1/x))
ans =
1/atan(x)
>> finverse(log(sin(2*x+a)))
ans =
-1/2*a+1/2*asin(exp(x))

Symbolisches Rechnen

4 - 33

Zusammengesetzte Funktionen

compose ( f , g )
Die beiden symbolischen Ausdrcke f und g beschreiben die beiden Funktionen f(x) und
g(y). Die Festlegungen bezglich der unabhngigen Variablen erfolgen gem VariablenKonvention. compose liefert die zusammengesetzte Funktion f(g(y)).

compose ( f , g , z)
Die Variable z wird zur unabhngigen Variablen im Ergebnisausdruck; es wird also
f(g(z)) gebildet. Die Festlegung der unabhngigen Variablen fr f und g erfolgt gem
Variablen-Konvention.

compose ( f , g , v , w , z )
Die unabhngigen Variablen werden bei dieser Form explizit vorgegeben: v gilt fr die
Funktion f und w fr die Funktion g.

<
Beispiele
>> syms f g x y t
>> f=1/(1+x^2);
>> g=sin(y);
>> compose(f,g)
ans =
1/(1+sin(y)^2)
>> compose(f,g*g,t)
ans =
1/(1+sin(t)^4)
4.6.5

Konvertierung eines symbolischen Ausdrucks in das LaTeX-Format

Fr weiterfhrende Darstellungen ist es mitunter hilfreich, einen symbolischen Ausdruck in das


LaTeX-Format zu konvertieren. Die folgende Funktion realisiert diese Aufgabe:

l = latex ( S )
Der symbolische Ausdruck S wird in das LaTeX-Format konvertiert und als Zeichenkette
unter l abgespeichert.
<

Beispiele

>> syms x
>> latex(exp(-x^2/2))
ans =
{e^{-1/2\,{x}^{2}}}
>> latex(taylor(exp(-x^2/2)))
ans =
1-1/2\,{x}^{2}+1/8\,{x}^{4}

4 - 34
4.6.6

Symbolisches Rechnen
Die interaktiven Werkzeuge

Im Folgenden werden zwei interaktive Werkzeuge kurz beschrieben, die fr die schnelle Ausfhrung symbolischer Operationen sehr hilfreich sein knnen, zumal sie mit einer Online-Grafik
versehen sind, die fr viele Sachverhalte eine gute Visualisierung gestattet.

Der symbolische Taschenrechner

funtool
Diese Funktion aktiviert das folgende Fenster:

Die nachfolgenden Grafikfenster werden ebenfalls geffnet

Symbolisches Rechnen

4 - 35

In diesen beiden Fenstern werden die in den Eingabefeldern f und g beschriebenen Funktionen
grafisch dargestellt.
Die Eingabefelder haben nachfolgende Bedeutungen:

f,g

Funktionen einer Vernderlichen; diese heit im Standardfall x, kann


aber auch eine andere Bezeichnung erhalten. Diese beiden Funktionen
knnen ber die Funktionstasten miteinander verknpft werden.
Eingabefeld fr eine Konstante, die ber die Funktionstasten mit den
Funktionen in den Feldern f und g verknpft werden kann.
In diesem Feld wird der Darstellungsbereich der unabhngigen Vernderlichen angegeben. Diese Bereichsangabe wird bei den grafischen
Darstellungen wirksam.

Die Bedeutungen der Schalter auf der Tastatur ergeben sich aus den Beschriftungen, so dass
eine detaillierte Beschreibung nicht erforderlich sein drfte. Die Buchstaben f, g und a stehen
dabei stets fr die oben beschriebenen Eingabefelder.

Interaktives Werkzeug fr die TAYLOR-Entwicklung

taylortool
Nach diesem Kommando erscheint das folgende Fenster:

4 - 36

Symbolisches Rechnen
Die einzelnen Bereiche besitzen folgende Bedeutungen:

f(x)

In diesem Feld wird die zu entwickelnde Funktion eingegeben. Die unabhngige Variable wird im Standardfall mit x bezeichnet, kann aber
grundstzlich eine beliebige Bezeichnung besitzen.
TN(x) In diesem Feld wird die Taylor-Reihe entsprechend der gewhlten Ordnung und der gewhlten Entwicklungsstelle formelmig dargestellt.
N
In diesem Feld wird die Ordnung der Entwicklung vorgegeben.
a
Dieses Feld dient der Vorgabe der Entwicklungsstelle.
< x < Die beiden Felder beschreiben den Bereich der grafischen Darstellung.

5-1

SIMULINK
5.
5.1

Grundfunktionen des Simulationssystems SIMULINK


Grundlagen
SIMULINK is a software package that enables you
to model, simulate, and analyze systems whos
outputs change over time.
(Users Guide)

Was ist SIMULINK?


SIMULINK ist ein auf MATLAB basierendes Werkzeug fr die Simulation dynamischer
Systeme. Dabei kann sowohl zeitdiskontinuierliches als auch zeitdiskretes Systemverhalten
angenommen werden. Die Grundfunktionen werden in Gestalt von parametrierbaren Funktionsblcken bereitgestellt; das trifft sowohl fr die Funktionen zur Abbildung des Systemverhaltens
als auch fr die Prsentationsfunktionen und die Funktionen zur Beschreibung der Kopplungen
mit der Umgebung zu. Die Funktionsblcke werden durch Signalflusslinien miteinander
verknpft. Das Erscheinungsbild eines SIMULINK-Schemas kommt dem des Signaflussplanes
sehr nahe. SIMULINK-Schemata sind damit im hohen Mae selbstdokumentierend. Die
Parametrierung der Blcke ber Formulare untersttzt eine benutzerfreundliche, interaktive
Arbeitsweise mit dem System.

Einsatzgebiete und Hauptmerkmale


Zunchst ist festzustellen, dass SIMULINK in seiner Funktionalitt keine spezifische Prozessklasse favorisiert. Es ist fr ein breites Einsatzspektrum von Simulationsproblemen, die fr
dynamische Systeme zu lsen sind, einsetzbar. Die Blockbibliothek untersttzt in besonderer
Weise die Modellierung und Simulation linearer zeitkontinuierlicher und zeitdiskreter Systeme
mit konzentrierten Zustandsgren. Das betrifft sowohl die Input-/Output-Darstellung als auch
die Zustandsraumdarstellung. Fr die Beschreibung des Systemverhaltens knnen spezielle
Blcke fr bertragungsfunktionen bzw. fr die Darstellung nach dem linearen Zustandsraummodell eingesetzt werden. Die Simulation des Verhaltens nichtlinearer Systeme wird von
SIMULINK ebenfalls im breiten Mae untersttzt; die Funktionalitt des Werkzeuges ist nicht
auf die Simulation linearer Systeme beschrnkt. SIMULINK ist damit fr ein breites Spektrum
dynamischer Simulationsprobleme einsetzbar. Die besondere Untersttzung von Beschreibungsformen (bertragungsfunktionen) und Konzepten (Signalflussplan) der Regelungstechnik macht
das System fr dieses Gebiet besonders attraktiv.
SIMULINK bildet das Systemverhalten durch Blcke ab. Ein SIMULINK-Block, der fr die
Beschreibung des Systemsverhaltens herangezogen werden kann, lsst sich in allgemeiner Form
wie folgt darstellen:

5-2

SIMULINK

Der Vektor der Ausgangsgren y hngt sowohl vom Vektor der Zustandsgren als auch von
dem der Eingangsgren ab (wobei letztere Abhngigkeit nur selten zu bercksichtigen ist). Fr
den Vektor der Zustandsgren x kann angenommen werden, dass es ein System von Differentialgleichungen oder Differenzengleichungen gibt, das den aktuellen Zustand aus den zurckliegenden Zustnden, dem Vektor der Eingangsgren u und der Zeit zu bestimmen gestattet.
Die besondere Form des Zustandsmodells wird durch den jeweiligen Blocktyp bercksichtigt.
Die Blcke werden durch spezifische Parameter an die konkreten Gegebenheiten angepasst.
Diese Parameter knnen ber ein blockspezifisches Parametrier-Formular vorgegeben werden.
In einem SIMULINK-Schema knnen sowohl zeitdiskrete als auch zeitkontinuierliche Blcke
kombiniert auftreten. Darber hinaus gibt es Blcke, die je nach dem mit welchen Umgebungsblcken sie gekoppelt sind, zeitkontinuierlich oder zeitdiskret arbeiten.
Die Ausgangssignale eines Blockes knnen zu Eingangssignalen eines anderen Blockes bzw.
anderer Blcke werden. Die Verbindungen werden durch Signalflusslinien hergestellt.
Fr umfangreichere Probleme werden SIMULINK-Schemata sehr schnell unbersichtlich. Zur
besseren Gestaltung wird darum die hierarchische Strukturierung von SIMULINK-Schemata
untersttzt. Der Anwender kann Blcke zu Subsystemen zusammenfassen, die sich auf den
hheren Darstellungsebenen wie separate Blcke verhalten.
Der Anwender kann auch Blcke mit spezifischer Funktionalitt programmieren. Diese anwenderspezifischen Blcke knnen in der MATLAB-Programmiersprache entwickelt werden (SFunktionen).
Die vom Anwender programmierten Blcke knnen in anwenderspezifischen Blockbibliotheken zusammengefasst werden. Die Blcke dieser Bibliotheken knnen dann in neue Schemata bernommen werden.
Bei der Ausfhrung der Simulation setzt das System gewisse Standardwerkzeuge ein. Der
Anwender kann die Lsungswerkzeuge modifizieren; die in MATLAB verfgbaren Integratoren knnen hierfr herangezogen werden.
Fr die Prsentation der Ergebnisse bzw. fr deren weitere Verarbeitung stehen spezielle
Blcke zur Verfgung. Hierbei sind vor allem die grafischen Blcke fr die Anzeigen der
zeitlichen Verlufe in Form von Diagrammen hervorzuheben.

Literatur im berblick

SIMULINK , Model-based and System-based Design


The MathWorks., 2002.
HOFFMANN , J.; BRUNNER ,U.
MATLAB & Tools, Addison-Wesley, 2002.
ANGERMANN , A. ; BEUSCHEL, M. ; RAU , M.; WOHLFARTH , M
MATLAB-SIMULINK-STATEFLOW, Oldenbourg-Verlag, Mnchen, 2002

SIMULINK
5.2
5.2.1

5-3

Erzeugen eines SIMULINK-Schemas


Das Arbeitsfenster

Start von SIMULINK


SIMULINK kann ber das MATLAB-Kommandofenster mit dem Kommando
>> simulink
aktiviert werden. In der Speed-Button-Leiste befindet sich ein Schalter (s. Abschnitt 1.2), ber
den SIMULINK ebenfalls aktiviert werden kann. Nach dem Start erscheint der SIMULINK
Library Browser. Damit ist die Grundkonfiguration des Systems verfgbar.

ffnen eines Arbeitsfensters


Fr die Entwicklung eines SIMULINK-Schemas ist als erstes notwendig, ein Arbeitsfenster zu
ffnen. Der Menpunkt File des SIMULINK Library Browser stellt die dafr erforderlichen
Menpunkte bereit.
S

Es erscheint erneut ein Auswahlmen mit den Menpunkten


S
Model
Es wird ein neues Arbeitsfenster erzeugt, dieser Menpunkt ist im hier behandelten Fall zu whlen.
S
Library
Es wird eine nutzereigene Bibliothek erzeugt.
Open Es kann eine bereits existierende SIMULINK-Anwendung ausgewhlt und
geffnet werden.
New

Im Toolbar des SIMULINK Library Browser kann auch der uerste linke Schalter angeklickt
werden, um ein neues (leeres!) Arbeitsfenster, so wie es im folgenden Bild dargestellt ist, zu
erzeugen

5-4

Die Menpunkte des Arbeitsfensters


Im Folgenden werden ausgewhlte Menpunkte beschrieben:

SIMULINK

Menpunkt

Funktion

File

ber diesen Menpunkt wird ein Men, das die blichen FileOperationen enthlt, aktiviert. Dazu gehren:
S
New , Open , Close
S
Save, Save as..
S
Print, Print setup
S
Exit

Edit

ber diesen Menpunkt wird ein Men aktiviert, dessen Funktionen die Vernderung bzw. Anpassung des erzeugten Schemas untersttzen. Diese Funktionen (wie Cut, Copy, Clear) beziehen sich
dabei in der Regel auf die markierten Blcke. ber
Copy Model to Clipboard
wird das erzeugte Schema (ohne Fensterrahmen) in die Zwischenablage kopiert.

View

ber die Menpunkte des Untermens, das diesem Punkt zugeordnet ist, kann das Erscheinungsbild der Werkzeugpalette des Arbeitsfensters verndert werden. Die Zoom-Funktion wird hier ebenfalls
angeboten.

Simulation

ber die drei Menpunkte, die das zugeordnete Untermen enthlt,


wird der Ablauf eines Simulationslaufs gesteuert:
S
Start Der Simulationslauf wird gestartet
S
Stop Der Simulationslauf wird abgebrochen
S
Simulation parameters ...
Es erscheint ein Formular,
ber das die Einstellungen fr
den Lauf eingestellt werden
knnen.

Format

Es erscheint ein Men, das Funktionen fr die Anpassung des Erscheinungsbildes des Arbeitsbereichs (wie die Hintergrundfarbe
usw.) sowie evt. markierter Blcke (Linienfarbe u..) bereitstellt.
Weiterhin sind Menpunkte enthalten, die die Anzeige zustzlicher
Informationen (z.B. die Angabe der Berechnungsreihenfolge) einbzw. ausschalten.

Tools

Es erscheint ein Men, das die Aktivierung integrierter Werkzeuge


(wie z.B. den Start des Debugger) erlaubt.

Help

Es erscheint ein Men, das die unterschiedlichen Formen der


Online-Hilfe bereitstellt.

Die wichtigsten Menpunkte knnen auch ber den Toolbar erreicht werden.

SIMULINK

5-5

Das Popup-Men des Arbeitsfensters


Wenn der Mauszeiger sich im leeren Arbeitsbereich befindet und die rechte Maustaste bettigt
wird, erscheint ein Popup-Men, das eine Reihe von Menpunkten bereitstellt, ber die das
Erscheinungsbild des Arbeitsfensters (Screen Color) eingestellt werden kann, bzw. ber die der
Ablauf der Simulation (Simulation parameters ...) gesteuert werden kann.

5.2.2

Die Blockbibliothek des Systems

ffnen der Blockbibliothek


Nach dem Start des Systems erscheint das folgende Fenster mit dem SIMULINK Library
Browser:

5-6

SIMULINK

Im linken Abschnitt knnen die Untergruppen der SIMULINK-Block-Bibliothek ausgewhlt


werden; im rechten Teilfenster werden die jeweiligen Eintrge angezeigt. ber Maus-Doppelklick auf einen Eintrag im rechten Fenster kann man das zugehrige Verzeichnis ffnen. Im
oben dargestellten Bild werden im rechten Browser-Fenster die Unterverzeichnisse der
SIMULINK-Blockbibliothek angezeigt. In diesen Unterverzeichnissen sind die Blcke zu
finden, die die Grundausstattung des Systems ausmachen (s. Abschnitt 5.3.). In hnlicher Weise
sind die anderen im rechten Browser-Fenster zu findenden Abschnitte der Bibliothek strukturiert.
Um zu den konkreten Blcken zu gelangen, muss eines der im rechten Browser-Abschnitt
dargestellten Verzeichnisse geffnet werden. Das geschieht durch
S
Maus-Doppelklick auf das Symbol oder
S
Klick auf das + Kstchen oder
S
ber die Menpunktfolge View 6 Show Parameters for selected block

Im nebenstehend Bild wurde


das Unterverzeichnis fr die
zeitkontinuierlichen Modellblcke (Continuous) geffnet.
Im linken Teilfenster erscheint das geffnete Unterverzeichnis markiert.
Im rechten Teilfenster werden die verfgbaren Blcke
angezeigt. Diese knnen aus
diesem Verzeichnis heraus
in das Arbeitsfenster eingefgt werden.
Durch ein Popup-Men, das
ber die rechte Maustaste
aktiviert werden kann, wird
die Online-Hilfe fr den ausgewhlten Blocktyp verfgbar.

SIMULINK

5-7

Auswahl eines Blocks und Einfgen in das Schema


Der in das Arbeitsfenster einzufgende Block wird per Mausklick im Verzeichnis ausgewhlt
und bei gedrckter linker Maustaste in das Arbeitsfenster gezogen; in der gewnschten Position
wird die linke Maustaste gelst (Drag&Drop). Damit wird im Arbeitsfenster eine Instanz des
jeweiligen Blocktyps erzeugt. Im Folgenden wird der Sachverhalt, dass es sich bei einem Block
im Arbeitsfenster eigentlich um eine Block-Instanz handelt, nicht mehr besonders hervorgehoben; die Instanzen werden im Allgemeinen auch als Blcke bezeichnet. Jeder Block erhlt
beim Einfgen in das Schema einen Namen, der spter gendert werden kann. Der Name wird
aus der Bezeichnung des Blocktyps und einer laufenden Nummer gebildet.
Fr den ausgewhlten Blocktyp kann auch mit der rechten Maustaste ein Popup-Men erzeugt
werden. In diesem Men gibt es den Menpunkt Add to .... (in den Zeichenkettenklammern
steht der Name des geffneten Arbeitsfensters). Durch Klick auf diesen Punkt wird ebenfalls
eine Instanz des gewhlten Blocktyps in das Arbeitsfenster eingefgt.

Auswahl eines Blockes im Arbeitsfenster


Wenn ein Block als Instanz in das Arbeitsfenster bernommen wurde, reagiert er in charakteristischer Weise auf die Maus-Aktivitten. Fr alle folgenden Erluterungen wird vorausgesetzt,
dass der Block der ausgewhlte Block ist. Das wird durch einen einfachen Mausklick auf das
Blocksymbol erreicht. Der Auswahlzustand ist daran zu erkennen, dass das Blocksymbol durch
eine Umrahmung mit kleinen schwarzen Quadraten hervorgehoben wird. Der ausgewhlte
Block kann durch die Bewegung der Maus bei gleichzeitig gedrckter linker Maustaste in seiner
Position innerhalb des Arbeitsfensters verndert werden. Weiterhin werden die blockspezifischen Menpunkte des Edit-Untermens (Cut, Copy ..) fr den ausgewhlten Block aktiv.

Das Parametrier-Formular eines Blockes


Durch Doppelklick mit der linken Maustaste auf das Symbol eines Blockes im Arbeitsfenster
wird das Parametrierformular aktiviert. Dieses Formular ist fr den jeweiligen Blocktyp, als
dessen Instanz der konkrete Block anzusehen ist, charakteristisch aufgebaut. ber dieses
Formular werden die konkreten Parameter der Blockinstanz festgelegt. Im Abschnitt 5.3.
werden die Parametrierformulare fr ausgewhlte Blocktypen beschrieben.
Im Parametrierformular kann auch auf die Variablen des aktuellen MATLAB-Workspace Bezug
genommen werden.

Das Popup-Men eines Blockes


Wenn ein Block im Arbeitsfenster ber die rechte Maustaste angeklickt wird, so wird er zum
ausgewhlten Block und gleichzeitig erscheint ein Popup-Men. In diesem Men werden
Funktionen angeboten, die sich auf die Parametrierung und auf das Erscheinungsbild des
Blockes (Format, Foreground Color, Background Color) beziehen.
5.2.3

Verbinden der Blcke

Ports
Die in das Arbeitsfenster eingefgten Blcke stehen zunchst in keinem definierten Zusammenhang zu anderen Blcken. Fr die Herstellung der Verbindungen zwischen den Blcken sind
spezielle Operationen auszufhren. Zunchst ist festzustellen, dass die Blcke nach ihrem
Einfgen in das Arbeitsfenster definierte Ports besitzen. Diese werden durch Pfeile dargestellt;
durch die jeweilige Pfeilrichtung lassen sich Eingnge von Ausgngen unterscheiden. Es ist zu

5-8

SIMULINK

beachten, dass die meisten Blcke nur jeweils einen Eingang und einen Ausgang besitzen.
Welche Dimensionen die Ausgnge besitzen (Skalare, Vektoren Matrizen) hngt zum einen
vom Blocktyp und zum anderen (im Allgemeinen) von der Dimension des Eingangs ab.

Verbinden von Blcken


Um Blcke, die in das Arbeitsfenster eingefgt wurden, miteinander zu verbinden, gibt es zwei
Mglichkeiten:
S
Der Mauszeiger wird auf einen offenen Port eines Blocks bewegt; der Mauszeiger ndert
in dem Augenblick sein Erscheinungsbild (vom Pfeil zum Kreuz). Der Mauszeiger ist
nun bei gedrckter linker Maustaste auf den Zielport zu bewegen. Wenn der Port
erreicht wird, ist die linke Maustaste zu lsen. Die Herstellung der Verbindung ist an der
durchgezogenen Signalflusslinie zu erkennen. Bei dieser Art der Herstellung einer
Kopplung zwischen zwei Blcken kann die Verbindung vom Eingang zum Ausgang
oder umgekehrt hergestellt werden.
S
Der Block, dessen Ausgangsport mit dem Eingangsport eines anderen Blockes verbunden werden soll, ist mit der linken Maustaste anzuklicken. Anschlieend ist die <Strg>Taste zu drcken. Der Mauszeiger ist auf den gewnschten Block, mit dem die Kopplung herzustellen ist, zu bewegen. Wenn eine Kopplung hergestellt werden kann, ndert
der Mauszeiger sein Erscheinungsbild (vom Pfeil zum Kreuz). Mit einem Klick der
linken Maustaste wird die Verbindung hergestellt.

Manipulation der Signalflusslinien


Die Signalflusslinien knnen wie folgt in der Linienfhrung verndert werden:
S
Der Mauszeiger ist auf die gewnschte Signalflusslinie zu setzen; anschlieend ist die
linke Maustaste zu drcken.
S
Bei gedrckter linker Maustaste kann die Linienfhrung ber die Mausbewegung
verndert werden.
S
Wenn die Maustaste gelst wird, wird die dann aktuelle Linienfhrung fixiert.
Eine Signalflusslinie kann wie folgt gelscht werden:
S
Der Mauszeiger wird auf die Signalflusslinie bewegt; die Linie wird mit Klick der linken
Maustaste ausgewhlt.
S
ber die <Entf>-Taste oder den Menpunkt Clear des Popup-Mens wird die Signalflusslinie gelscht.
Wenn eine Signalflusslinie mit der rechten Maustaste ausgewhlt wird, erscheint ein PopupMen, das weitere Funktionen fr die Manipulation der Signalflusslinie bereitstellt.

Verzweigungen von Signalflusslinien


Wenn in eine Signalflusslinie ein Verzweigungspunkt eingefgt werden soll, ist wie folgt zu
verfahren:
S
Die <Strg>-Taste ist zu drcken.
S
Der Mauszeiger ist auf den Punkt der zu verzweigenden Signalflusslinie zu bewegen, an
dem die Verzweigung eingefgt werden soll.
S
Die linke Maustaste ist zu drcken; die neu entstehende Signalflusslinie ist bei gedrckter linker Maustaste auf den Eingangsport zu ziehen, mit dem die verzweigte Signalflusslinie zu verbinden ist.

5-9

SIMULINK
5.3

Ausgewhlte Blcke der SIMULINK-Bibliothek

Die folgende Auswahl orientiert sich am Gebrauch der Blcke fr Probleme aus der Regelungstechnik sowie der damit verbundenen Prozessmodellierung. Die Gliederung folgt der Struktur
des Ordners SIMULINK im SIMULINK Library Browser. In den berschriften werden die
Bezeichnungen der Unterordner in Klammern angegeben.
Fr die Blocktypen werden neben der Funktionsbeschreibung das Symbol, wie es im Browser
und im konkreten Schema erscheint, sowie das jeweilige Parametrierformular angegeben. In den
berschriften wird in Klammern die Bezeichnung des Blocktyps, wie sie im Browser erscheint,
angegeben.
5.3.1

Die Modellblcke mit zeitkontinuierlichem Verhalten (Continuous)

Differenzierer (Derivative)
Der Differenzierblock liefert als Ausgangssignal die Ableitung des Eingangssignals.
Eine spezielle Parametrierung des Blockes ist nicht erforderlich.

Integrierer (Integrator)
Der Integrierblock liefert als Ausgangssignal das Integral ber das
Eingangssignal.
Der Block kann an unterschiedliche Situationen ber das Parametrierformular angepasst werden. Das folgende Bild zeigt dieses Formular. Die
wichtigsten Eingabefelder werden im Folgenden erlutert:
External reset:
Der Nutzer kann festlegen, ob der Integrationsprozess bei Erscheinen eines
bestimmten Signals mit dem Anfangswert beginnend fortgesetzt werden soll.
Initial condition source:
In diesem Feld kann festgelegt werden,
ob der Anfangswert ber das Formular
angeben wird (internal), oder ob ein
zustzlicher Port fr den Anfangswert
vorzusehen ist (external).
Initial condition:
In diesem Feld wird der Anfangswert
fr die Integration angegeben.
Die weiteren Felder sind bei begrenzten
Ausgangssignalen von Interesse.

5 - 10

SIMULINK
Zustandsraummodell-Block (State-Space)
Dieser Blocktyp beschreibt das Verhalten eines linearen zeitkontinuierlichen bertragungsgliedes in der Zustandsraumdarstellung:

Die das Verhalten kennzeichnenden Matrizen sowie die Anfangswerte knnen ber folgendes
Parametrierformular festgelegt werden:

bertragungsfunktion (Transfer Fcn)

ber diesen Blocktyp lsst sich das Verhalten eines linearen bertragungsgliedes durch die bertragungsfunktion beschreiben. Die
bertragungsfunktion wird bei diesem Blocktyp durch Zhler- und
Nennerpolynom beschrieben. Fr die Kennzeichnung des bertragungsverhaltens mssen die Polynomkoeffizienten als Vektoren
gem der MATLAB-Konvention angegeben werden.
Im folgenden Parametrierformular werden die Koeffizienten als Vektoren in MATLAB-Notation erwartet.

5 - 11

SIMULINK

Totzeitglied (Transport Delay)


Das Ausgangssignal ist das um eine festgelegte Totzeit verschobene Eingangssignal.

Die einzelnen Felder besitzen folgende Bedeutungen:


Time delay:
In diesem Feld wird die Totzeit im
Mastab der Simulationszeit eingegeben.
Initial input:
Der in diesem Feld vorgegebene Wert
wird zwischen dem Anfangszeitpunkt
und dem durch die Totzeit markierten
Zeitpunkt angenommen.
Initial buffer size:
Dieser Parameter stellt die maximale
Speicheranforderung fr die Speicherung der Zwischenwerte dar.

bertragungsfunktion in Pol-Nullstellendarstellung (Zero-Pole)


ber diesen Blocktyp lsst sich das Verhalten eines linearen bertragungsgliedes durch die bertragungsfunktion beschreiben. Die
bertragungsfunktion wird bei diesem Blocktyp durch Nullstellen und
ihre Pole (das sind die Nullstellen des Nennerpolynoms) sowie durch

5 - 12

SIMULINK

einen Verstrkungsfaktor beschrieben. Die bertragungsfunktion nimmt damit die folgende


Form an:

Die das bertragungsverhalten kennzeichnenden Parameter knnen im folgenden Formular


festgelegt werden:

Die Eingabefelder haben folgende


Bedeutungen:
Zeros:
Die Nullstellen der bertragungsfunktion sind in Vektornotation anzugeben.
Poles:
Die Pole der bertragungsfunktion
sind in Vektornotation anzugeben.
Gain:
Die Verstrkung K ist anzugeben.

Hinweis zu den Blcken fr bertragungsfunktionen:


Die Blcke zur Darstellung des bertragungsverhaltens durch bertragungsfunktionen (ZeroPole, Tranfer Fcn) knnen auch fr Mehrgrensysteme herangezogen werden. Fr die Nullstellen sind dann Matrixausdrcke zugelassen und fr die Pole und die Verstrkung Vektorausdrcke.

5 - 13

SIMULINK
5.3.2. Modellblcke mit unstetigem Verhalten (Discontinuities)

In diesem Unterverzeichnis der SIMULINK-Bibliothek sind Blcke zu finden, die gewisse


unstetige Vorgnge nachzubilden gestatten. Hier sollen nur zwei Blcke ausgewhlt und beschrieben werden.

Schalter mit Hysterese (Relay)


Dieser Schalter liefert ein oberes oder ein unteres konstantes Ausgangssignal, je
nachdem, ob das Eingangssignal grer oder kleiner als eine vorgegebene Schranke ist. Diese Schranke kann sich fr den Einschaltvorgang von der fr den Ausschaltvorgang unterscheiden; damit kann eine Schalthysterese nachgebildet
werden.

Die Felder haben folgende Bedeutungen:


Switch on point:
Ab diesem Wert des Eingangssignals wird der On-Outputwert angenommen.
Switch off point:
Ab diesem Wert des Eingangssignals wird der off-Outputwert angenommen.
Output when on / Output when off:
Das sind die Werte am Ausgang
des Schalters, die in den betreffenden Schaltsituationen angenommen
werden.

Begrenzer (Saturation)

Der Begrenzer lsst das Eingangssignal nur in einem definierten Bereich passieren.
Wenn dieser Bereich verlassen
wird, so wird das Ausgangssignal durch den
vorgegebenen oberen bzw. unteren Grenzwert
ersetzt.
Die Blockparameter sind nebenstehender Darstellung zu entnehmen.

5 - 14

SIMULINK

5.3.3

Die Modellblcke fr zeitdiskretes Verhalten

bertragungsfunktion eines zeitdiskreten bertragungsgliedes


(Discrete Transfer Fcn)

Dieser Blocktyp gestattet die Beschreibung des bertragungsverhaltens


eines zeitdiskreten bertragungsgliedes durch seine Z-bertragungsfunktion. Dabei ist zu beachten, dass das Zhler- und das Nennerpolynom in
positiven Potenzen von z angenommen werden. Die Vektoren der
Polynomkoeffizienten werden, der MATLAB-Konvention entsprechend,
mit der hchsten Potenz beginnend angeordnet.
Im nebenstehenden Bild ist das Parametrierformular des Blocktyps dargestellt. Die Felder besitzen die folgenden Bedeutungen:
Numerator / Denominator:
In diese Felder sind die Koeffizienten des
Zhler- bzw. Nennerpolynoms einzutragen.
Sample time:
In diesem Feld ist die Abtastzeit einzugeben.
Wird in dieses Feld ein negativer Wert eingetragen, so wird die Abtastzeit des Input-Blocks
bernommen.

bertragungsfunktion eines zeitdiskreten bertragungsgliedes in Pol-NullstellenDarstellung (Discrete Zero-Pole)


Dieser Blocktyp gestattet die Beschreibung des bertragungsverhaltens
eines zeitdiskreten bertragungsgliedes durch seine Z-bertragungsfunktion. Die bertragungsfunktion wird bei diesem Blocktyp durch ihre
Nullstellen und ihre Pole sowie durch einen Verstrkungsfaktor beschrieben (s. hierzu auch Blocktyp Zero-Pole im Abschnitt 5.3.1)
Im nebenstehenden Bild ist das Parametrierformular fr den Blocktyp dargestellt. Die Bedeutungen der Eingabefelder sind quivalent zu
denen des zeitkontinuierlichen Blocktyps ZeroPole.
Sample time:
In diesem Feld ist die Abtastzeit einzugeben.
Wird in dieses Feld ein negativer Wert eingetragen, so wird die Abtastzeit des Input-Blocks
bernommen.

5 - 15

SIMULINK

bertragungsfunktion eines zeitdiskreten bertragungsgliedes in Filter-Darstellung


( Discrete Filter )

Dieser Blocktyp gestattet die Beschreibung des bertragungsverhaltens


eines zeitdiskreten bertragungsgliedes durch seine Z-bertragungsfunktion. Dabei ist zu beachten, dass das Zhler- und das Nennerpolynom mit negativen Potenzen von z angenommen werden. Die Vektoren
der Polynomkoeffizienten werden auch hier, der MATLAB-Konvention
entsprechend, mit dem grten Exponenten (das ist hier -1!) beginnend angeordnet.
Im nebenstehenden Bild ist das Parametrierformular fr den Blocktyp dargestellt.
Numerator / Denominator:
In diese Felder sind die Koeffizienten des
Zhler- bzw. Nennerpolynoms einzutragen,
wobei auf die korrekte Ordnung der Koeffizienten zu achten ist.
Sample time:
In diesem Feld ist die Abtastzeit einzugeben.
Wird in dieses Feld ein negativer Wert eingetragen, so wird die Abtastzeit des Input-Blocks
bernommen.

Zeitdiskretes Zustandsraummodell ( Discrete State-Space )

Dieser Blocktyp beschreibt das Verhalten eines linearen zeitdiskreten bertragungsgliedes in der Zustandsraumdarstellung:

Im nebenstehenden Bild ist das Parametrierformular


dargestellt.
A: , B: , C: , D:
Diese Felder nehmen die Matrizen der Zustandsraumdarstellung auf.
Initial conditions:
In diesem Feld werden die Anfangsbedingungen vorgegeben.
Sample time:
Fr die Vorgabe der Abtastzeit gelten die gleichen Regeln wie fr die anderen zeitdiskreten Blocktypen.

5 - 16

SIMULINK
Zeitdiskreter Integrierer (Discrete-Time Integrator)

Der zeitdiskrete Integrierblock liefert als Ausgangssignal das Integral ber


das Eingangssignal.
Der Block kann an unterschiedliche Situationen ber das Parametrierformular angepasst werden. Es gelten hierbei hnliche Festlegungen wie fr den
zeitkontinuierlichen Integrierblock (s. Abschnitt 5.3.1). Im folgenden Bild ist
das Parametrierformular dargestellt:
Integrator method:
In diesem Feld kann die Integrationsmethode
aus einer Pickliste ausgewhlt werden
External reset:
Der Nutzer kann festlegen, ob der Integrationsprozess bei Erscheinen eines bestimmten Signals mit dem Anfangswert beginnend fortgesetzt werden soll.
Initial condition source:
Es kann in diesem Feld festgelegt werden, ob
der Anfangswert ber das Formular angegeben wird (internal), oder ob ein zustzlicher
Port fr den Anfangswert vorzusehen ist (external).
Initial condition:
In diesem Feld wird der Anfangswert fr die
Integration angegeben.
Sample time:
Fr die Vorgabe der Abtastzeit gelten die gleichen Regeln wie fr die anderen zeitdiskreten
Blocktypen.

Speicherblock (Memory)
Der Speicherblock liefert als Ausgangssignal das Eingangssignal des vorangegangenen Zeittaktes.

Das Parametrierformular ist im nebenstehenden Bild


dargestellt. Es ist nur ein Parameter vorzugeben:
Initial condition:
In diesem Feld ist der Anfangswert vorzugeben.

5 - 17

SIMULINK

Verschiebungsblock (Unit Delay)


Dieser Blocktyp liefert als Ausgangssignal das um die festgelegte Abtastzeit
verschobene Eingangssignal (entspricht der Multiplikation des Eingangssignals mit z -1 im Z-Bereich)

Im nebenstehenden Bild ist das Parametrierformular fr den Blocktyp dargestellt.


Initial condition:
In diesem Feld ist der Anfangswert vorzugeben.
Sample time:
Fr die Vorgabe der Abtastzeit gelten die
gleichen Regeln wie fr die anderen zeitdiskreten Blocktypen.

Halteglied 0-ter Ordnung (Zero-Order Hold)


Dieser Blocktyp realisiert das Halteglied 0-ter Ordnung. Das Eingangssignal wird erfasst und ber die Dauer der Abtastzeit gehalten; das Ausgangssignal ist dieser gehaltene Signalwert.
Zur Parametrierung ist nur die Abtastzeit vorzugeben bzw. zu bernehmen;
es gelten die gleichen Regeln wie fr die anderen zeitdiskreten Blocktypen.

<

Beispiel

Halteglied 0. Ordnung als Abtaster

Das SIMULINK-Schema beschreibt diese Abtastung eines Sinus-Signals. Im Scope-Fenster


wird das abgetastete Signal dargestellt.

5 - 18

SIMULINK

5.3.4. Blcke fr Mathematische Operationen (Math Operations)


Im Folgenden werden ausgewhlte Modellblcke des Unterverzeichnisses Math Operations
beschrieben; die Funktionalitt der Blcke dieser Gruppe erschliet sich in der Regel aus der
Bezeichnung des Blocktyps.

Block zur Erfllung algebraischer Bedingungen (Algebraic Constraint)


Dieser Blocktyp realisiert als Ausgangszustand das Signal, das sich
aus der Bedingung ergibt, dass das Eingangssignal den Wert Null
annimmt. Mit diesem Blocktyp lassen sich algebraische Gleichungen
mit Systemen von Differentialgleichungen verbinden.

Im Parametrierformular ist lediglich die


Anfangsschtzung fr die Lsung vorzugeben (Standardvorgabe: Null).

<
Beispiel
Das folgende SIMULINK-Schema lst das lineare Gleichungssystem:

5 - 19

SIMULINK

Skalarer Verstrker (Gain) / Matrix-Verstrker (Matrix Gain)

Bei diesen beiden Blocktypen wird das Ausgangssignal aus dem mit einem
Verstrkungsfaktor bzw. einer Verstrkungsmatrix multiplizierten Eingangssignal bestimmt. Beide Blocktypen lassen sich durch die Parametrierung
ineinander berfhren. Obwohl die beiden Typen als separate Typen in der
Bibliothek enthalten sind, handelt es sich also um unterschiedlich voreingestellte Versionen eines gemeinsamen Grundtyps.
Im folgenden Bild ist das Parametrierformular fr diese Blocktypen dargestellt:
Die Eingabefelder besitzen folgende
Bedeutungen:
Gain:
In diesem Feld sind der Verstrkungsfaktor bzw. die Verstrkungsmatrix
anzugeben.
Multiplication:
In diesem Feld wird die konkrete Ausfhrung der Verstrkung eingestellt. In
der folgenden Tabelle sind die Eintrge der Pickliste dieses Feldes und
die zugehrigen Funktionen angegeben.
Eintrag der Pickliste

Beschreibung der Funktion

Element-wise (K.*u)

Das Eingangssignal (Skalar, Vektor) wird elementweise mit K


multipliziert.

Matrix (K*u)

Das Eingangssignal wird in der angegebenen Weise mit der


Verstrkungsmatrix multipliziert; der Input ist also der zweite
Operand.

Matrix (u*K)

Das Eingangssignal wird in der angegebenen Weise mit der


Verstrkungsmatrix multipliziert; der Input ist hierbei der erste
Operand.

Matrix (K*u)(u vector)

Das Eingangssignal wird in der angegebenen Weise mit der


Verstrkungsmatrix multipliziert; Eingang- und Ausgangssignal sind Vektoren.

Als Eingangssignale knnen sowohl Skalare als auch Vektoren bzw. Matrizen auftreten. Der Typ
des Ausgangssignals hngt somit vom Typ des Eingangssignals und vom Typ der gewhlten
Verknpfung ab.

5 - 20

SIMULINK
Block fr Standardfunktionen (Math Function)
Der Block liefert als Ausgangssignal den Wert der gewhlten Standardfunktion fr das Argument, das durch das Eingangssignal gegeben ist.
Die Anzahl der Eingnge folgt aus der Anzahl der Argumente der gewhlten
Standardfunktion (pow hat z.B. zwei Eingnge) .
Im folgenden Bild ist das Parametrierformular des Blocktyps angegeben:
Die einzelnen Datenfelder besitzen
folgende Bedeutung:
Function:
In dieser Pickliste ist der Funktionstyp
auszuwhlen.
Output signal type:
In dieser Pickliste ist der gewnschte
Typ des Ausgangssignals auszuwhlen.
Die sich fr die einzelnen Funktionen
ergebenden Mglichkeiten sind der folgenden Tabelle zu entnehmen:

Block fr trigonometrische Standardfunktionen (Trigonometric Function)

Der Block liefert als Ausgangssignal den Wert der gewhlten trigonometrischen Standardfunktion fr das Argument, das durch das Eingangssignal
gegeben ist.
Das Parametrierformular hat eine analoge Struktur wie das fr die Standardfunktionen. Folgende Funktionen werden im Feld Function angeboten:
sin, cos, tan,
asin, acos, atan, atan2,
sinh, cosh, tanh

5 - 21

SIMULINK

Minimum/Maximum-Auswahl (MinMax)
Mit Hilfe dieses Blocktyps lassen sich Minimum oder Maximum
2.
der Komponenten eines Signalvektors oder
3.
der Eingangssignale, wenn mehrere anliegen
bestimmen.
Im folgenden Bild ist das Parametrierformular dargestellt:

Die Eingabefelder haben folgende Bedeutungen:


Function:
In diesem Feld ist einzustellen, ob das Minimum oder das Maximum zu bestimmen ist.
Number of input ports:
In diesem Feld ist anzugeben, wie viele Eingnge der Block haben soll.

Summierer (Sum)

Dieser Block liefert als Ausgangssignal die Summe der Eingangssignale.


Die Darstellung kann zwischen Kreis und Rechteck umgeschaltet werden.
Die Anzahl der Eingnge kann parametriert werden. Die Vorzeichen der
Summanden knnen ebenfalls parametriert werden, so dass mit diesem
Blocktyp auch die Differenzbildung realisiert werden kann.
Im folgenden Bild ist das Parametrierformular dargestellt:

Die Eingabefelder besitzen folgende Bedeutungen:


Icon shape:
In dieser Pickliste kann man das Erscheinungsbild des Blocksymbols einstellen.
List of signs:
In diesem Feld kann man
S
die Vorzeichenfolge der Eingnge angeben oder
S
ber eine ganze Zahl die Anzahl der
Summiereingnge angeben (wenn diese
Zahl Eins ist, werden die Komponenten
des Eingangsvektors addiert).

5 - 22

SIMULINK
Polynomfunktion (Polynomial)
Das Eingangssignal wird als Argument der durch den Block definierten
Polynomfunktion interpretiert; das Ausgangssignal ergibt sich als zugehriger Funktionswert. Das Polynom wird durch seinen Koeffizientenvektor definiert, wobei gem MATLAB-Konvention die Koeffizienten von links nach rechts mit fallender Potenz angeordnet werden.
Im folgenden Bild ist das Parametrierformular dargestellt:
.
Es gibt nur das Eingabefeld
Polynomial coefficients:
In diesem Feld ist der Vektor der Polynomkoeffizienten einzutragen.

Rundungsfunktion (Rounding Function)


Das Ausgangssignal ergibt sich gem der ausgewhlten Rundungsfunktion als der ganzzahlige Teil des Eingangssignals.
Im folgenden Bild ist das Parametrierformular dargestellt:

Function:
In diesem Feld ist die anzuwendende
Rundungsfunktion auszuwhlen.
In der folgenden Tabelle sind die Mglichkeiten angegeben:

Feld

Funktion

floor

Es wird auf die nchste ganze Zahl gerundet, die kleiner ist als der Eingangswert.

ceil

Es wird auf die nchste ganze Zahl gerundet, die grer ist als der Eingangswert.

round

Es wird auf die ganze Zahl gerundet, die dem Eingangswert am nchsten liegt.

fix

Es wird der ganzzahlige Teil des Eingangssignals bernommen.

5 - 23

SIMULINK
5.3.5. Blcke fr Signalverzweigungen (Signal Routing)

Multiplexer (Mux)

Eine Multiplexer fasst mehrere Eingangssignale zu einem Ausgangssignal-Vektor


zusammen. Als Eingangssignale knnen skalare oder vektorielle Signale auftreten.
Die Anordnung der Vektorkomponenten folgt der Reihenfolge der Ports am Eingang des Multiplexers.
Dieser Blocktyp erffnet die Mglichkeit, fr die Blocktypen, die EingangssignalVektoren zulassen, diese Vektoren flexibel zusammenstellen zu knnen.
Im folgenden Bild ist das Parametrierformular dargestellt:
Die Eingabefelder besitzen folgende
Bedeutungen:
Number of inputs:
In diesem Feld kann man die Anzahl der
Eingnge als ganze Zahl oder die Liste
der Namen der Eingnge eingeben.
Display option:
ber die Pickliste kann man das Erscheinungsbild des Blocks einstellen.

De-Multiplexer (Demux)
Dieser Blocktyp ist der zum Multiplexer inverse Typ. Ein Eingangssignalvektor
wird in seine Komponenten zerlegt; diese Komponenten werden als separate
Ausgangssignale bereitgestellt. Dabei knnen die Ausgangssignale skalare Signale
oder Signalvektoren sein.
Im folgenden Bild ist das Parametrierformular dargestellt:

Number of outputs:
In diesem Feld werden Anzahl und
Struktur der Ausgangssignale festgelegt.
Wenn die Eintragung mit der Anzahl
der Eingangssignal-Komponenten
bereinstimmt, so werden entsprechend viele skalare Ausgangssignale erzeugt. Die Anzahl der Komponenten bei vektoriellen Ausgangssignalen kann als Dimensionsvektor (s.
Beispiel) vorgegeben werden.

5 - 24

SIMULINK
Manuell zu bedienender Schalter (Manual Switch)
Der Schalter gestattet zwischen zwei Eingangssignalen umzuschalten. Das
jeweils aktive Eingangssignal wird zum Ausgangssignal. Die Umschaltung
erfolgt nach Doppelklick mit der linken Maustaste auf das Block-Symbol; die
Umschaltung ist auch whrend eines Simulationslaufs mglich. Eine Parametrierung ist nicht erforderlich.

Mehrport-Schalter (Multi-Port Switch)

Mit diesem Schalter kann ber einen Steuereingang zwischen beliebig vielen
Eingangssignalen umgeschaltet werden. Das jeweils ausgewhlte Eingangssignal wird dann zum Ausgangssignal.
Der erste Eingang ist der Steuereingang. Dieser muss einen ganzzahligen Wert
liefern. Der Steuereingang
wird als Index zur Auswahl
der Eingangssignale gewertet; es wird also das Eingangssignal durchgeschaltet, dessen Index
ber den Steuereingang angelegt wird.
Im nebenstehenden Bild ist das Parametrierformular dargestellt:
Number of inputs:
Es wird die Anzahl der Eingnge angegeben.

Bedingter Schalter (Switch)

Der Schalter gestattet zwischen zwei Eingangssignalen umzuschalten. Das jeweils aktive
Eingangssignal wird zum Ausgangssignal. Die Umschaltung erfolgt zwischen dem ersten und
dem dritten Eingangssignal in Abhngigkeit davon, ob das zweite Eingangssignal eine vorgegebene Bedingung erfllt oder nicht. Ist die Bedingung erfllt,
wird der erste Eingang durchgeschaltet, sonst der zweite. Im folgenden Bild ist
das Parametrierformular dargestellt:
Criteria for passing first input:
In diesem Feld wird die Bedingung eingestellt. In den Bedingungen knnen Schranken
als numerische Werte eingefhrt werden.
Threshold:
In diesem Feld ist der konkrete Werte der
Schranke, die in der Bedingung auftreten
kann, festzulegen.

5 - 25

SIMULINK
5.3.6. Signalsenken-Blcke (Sinks)

In diesem Unterverzeichnis sind die Anzeigeblcke und die Abschlussblcke fr Signalflusslinien zusammengefasst. Diese Blcke haben gemeinsam, dass sie nur Eingangssignale besitzen.

Numerisches Display (Display)


ber Blcke dieses Typs knnen die Momentanwerte des Eingangssignals in numerischer Form dargestellt werden. Das Anzeigeformat ist parametrierbar. Im folgenden Bild ist das Parametrierformular dargestellt:

Die Felder besitzen folgende Bedeutungen:


Format:
In diesem Feld wird das Format der numerischen Anzeige eingestellt.
Decimation:
In diesem Feld wird angegeben, aller wie
vieler Simulationstakte die Anzeige aufgefrischt werden soll.
Sample time:
Bezglich der Taktzeit gelten die bei zeitdiskreten Blcken eingefhrten Regelungen.

Diagrammblock (Scope, Floating Scope)

Dieser Blocktyp realisiert die grafische Anzeige von Signalverlufen. Dabei


kann die Zuordnung der anzuzeigenden Signale durch die Signalflusslinie fest
vorgegeben werden (Blocktyp Scope) oder variabel vor einem Simulationslauf
durch Auswahl festgelegt werden (Blocktyp Floating Scope). Beide Formen
lassen sich (durch das Setzen/Rcksetzen eines Auswahlschalters) ineinander
berfhren. Das Anzeigefenster wird durch Doppelklick mit der linken Maustaste auf das Blocksymbol geffnet. Das Fenster hat folgendes Erscheinungsbild:

5 - 26

SIMULINK

Toolbar des Anzeigefensters


Das Anzeigefenster besitzt ein Toolbar, ber dessen Schalter verschiedene Funktionen aktiviert
werden knnen. Im oben dargestellten Bild sind die Schalter weitgehend erklrt. In den folgenden Erluterungen werden die Schalter bercksichtigt, die zur Aktivierung spezieller Formulare
fhren.

Diagrammfarben
Wenn ein Signalvektor zur Anzeige gebracht werden soll, werden den einzelnen Komponenten
unterschiedliche Farben zugeordnet. Dabei wird folgende Reihenfolge eingehalten:
Komponente

Farbe

gelb

violett

zyanblau

rot

grn

6
dunkelblau
Wenn mehr als sechs Komponenten angezeigt werden sollen, wiederholt sich dieser Zyklus.

Achsenskalierung
!
Skalieren ber das Skalierformular
Durch Anklicken der Achsen mit der rechten Maustaste wird das nebenstehende Formular geffnet.
In die Min/max-Felder sind die unteren/oberen
Achsenbegrenzungen einzutragen.
Im Feld Title ist die Zeichenkette
%<SignalLabel>
durch die Achsenbezeichnung zu ersetzen.

!
Skalieren ber die Schalter des Toolbar
Jedes Diagrammfenster besitzt ein Toolbar, ber dessen Schalter bestimmte Funktionen
aktiviert werden knnen. Dazu gehren auch Skalierfunktionen; die entsprechenden
Schalter sind (als Ausschnitt des Toolbar) im folgenden Bild dargestellt:.

ber den ersten Schalter wird die Zoomfunktion fr einen rechteckigen Bereich akti-

SIMULINK

5 - 27

viert. Mit dem Mauszeiger kann im Diagrammbereich ein beliebiger Bereich markiert
werden, auf den dann die Diagrammdarstellung vergrert wird.
Wenn der zweite Schalter aktiv ist, kann ein Bereich in Richtung der Zeitachse mit dem
Mauszeiger markiert werden; dieser Bereich wird der Darstellung zu Grunde gelegt.
Wenn der dritte Schalter aktiv ist, kann ein Bereich in Richtung der Ordinate mit dem
Mauszeiger markiert werden; dieser Bereich wird der Darstellung zu Grunde gelegt.
Mit Anklicken des vierten Schalters wird die automatische Skalierung hergestellt.; die
Achsenskalierung wird so gewhlt, dass die grafischen Verlufe optimal den Diagrammbereich ausfllen.

Parametrierformular
Wenn man den nebenstehend abgebildeten Schalter des Toolbar anklickt, erscheint das
unten dargestellte Parametrierformular fr ein Diagrammfenster. Das Formular hat
zwei Seiten: General und Data history

Nebenstehend ist das Formular General abgebildet. Die Felder besitzen folgende Bedeutungen:
Number of axes:
In diesem Feld wird die Anzahl der Ordinatenachsen angegeben. Das Diagrammfenster
wird in eine entsprechende Anzahl von Diagrammen zerlegt. Diese haben alle die gleiche Zeitachse aber unterschiedliche Ordinaten. Es ist zu beachten, dass die Anzahl der
Achsen mit der Anzahl der Scope-Ports bereinstimmen muss.
Time range:
In diesem Feld wird der Zeitbereich modifiziert. Wenn die Zeichenkette auto eingetragen wird, wird der Standard-Zeitbereich der Simulation angenommen.
Tick labels:
ber dieses Feld kann die Achsenbeschriftung ein- oder ausgeschaltet werden.
Sampling:
In diesem Feld kann eingestellt werden, ob alle berechneten Werte dargestellt werden sollen
oder ob nur jeder n-te Wert darzustellen ist. Im letzteren Fall ist Decimation in der Pickliste
auszuwhlen und der Faktor n ist im benachbarten Feld anzugeben. Sollen alle Werte dargestellt
werden, ist in diesem Feld Sample time auszuwhlen.
floating scope:
Wenn dieser Schalter gesetzt wird, so wird das Anzeigegert zum Floating Scope deklariert.
Umgekehrt kann durch Rcksetzen der Typ Scope eingestellt werden.
Im folgenden Bild ist das Formular Data history dargestellt:

5 - 28

SIMULINK
Dieses Formular dient der Steuerung der
Menge der gespeicherten Daten.
Limit data points to last:
Wird dieser Schalter gesetzt, so werden nur
die letzten n Datenpunkte zur Anzeige gebracht; der Parameter n wird im benachbarten
Feld angegeben.
Save data to workspace:
Wird dieser Schalter gesetzt, so werden die
Daten im Workspace unter dem dann anzugebenden Namen abgelegt. In diesem Falle sind
auch die folgenden Eingabefelder relevant:

Variable name:
Format:

Der Name der Variablen, unter der die Ergebnisse abzulegen sind, wird
angegeben.
In diesem Feld kann die Art der Speicherung gewhlt werden. Drei
Formate sind vorgesehen:
Array:
Die Verlufe werden im Matrix-Format abgespeichert.
Structure with time: Die Verlufe werden in einer Struktur abgespeichert; die Zeit wird in einem Datenfeld abgelegt.
Structure:
Die Verlufe werden in einer Struktur abgespeichert; die Zeit wird nicht abgelegt.

Signal-Selektion (bei Floating Scope)


Fr den Fall, dass der Diagrammblock als Floating Scope betrieben wird, sind die Zuordnungen
zwischen dem Block und den anzuzeigenden Signalverlufen vor einem Simulationslauf
festzulegen. Dafr gibt es ein separates Formular, das ber das Popup-Men im Diagrammfenster zu aktivieren ist; der Menpunkt hat die Bezeichnung Signal selection. Das Formular hat
die im folgenden Bild dargestellte Struktur:

5 - 29

SIMULINK

Im linken Teilfenster wird die Modellhierarchie, die die evt. vorhandene Schachtelung der
Modellblcke darstellt (im Beispiel gibt es nur eine Ebene) angezeigt. Es ist die gewnschte
Modellebene auszuwhlen.
Im rechten Teilfenster werden die Signale angezeigt, die fr eine Anzeige im Diagramm zur
Auswahl stehen. Durch das Setzen der Auswahlschalter werden die darzustellenden Signale
gekennzeichnet. In der hinter List contents: erscheinenden Pickliste kann die Liste der angebotenen Signale gefiltert werden. Die bezglich der einzelnen Signale darzustellenden Details lassen
sich ber die Schaltelemente steuern.

XY-Diagrammblock (XY Graph)

Dieser Blocktyp gestattet


die Darstellung einer
Funktion, wobei sowohl
Abszissen als auch Ordinate durch Eingangssignale vorgegeben werden. Das Ergebnisdiagramm wird automatisch erzeugt und ist in
seinem Format praktisch vorgegeben. Im
nebenstehenden Bild ist das Parametrierformular eines XY-Diagrammblocks dargestellt.
Die Bedeutungen der Eingabefelder erklren sich aus den Beschriftungen, so
dass hier nicht weiter darauf eingegangen
werden muss.

Stop-Block (Stop Simulation)


Dieser Block fhrt zum Abbruch der Simulation, wenn sein Eingang einen
Wert verschieden von Null aufweist. Wenn der Eingang ein Signalvektor ist,
so reicht es fr den Abbruch der laufenden Simulation aus, dass eine Komponente verschieden von Null ist.

Abschlussblock (Terminator)
Dieser Blocktyp ist dann ntzlich, wenn Signalflusslinien auftreten, die keinen
Abschluss als Eingangssignale anderer Blcke finden. Diese offenen Signalflusslinien erzeugen bei der Simulation eine Warnung. Durch Abschluss mit
einem Terminator lassen sich diese Meldungen unterdrcken.

5 - 30

SIMULINK
Speichern in eine Datei (To File)
Die Eingangssignalwerte werden als Matrix in ein MAT- File geschrieben. Die Matrix ist wie folgt strukturiert:

Im nebenstehenden
Bild ist das Parametierformular dargestellt:
Filename:
Name der Datei, in die die Matrix gespeichert werden soll.
Variable name:
Name der Matrix, in die die Daten geschrieben werden.
Decimation:
In diesem Feld kann angegeben werden,
aller wie vieler Takte die Werte gespeichert werden sollen.

Schreiben in den Workspace (To Workspace)


Dieser Blocktyp realisiert die bertragung des Eingangsvektors in den
Workspace. Die Darstellung kann dabei in unterschiedlichen Formaten
erfolgen. Das Parametrierformular ist im folgenden Bild dargestellt:

Variable name:
Unter dem hier eingetragenen Namen
wird der Eingangsvektor des Blocks im
Workspace abgelegt.
Limit data points to last:
Liegen mehr Datenstze vor, als in diesem
Feld angegeben, so werden nur die letzten
n Stze bertragen (n ist der Eintrag im
Feld).
Die Felder Decimation: und Save format:
sind in ihren Bedeutungen den entsprechenden Feldern des Data history-Formulars des Diagrammblocks quivalent.

5 - 31

SIMULINK
5.3.7. Signalquellen-Blcke (Sources)

Block zur Erzeugung eines weien Rauschsignals (Band-Limited White Noise)


Mit diesem Blocktyp lsst sich ein Signal erzeugen, das nherungsweise dem
Modell des weien Rauschens folgt. Es wird eine Zufallsfolge erzeugt, die den
Korrelationshorizont bercksichtigt. Fr das ideale weie Rauschen hat
dieser den Wert Null. Da sich das technisch nicht realisieren lsst, wird der
Horizont zwar endlich aber sehr viel kleiner als die kleinste Zeitkonstante gewhlt.
Noise power:
Dieser Parameter beschreibt die
konstante Leistungsdichte des Signals.
Sample time:
Dieser Parameter definiert den
Korrelationshorizont. Er sollte wie
folgt gewhlt werden:

Uhrzeit-Block (Clock)
Dieser Blocktyp liefert als Output die Simulationszeit. Es ist ntzlich fr Blcke, die die Simulationszeit als Eingangssignal bentigen.
Im folgenden Bild ist das Parametrierformular dargestellt:

Display time:
Ist der Schalter gesetzt, so wird im
Block die aktuelle Simulationszeit
angezeigt.
Decimation:
Der Faktor in diesem Feld bestimmt, aller wie vieler Takte die
Zeit aktualisiert wird.

Digitaluhr-Block (Digital Clock)


Dieser Blocktyp liefert die Simulationszeit in einem durch den Parameter
Sample time im Parametrierformular festgelegten Zeitraster.

5 - 32

SIMULINK
Konstanten-Block (Constant)
Mit diesem Blocktyp werden Konstanten erzeugt. Es knnen Skalare, Vektoren
und Matrizen definiert werden. Im folgenden Bild ist das Parametrierformular
dargestellt.

Constant value:
In diesem Feld wird der Wert der Konstanten angegeben. Die Darstellung bestimmt den Typ der Konstanten.
Interpret vector parameters as 1-D:
Ist dieser Schalter gesetzt, wird der Inhalt von Constant value wie ein eindimensionales Feld behandelt.

Rampenfunktion-Block (Ramp)
Durch diesen Blocktyp lassen sich Rampenfunktionen erzeugen. Das Parametrierformular ist im folgenden Bild dargestellt:

Slope:
Dieser Parameter gibt den Anstieg der
Geraden an.
Start time:
Dieser Parameter markiert den Startzeitpunkt, mit dem der lineare Anstieg des
Ausgangssignals beginnt.
Initial output:
Dieser Parameter gibt den Anfangswert
das Ausgangssignals an.

Leerblock (Ground)
Mitunter besitzen Blcke Eingangsports, die fr ein aktuelles Problem nicht
bentigt werden. Diese offenen Ports verursachen Warnungen zur Laufzeit.
Sollen diese vermieden werden, sind diese Ports mit einem Block des Leerblocktyps zu verbinden. Dieser Block erzeugt Signale mit dem konstanten
Wert Null, wobei das Format des Eingangsports vom Leerblock realisiert
wird.

5 - 33

SIMULINK

Sprungfunktions-Block (Step)
Dieser Blocktyp dient der Realisierung von Sprungfunktionen. Im folgenden
Bild ist das Parametrierformular dargestellt:

Step time:
Dieser Parameter gibt an, zu welchem Zeitpunkt
der Sprung ausgefhrt werden soll.
Initial value:
Dieser Parameter beschreibt den Wert des Ausgangssignals vor dem Sprung.
Final value:
Dieser Parameter beschreibt den Wert des Ausgangssignals nach dem Sprung

Sinusfunktions-Block (Sine Wave)


Dieser Blocktyp realisiert ein Ausgangssignal, das einer Sinus-Funktion folgt:

Die Parameter werden im Zusammenhang mit dem Parametrierformular, das


im folgenden Bild dargestellt ist, erlutert:
Sine type:
Dieser Parameter bestimmt die Art der Funktionsberechnung.
Amplitude:
Dieser Parameter spezifiziert den Wert von A.
Bias:
Dieser Parameter spezifiziert den Wert von b.
Frequency:
Dieser Parameter spezifiziert den Wert von T.
Phase:
Dieser Parameter spezifiziert den Wert von N.
Sample time:
Dieser Parameter ist nur fr den Berechnungsmodus Sample-based von Bedeutung. Fr zeitkontinuierliche Probleme im Time-based-Mode
wird er zu Null gesetzt.

5 - 34

SIMULINK
Block zur Erzeugung normalverteilter Zufallszahlen (Random Number)
Blcke dieses Typs erzeugen normalverteilte Zufallszahlen. Das Parametrierformular ist im folgenden Bild dargestellt:

Mean:
In diesem Feld wird der Erwartungswert der
normalverteilten Zufallsgre vorgegeben.
Variance:
In diesem Feld wird die Varianz der normalverteilten Zufallsgre vorgegeben.
Initial seed:
Hier wird der Anfangswert der normalverteilten Folge vorgegeben.

Block zur Erzeugung gleichverteilter Zufallszahlen (Uniform Random Number)


Blcke dieses Typs erzeugen gleichverteilte Zufallszahlenfolgen. Das Parametrierformular ist im folgenden Bild dargestellt:

Minimum: / Maximum:
In diesen Feldern werden die Grenzen des
Intervalls angegeben, innerhalb dessen die
Werte der gleichverteilten Zufallsgre liegen
sollen.
Initial seed:
Dieser Parameter beschreibt den Anfangswert,
mit dem die Zufallsfolge beginnt.

Signalgenerator-Block (Signal Generator)


Blcke dieses Typs knnen fr die Erzeugung periodischer Signale, die unterschiedlichen Klassen angehren knnen, eingesetzt werden.
Im folgenden Bild ist das Parametrierformular dargestellt:

5 - 35

SIMULINK
Wave form:
ber diese Pickliste kann die Signalform ausgewhlt werden. Folgende Eintrge sind vorhanden:
sine
Es wird ein sinusfrmiges Signal erzeugt.
square
Es werden angenherte
Rechteckimpulse erzeugt.
sawtooth
Es wird ein sgezahnfrmiges Signal erzeugt
Amplitude: /Frquency:
Diese Parameter spezifizieren Amplitude und Frequenz des Ausgangssignals.
ber das Feld Units kann eingestellt
werden, ob die Frequenz oder die Kreisfrequenz vorgegeben werden soll.

Lesen aus einer Datei (From File)


Dieser Blocktyp ist das Gegenstck zum Blocktyp Schreiben in
eine Datei. Er realisiert das Lesen einer Datenmatrix aus einem
MAT-File. Die Eintrge in der Datenmatrix beschreiben die Werte
der Ausgangssignale. Die Datenmatrix muss wie folgt aufgebaut

sein:

Im nebenstehenden Bild ist das


Parametrierformular dargestellt. Es
muss lediglich der Name der Datei
angegeben werden.

Lesen vom Workspace (From Workspace)

Dieser Blocktyp ist das Gegenstck zum Blocktyp Schreiben in den


Workspace. Die Daten, die in unterschiedlichen Formaten bereitgestellt werden knnen, werden aus dem Workspace bertragen; sie
bilden die Ausgangssignale des Blockes. Sollen Matrixdaten geladen
werden, so mssen sie als Struktur bereitgestellt werden, wobei das erste Datenfeld die Zeit und

5 - 36

SIMULINK

das zweite die Daten fr den jeweiligen Zeitpunkt enthlt. Fr skalare oder vektorielle Ausgangssignale kann das Feld- oder das Strukturformat genutzt werden.
Im folgenden Bild ist das Parametrierformular dargestellt:
Data:
In diesem Feld wird der Name der zu
bertragenden Datenstruktur, den diese
im Workspace hat, angegeben. Angenommen, es gibt im Workspace einen
Spaltenvektor mit den Zeitpunkten T
und einen korrespondierenden Signalvektor U, so wre in diesem Feld [T,U]
einzutragen.
Interpolate data:
Ist dieser Schalter gesetzt, so wird zwischen den Signalsttzstellen interpoliert,
wenn zur Simulationszeit Zwischenwerte bentigt werden. Ist der Schalter nicht
gesetzt, so wird der nchstgelegene Zeitpunkt als Nherung herangezogen.
Form output after final data value by:
Aus dieser Pickliste ist die Methode
auszuwhlen, die anzuwenden ist, wenn
die Simulationszeit den vorgegebenen
letzten Zeitpunkt berschreitet.
Die Eintrge und ihre Bedeutungen sind der folgenden Tabelle zu entnehmen:
Elemente der Liste

Funktionen

Extrapolation

Von den letzten Werten ausgehend wird der weitere


Signalverlauf extrapoliert.

Setting to zero

Die Signalwerte werden auf Null gesetzt.

Holding final value

Die letzten Signalwerte werden festgehalten.

Cyclic repetition

Die Signalverlufe werden zyklisch wiederholt.

SIMULINK

5 - 37

5.3.8. Nutzerdefinierte Blcke (User-Defined Functions)

Nutzerdefinierte Funktion (Fcn)

Mit diesem Blocktyp knnen spezifische Funktionen, die die Verknpfung


zwischen Ein- und Ausgangssignal beschreiben, definiert werden. Diese
Beschreibung basiert auf den Elementen der Programmiersprache C. Als
Eingangssignale sind Skalare, die in den Ausdrcken mit u bezeichnet
werden mssen, oder Vektoren zugelassen, deren Komponenten in den
Ausdrcken mit u(1), u(2) ... zu bezeichnen sind. Das Ausgangssignal ist in
jedem Falle ein Skalar. Da die arithmetischen Operatoren in C und in MATLAB weitgehend in
Syntax und Semantik bereinstimmen, es jedoch gewisse Unterschiede gibt, sollte man die
folgenden, dem Handbuch entnommenen Originalhinweise beachten:

Das Parametrierformular ist im folgenden Bild dargestellt:

Expression:
In dieses Feld ist der Ausdruck,
der die Berechnung des Ausgangssignals aus den Eingangssignalen beschreibt, einzutragen.

5 - 38

SIMULINK
Nutzerdefinierte MATLAB-Funktion (MATLAB Fcn)

Mit diesem Blocktyp knnen spezifische Funktionen, die die Verknpfung zwischen Ein- und Ausgangssignal beschreiben, definiert
werden. Diese Beschreibung basiert auf den Elementen der Programmiersprache MATLAB. Als Eingangssignale sind Skalare, die in den
Ausdrcken mit u bezeichnet werden mssen, oder Vektoren zugelassen, deren Komponenten in den Ausdrcken mit u(1), u(2) ... zu
bezeichnen sind. Die Dimension des Ausgangssignals wird im Parametrierformular festgelegt;
dieses Formular ist im folgenden Bild dargestellt:

MATLAB function:
In diesem Feld ist der MATLABAusdruck anzugeben. Wenn der Ausdruck kein Argument enthlt, wird
das (dann notwendig skalare) Eingangssignal angenommen.
Output dimension:
In diesem Feld ist die Dimension des
Ausgangssignals anzugeben. Wenn
die Output-Dimension gleich der
Input-Dimension sein soll, ist -1 anzugeben.
Output signal type:
In der Pickliste kann der Datentyp des Output-Signals gewhlt werden. Wird in diesem Feld
auto eingetragen, so wird der Typ des Input-Signals fr das Output-Signal bernommen.

5 - 39

SIMULINK
5.4
5.4.1

Start und Verfolgung eines Simulationslaufs


Der Menpunkt Simulation

Im folgenden Bild ist ein SIMULINK-Arbeitsblatt dargestellt, bei dem der Menpunkt Simulation aufgeblttert wurde.

Es ist zu erkennen, dass es drei Menpunkte gibt:


S
S
S

Start:
Stop:
Simulation parameters ...:

Die Simulation wird gestartet.


Die Simulation wird abgebrochen
Es wird ein im Folgenden noch zu beschreibendes Parametrierformular angezeigt.

Im Toolbar sind fr die ersten beiden Funktionen auch Schalter verfgbar. Im nebenstehenden
Bild ist der Ausschnitt der Werkzeugleiste dargestellt, der diese Schalter
enthlt. Der linke Schalter ist der Start-Schalter und der rechte der StopSchalter.
Wenn die Simulation luft, so ndert der Start-Schalter seine Funktion; er
wird zum Pause-Schalter. Das wird dadurch angezeigt, dass das Symbol
zu zwei senkrechten Balken verndert wird. Wenn man den Pauseschalter bettigt, so wird die
Simulation angehalten, kann aber jederzeit ber den Start-Schalter fortgesetzt werden.

5 - 40
5.4.2

SIMULINK
Das Formular fr die Simulationsparameter

ber den Menpunkt Simulation parameters knnen verschiedene Einstellungen, die sich auf
die Ausfhrung der Simulation beziehen, verndert werden. Das Formular hat vier Seiten.

Rahmenbedingungen der Simulation (Solver)


Wie aus der nebenstehenden Abbildung zu erkennen ist, gestattet
diese Formularseite die Einstellung
der Rahmenbedingungen eines Simulationslaufs, insbesondere die
S
Vorgabe des Zeitintervalls,
S
Einstellung des Integrationsverfahrens,
S
Vorgabe von Parametern fr
das Integrationsverfahren.
Wenn sich in einem Feld der Eintrag auto befindet, so wird der Parameter vom System vorgegeben.

Datenaustausch mit dem Workspace (Workspace I/O)


In diesem Formular kann die Kommunikation mit dem Workspace parametriert werden. Es sind drei Bereiche zu erkennen:
Load from workspace
Durch die Checkboxes und die Eingabefelder kann die bernahme von
Daten aus dem Workspace spezifiziert werden.
Save to workspace
Durch die Checkboxes und die Eingabefelder kann die bertragung von
Daten in den Workspace spezifiziert
werden. Wenn der Schalter States
gesetzt ist, werden alle Signale bertragen.

Save options
Durch die Checkboxes und die Eingabefelder knnen die Datenformate und die Speicherbedingungen eingestellt werden (s. auch 5.3.6 Blocktyp To Workspace).

SIMULINK

5 - 41

Diagnose-Tools (Diagnostics)

Mit den Eingabefeldern dieser Formularseite lassen sich die Reaktionen


des Systems in Ausnahmezustnden
parametrieren.
Configuration options:
In dieser Liste kann man die Ausnahmesituationen auswhlen.
Action:
Durch Setzen des entsprechenden
Schalters kann man fr die gewhlte
Situation die Reaktion des Systems
festlegen.

Effizienz der Simulation (Advanced)

Mit den Eingabefeldern dieser Formularseite lassen sich Eigenschaften


setzen bzw. beeinflussen, die die
Effizienz eines Simulationslaufs beeinflussen.
Optimizations:
In dieser Liste kann man die Optimierungsmanahmen, die zur Verbesserung der Effizienz aktiviert
bzw. deaktiviert werden sollen, auswhlen.
Action:
Fr die unter Optimization ausgewhlte Manahme kann der On- bzw
Off-Schalter gesetzt werden.

5.4.3

Der Debugger

Das Fenster fr die Steuerung des integrierten Debugger wird wie folgt geffnet:
S
Im Arbeitsfenster ist der Menpunkt Tools zu aktivieren.
S
Im erscheinenden Men ist der Punkt Simulink debugger ... zu aktivieren.
Im Toolbar des Arbeitsfensters kann auch der nebenstehend abgebildete Schalter angeklickt werden.
Es erscheint das folgende Fenster:

5 - 42

SIMULINK

Die Schalter im Toolbar haben folgende Funktionen

Input/Output des aktuellen Blocks werden angezeigt


Input/Output eines markierten Blocks werden angezeigt
Vor den markierten Block wird ein Unterbrechungspunkt gesetzt
Der Simulationslauf wird gestartet/fortgesetzt
Es wird zum nchsten Zeitschritt bergegangen
Es wird der Schritt zum nchsten Block ausgefhrt
Die Mglichkeiten des Debugger sind auerordentlich vielfltig. Als Beispiel soll im Folgenden
lediglich das Setzen eines Unterbrechungspunktes erlutert werden. Will man die Simulation
nach der Abarbeitung eines bestimmten Blockes anhalten, so ist wie folgt zu verfahren:
S
Der Block, vor dessen Abarbeitung die Simulation anzuhalten ist, ist im Arbeitsfenster
zu markieren.
S
Anschlieend ist im Debugger-Toolbar der Schalter fr den Unterbrechungspunkt (s.o.)
anzuklicken.
S
Der Block erscheint in der Liste unter Break/Display points.
S
Wenn im Folgenden die Simulation im Debugger-Fenster gestartet wird, so wird beim
Erreichen des Haltepunkts im Fenster Outputs ein Protokoll erzeugt.
S
Durch weitere Debugger-Funktionen lsst sich das Protokoll noch detaillierter gestalten.

SIMULINK
5.5
5.5.1

5 - 43

Ausblicke auf ausgewhlte Funktionen


Erzeugen von Subsystemen

Fr grere Probleme ist es hilfreich, Blcke zu Subsystemen zusammenzufassen, um die


bersichtlichkeit eines Simulations-Schemas zu gewhrleisten. Fr die Erzeugung eines
Subsystems gibt es zwei Wege:

Einfgen eines Subsystemblocks in das Schema


Im Verzeichnis Ports&Subsystems der SIMULINK-Blockbibliothek gibt es den Blocktyp
Subsystem. Mit Hilfe dieses Blocktyps kann nun wie folgt verfahren werden:
S
Eine Instanz des Blocktyps ist in das aktuelle Schema zu bernehmen.
S
Durch Doppelklick auf das Blocksymbol wird ein neues Arbeitsfenster geffnet. In
diesem Fenster kann das Subsystem als SIMULINK-Schema erzeugt werden. Ein Inputund ein Output-Signal, die die Verbindungen des Subsystems mit dem bergeordneten
Schema herstellen, sind bereits vorhanden.
S
Werden weitere Eingangssignale und/oder Ausgangssignale bentigt bzw. erzeugt, so
stehen die Blocktypen In1 (Verzeichnis: Sources) bzw. Out1 (Verzeichnis: Sinks) dafr
bereit.

Erzeugen eines Subsystems in einem vorhandenen Schema


Wenn innerhalb eines existierenden Schemas ein Subsystem durch Zusammenfassung von
bestimmten Blcken erzeugt werden soll, ist wie folgt zu verfahren:
S
Die zum Subsystem zusammenzufassenden Blcke sind durch den Mauszeiger als
rechteckiger Bereich zu markieren.
S
Im Menpunkt Edit des Arbeitsfensters ist der Menpunkt Create subsystem zu whlen.
S
Die markierten Blcke werden zum Subsystem zusammengefasst und erscheinen als ein
Block.
S
ber das Popupmen des Blockes kann man den Subsystemblock in einem neuen
Fenster zur detaillierten Anzeige bringen; in diesem Fenster kann der Block auch intern
weiter editiert werden.
Im folgenden Bild ist ein SIMULINK-Schema dargestellt, das zunchst kein Subsystem enthlt.

Im

fol

5 - 44

SIMULINK

genden Bild sind jeweils Funktionsblock, Integrator und Schalter zu einem Subsystem zusammengefasst worden:

Soll die Subsystemdefinition wieder aufgehoben werden, so ist der Menpunkt Undo im EditMen, bzw. der entsprechende Schalter im Toolbar zu aktivieren.
5.5.2

Nutzerspezifische Blocktypen (Maskierte Blcke)1

Die Definition eines Subsystems ist immer an die konkrete Anwendung gebunden. Der Nutzer
kann aber auch auf der Basis der Subsystemdefinition einen eigenen Blocktyp erzeugen. Dafr
gibt es die Option der Maskierung eines Subsystems. Mit dem Masken-Editor lsst sich ein
Parametrierformular fr den neuen Blocktyp erstellen, das bei der Einbindung eines Blocks des
erzeugten Typs in ein SIMULINK-Schema fr die Parametrierung aktiviert werden kann.
5.5.3

S-Funktionen2

Fr komplexere Problemstellungen ist es mitunter notwendig, dass ein Algorithmus als


SIMULINK-Block zu realisieren ist, der sich nicht aus den vorhandenen Blcken der Bibliothek
zusammensetzen lsst. Derartige Blcke heien S-Funktionen. Der von einer S-Funktion zu
realisierende Algorithmus ist nach bestimmten Regeln als MATLAB- oder C-Funktion zu
programmieren.

Weitere Informationen hierzu s.


ANGERMANN , A. u.a. Matlab-Simulink-Statflow, Oldenbourg Verlag, Mnchen, 2002
2

Hierfr gibt es ein spezielles Handbuch des Entwicklers von SIMULINK.

You might also like