Professional Documents
Culture Documents
Fakultt Maschinenwesen
Institut fr Verfahrenstechnik & Umwelttechnik
Professur fr Verfahrensautomatisierung
HANDBUCH
MATLAB & SIMULINK
zum Gebrauch in den Lehrveranstaltungen
des Vertiefungsfachs
Verfahrensautomatisierung
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]
[2]
[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
Command Window
Command History
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.
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
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
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.
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
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
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
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
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
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
<
fieldnames(s)
Beispiele
Elementare Konstrukte
2-7
ans =
'name'
'daten'
'n'
'mittel_x'
'mittel_y'
2.2.5
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
cell2struct(c,f,d)
Struktur
celldisp(c)
cellplot(c)
num2cell(A)
zellulres
Feld
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
angle(x)
komplex
reell
Phasenwinkel von x
asin(x)
reell
reell
asinh(x)
reell
reell
atan(x)
reell
reell
atan2(x)
reell
reell
atanh(x)
reell
reell
ceil(x)
reell
ganzzahlig
conj(x)
komplex
komplex
cos(x)
reell
reell
cos (x)
cosh(x)
reell
reell
exp(x)
reell
reell
ex
fix(x)
reell
ganzzahlig
floor(x)
reell
ganzzahlig
gcd(x,y)
ganzzahlig
ganzzahlig
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
round(x)
reell
ganzzahlig
sign(x)
reell
reell
sin(x)
reell
reell
sin (x)
sinh(x)
reell
reell
sqrt(x)
reell
reell
tan(x)
reell
reell
tan (x)
tanh(x)
reell
reell
2.3.2
x Modulo y
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
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
max(v)
skalar
mean(v)
skalar
min(v)
skalar
norm(v)
reell
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
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:
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
Bedeutung
chol(A)
Matrix
cond(A)
Skalar
Konditionszahl von A.
condest(A)
Skalar
det(A)
Skalar
Determinante von A
diag(v)
Matrix
eig(A)
Vektor/Matrix
d = eig(A)
[V D ] = eig(A)
expm(A)
Matrix
Matrix-Exponentialfunktion.
eye(n)
Matrix
inv(A)
Matrix
Inverse von A.
lu(A)
[L U] = lu(A)
norm(A)
Skalar
2 - 14
Elementare Konstrukte
norm(A,p)
Skalar
p-Norm von A.
ones(n,m)
Matrix
pinv(A)
Matrix
poly(A)
Vektor
rand(n,m)
Matrix
randn(n,m)
Matrix
rank(A)
Skalar
Rang von A.
size(A)
Vektor
sortrows(A)
Matrix
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
<=
>
grer als
>=
==
gleich
~=
ungleich
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)
char(c1,...,cn)
char(x)
double(S)
Die Char-Matrix wird in eine numerische Matrix berfhrt, wobei das jeweils korrespondierende Element den numerischen
ASCII-Wert enthlt.
eval(c)
Elementare Konstrukte
2 - 17
Der krzere String wird im lngeren gesucht; Ergebnis sind die
Startpositionen des krzeren im lngeren.
ischar(c)
lower(c)
num2str(x)
str2num(S)
strcat(c,..,cn)
strcmp(c1,c2)
upper(c)
<
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)
polyder(v)
Die Funktion liefert die Koeffizienten der ersten Ableitung des durch v definierten Polynoms.
polyfit(x,y,n)
polyval(v,x)
roots(v)
Die Funktion liefert als Ergebnis den Vektor der Nullstellen des durch v definierten Polynoms
<
Funktion
Beispiele
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
Linien-Stil
Zeichen
Bedeutung
Durchgezogene Linie
--
Strichlierte Linie
Punktierte Linie
.-
Strichpunktierte Linie
Marker-Typ
Symbol
Bedeutung
Kringelchen
Elementare Konstrukte
1.4
2 - 21
*
Stern
Punkt
Kreuz
Quadrate
Raute
>
<
Fnfzackiger Stern
Sechszackiger Stern
Bedeutung
rot
grn
blau
zyan
violett
gelb
schwarz
wei
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
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.
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
>>
>>
>>
>>
t=0:0.1:10;
y=rand(1,length(t));
figure(dia1);
plot(t,y)
Elementare Konstrukte
2.4.4
2 - 29
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:
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
2 - 30
Elementare Konstrukte
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.
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
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 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(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
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.
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
r+
[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.
A= fread(fid)
Aus der unter fid geffneten Datei wird A gelesen. Dabei werden folgende Annahmen
getroffen:
A ist Spaltenvektor.
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
inf
[n,m]
Der Parameter precison muss ein Zeichenkettenausdruck sein, der folgende Werte
annehmen kann:
Wert von
precision
Bedeutung
'schar'
'uchar'
'int8'
'int16'
'int32'
'int64'
'uint8'
'uint16'
'uint32'
'uint64'
'float32'
'float64'
'double'
[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.
Elementare Konstrukte
2 - 37
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.
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
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.
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
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
Ganze Dezimalzahl.
e , f , g
Dezimalzahl in Gleitpunktdarstellung
Vorzeichenbehaftete Oktalzahl.
[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
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.
Bedeutung
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
Zeichenkette
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 den Anfang der nchsten Zeile (NewLine)
Tabulatorsprung.
Beispiel
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
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
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
2 - 44
Elementare Konstrukte
oder ein Zeichenkettenausdruck sein) wird in einem Standardformat auf dem Bildschirm
dargestellt.
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.
Beispiel
Elementare Konstrukte
2 - 45
x =
1.2300
45.6000
81.9000
237.1200
2.5.5
Programmentwicklung
3.
3.1
3-1
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.
3-2
Programmentwicklung
Beispiel
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
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
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
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
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
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
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:
Beispiel
1.6571
-5.4217
2.7264
2.4000
2.5000
23.7000
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
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
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
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
Genauigkeitsanforderungen
Anwendungsempfehlung
ode45
nein
mittel
ode23
nein
niedrig
ode113
nein
ode15s
ja
niedrig ...mig
ode23s
ja
niedrig
ode23t
ja/nein
niedrig
ode23tb
ja
niedrig
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 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
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.
@odeplot
Diese Funktion ist bereits vorhanden; sie ist zugleich die Standardfunktion fr die Ergebnisdarstellung. Die Zustandsgren werden ber der Zeit
dargestellt.
@odephas2
@odephas3
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
InitialStep
reelle Konstante
options = odeset(oldopts,'name1',wert1,...)
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
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
3 - 20
Programmentwicklung
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,:))
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:
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:
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 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).
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:
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
Die Entwicklungsumgebung
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
Ausrichte-Werkzeug
Men Editor
Eigenschaftsinspektor
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
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:
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
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
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
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
off
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
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
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
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
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)
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'
'error'
'help'
'warn'
'costum'
Beispiel
! 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
! 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
Beispiel
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\
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
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
Programmentwicklung
3 - 45
Reglertyp
Reglerparameter
KR
Tn
Tv
P-Regler
PI-Regler
PID-Regler
Reglerparameter
KR
Tn
Tv
P-Regler
PI-Regler
PID-Regler
Reglerparameter
KR
Tn
Tv
P-Regler
PI-Regler
-
3 - 46
Programmentwicklung
PID-Regler
! 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
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
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:
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
Es wird eine dezimale Darstellung erzeugt. Die Lnge der Dezimalzahl wird durch die vpa-Funktion
festgelegt.
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
%
%
%
%
>> 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
%
%
%
%
%
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]
Beispiel
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
Beispiele
>> 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
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).
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
factor ( S )
Diese Funktion zerlegt den Ausdruck S in Faktoren durch Ausklammern gemeinsamer
Bestandteile von Teilausdrcken.
<
Beispiel
expand ( S )
Alle in S enthaltenen Klammerausdrcke werden aufgelst; der Ausdruck S expandiert.
<
Beispiel
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
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
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
<
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
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
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
<
Beispiele
Symbolisches Rechnen
4 - 11
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
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
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.
Beispiele
4 - 14
Symbolisches Rechnen
syms x y t
x=2*sin(t);
y=cos(t);
ezplot(x,y)
Symbolisches Rechnen
4.3.
4.3.1
4 - 15
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
4 - 16
Symbolisches Rechnen
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.
<
Beispiele
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.
<
Beispiele
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
Symbolisches Rechnen
4 - 19
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
4 - 20
Symbolisches Rechnen
4.4
4.4.1
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.
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
-T2/(T2^2*T3^2-T1)]
T2*T3/(T2^2*T3^2-T1)]
Symbolisches Rechnen
4 - 21
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
4 - 22
Symbolisches Rechnen
Symbolische Lsung linearer Gleichungssysteme
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
Symbolisches Rechnen
4 - 23
4.4.2
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.
<
Beispiele
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
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
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.
Beispiele
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
-c0*sinh(k^(1/2))/cosh(k^(1/2))*sinh(k^(1/2)*t)+c0*cosh(k^(1/2)*t)
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
Detaillierte Hinweise und Beschreibungen sind unter den Namen der Funktionen auch
der Online-Hilfe zu entnehmen.
Beispiel
0.0042
0.0334
0.1105
0.2493
0.4383
Symbolisches Rechnen
4.6.2
4 - 31
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
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 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
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.
funtool
Diese Funktion aktiviert das folgende Fenster:
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
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.
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
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
5.2
5.2.1
5-3
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
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
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
Help
Die wichtigsten Menpunkte knnen auch ber den Toolbar erreicht werden.
SIMULINK
5-5
5.2.2
5-6
SIMULINK
SIMULINK
5-7
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.
5-9
SIMULINK
5.3
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
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:
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
5 - 12
SIMULINK
5 - 13
SIMULINK
5.3.2. Modellblcke mit unstetigem Verhalten (Discontinuities)
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
5 - 15
SIMULINK
Dieser Blocktyp beschreibt das Verhalten eines linearen zeitdiskreten bertragungsgliedes in der Zustandsraumdarstellung:
5 - 16
SIMULINK
Zeitdiskreter Integrierer (Discrete-Time Integrator)
Speicherblock (Memory)
Der Speicherblock liefert als Ausgangssignal das Eingangssignal des vorangegangenen Zeittaktes.
5 - 17
SIMULINK
<
Beispiel
5 - 18
SIMULINK
<
Beispiel
Das folgende SIMULINK-Schema lst das lineare Gleichungssystem:
5 - 19
SIMULINK
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
Element-wise (K.*u)
Matrix (K*u)
Matrix (u*K)
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:
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:
Summierer (Sum)
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.
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
5 - 23
SIMULINK
5.3.5. Blcke fr Signalverzweigungen (Signal Routing)
Multiplexer (Mux)
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.
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.
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.
5 - 26
SIMULINK
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.
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.
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.
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)
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.
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
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.
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.
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.
sein:
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
Setting to zero
Cyclic repetition
SIMULINK
5 - 37
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
Im folgenden Bild ist ein SIMULINK-Arbeitsblatt dargestellt, bei dem der Menpunkt Simulation aufgeblttert wurde.
Start:
Stop:
Simulation parameters ...:
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.
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)
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
SIMULINK
5.5
5.5.1
5 - 43
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
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