Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Fakultät Maschinenwesen
Institut für Verfahrenstechnik & Umwelttechnik
HANDBUCH
1. Einleitung
1.1 MATLAB/Simulink als Werkzeuge
MATLAB und Simulink sind, einem neueren Sprachgebrauch folgend, integrierte Problemlö-
sungsumgebungen (integrated problem solving environment). Im Gegensatz zur klassischen
Programmierumgebung stellen derartige Umgebungen neben einer Programmiersprache Werk-
zeuge und Bibliotheken bereit, die auf einem hohen Niveau in die Problemlösung integriert
werden können. Das sind vor allem leistungsfähige Grafik-Funktionen, einfach aufrufbare
numerische Lösungsverfahren und Toolboxes für bestimmte Anwendungsfelder, die ihre
Funktionalität sowohl auf der Ebene der Programmiersprache als auch über integrierte grafische
Oberflächen dem Anwender zur Verfügung 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 für MATLAB entwickelten Toolboxes decken ein weites Anwendungs-
feld ab. Beispielsweise sind folgende Tool-Boxes verfügbar:
S Control System Toolbox
S Neural Network Toolbox
S Fuzzy Logic Toolbox
S Optimization Toolbox
S Statistics Toolbox
Im folgenden werden für MATLAB und für SIMULINK die Version von 2014 angenommen.
Eine Reihe von Eigenschaften ist auch für vorangegangene Versionen noch zutreffend; es wird
aber darauf verzichtet, die Unterschiede zu anderen Versionen zu erläutern.
[2] Schweizer, W.
“MATLAB kompakt”
München, 2013 (5. Aufl.)
S Command Window Dieses Fenster ist der eigentliche Arbeitsbereich; nach dem
Prompt-Zeichen >> kann der Benutzer Kommandos eingeben.
Das Erscheinungsbild der Benutzeroberfläche kann über den Menüpunkt Layout des Hauptme-
nüs modifiziert werden.
Im folgenden Bild sind die Bedeutungen der wesentlichen Menüpunkte des Hauptmenüs sowie
der wichtigsten Buttons des Toolbar erläutert.
1-4 Einleitung
In diesem Schalter wird das Auswahlmenü für die unterschiedlichen Typen von
MATLAB bzw. SIMULINK Editoren bereitgestellt.
Über diesen Schalter wird das Öffnungs-Menü für bereits vorhandene Dateien geöffnet.
Es gibt ein sehr umfangreiches System zur on-line-Hilfe. Der Hilfe-Navigator ist in der folgen-
den Abbildung dargestellt:
Einleitung 1-5
Für 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 Menüleiste angebotenen Funktionen lassen erkennen, dass dieses Editierwerkzeug
mehr ist als ein einfacher Quelltexteditor. Im besonderen stellt der Editor einen integrierten
Debugger bereit. Die wichtigsten Menüpunkte werden im folgenden erläutert. Dabei ist zu
beachten, dass sich unterschiedliche Reaktionen ergeben, je nachdem ob man auf das Schalter-
symbol oder auf den unter dem Symbol befindlichen Pfeil klickt:
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. Für den Aufbau
einer Simulationsstruktur, die aus Elementen dieser Bibliothek bestehen soll, muss der Benutzer
über den New-Schalter im MATLAB-Rahmen (Untermenüpunkt Simulink Model) oder über das
entsprechende Button des Toolbar dieses Fensters ein neues, leeres Fenster für den Arbeits-
bereich erzeugen. Die Elemente werden dann per Mausklick in den Arbeitsbereich gezogen.
Das linke Teilfenster stellt den Navigator für die Abschnitte der Modellbibliothek zur Verfü-
gung; im rechten Teilfenster erscheinen die im jeweils ausgewählten Abschnitt verfügbaren
Blöcke.
Elementare Konstrukte 2-1
Im folgenden wird stets davon ausgegangen, dass das Kommandofenster der Benutzeroberfläche
aktiv ist. Der Anwender kann zunächst das System interaktiv im reinen Kommandobetrieb
nutzen. Dabei wird im Kommandofenster nach dem Kommandoprompt >> eine Zeichenfolge
für ein Kommando eingegeben. Nach Abschluss der Zeichenfolge durch die <ENTER>-Taste
wird das Kommando sofort ausgeführt. Folgende Regeln sind bezüglich der Kommandozeile zu
beachten:
• Mit den Cursor-Steuertasten <8> und <9> kann unter den zurückliegenden Kommandos
geblättert werden.
• Mit den Tasten für 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 unterdrückt werden, so ist die Kommando-
zeile mit einem Semikolon abzuschließen.
• Soll ein Kommando auf der folgenden Bildschirmzeile fortgesetzt werden, so ist vor der
Betätigung 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 Ausdrücke eingegeben, die lediglich
aus numerischen Konstanten, Standardfunktionen (trigonometrische Funktionen, Exponential-
funktion usw.) und arithmetischen Operatoren bestehen. Die Ausdrücke müssen den üblichen
syntaktischen Regeln genügen. Auch Vektoren und Matrizen lassen sich in diesem Bearbei-
tungsmodus verknüpfen (näheres 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 Be-
rechnung dynamisch festgelegt. Die Anzeige des Resultats erfolgt in dem Beispiel, da das
Kommando nicht mit ; abgeschlossen wurde.
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 Varia-
blen Bezug nehmen, die im Workspace verfügbar 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 Ab-
arbeitung noch verfügbar sind, kann im Kommandobetrieb anschließend weitergearbeitet
werden.
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. Für reelle
Konstanten kann auch die Schreibweise mit Zehnerpotenz (halblogarithmische Notation)
verwendet werden. Als Zeichen für den Beginn des Exponentialteils wird der Buchstabe e (auch
E ist zulässig) verwendet.
Vordefinierte Konstanten (Schreibweise mit Kleinbuchstaben beachten!) sind:
pi ð
i,j imaginäre Einheit
Zeichenketten-Konstanten
Zeichenketten-Konstanten sind beliebige Zeichenfolgen, die in ‘ ‘ (Hochkomma) eingeschlos-
sen 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/m²K'
Elementare Konstrukte 2-3
einheit =
W/m²K
Hinweis: Der Multiplikationsstern zwischen einer numerischen Konstanten und der imagi-
nären Einheit kann entfallen.
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.
Für Bezeichner im allgemeinen und für 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 für Vektoren und Matrizen werden implizit durch eine Wertzuweisung dekla-
riert. Vektoren und Matrizen lassen sich in ihrer Zeilen-/Spaltenstruktur in MATLAB auf
einfache Weise definieren. Es gelten folgende Regeln:
2-4 Elementare Konstrukte
S 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 Ausdrücke, die auf skalare Ergebnisse
führen, zulässig. Als Syntaxformel1 lässt sich die Definition wie folgt schreiben:
S 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 Transpositions-
operator ‘ (Hochkomma) abzuschließen. Als Syntaxformel ergibt sich
S Matrizen werden als Listen von Zeilen- oder Spaltenvektoren notiert. Die eckigen
Klammern für die Zeilenvektoren können entfallen. Alle Zeilen-/Spaltenvektoren
müssen die gleiche Länge besitzen. Als Syntaxformel ergibt sich
Mit der Zuweisung einer nach den genannten Regeln definierten Datenstruktur werden Dimen-
sion 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 ausgewählte 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.
S Wenn auf ein einzelnes Element zugegriffen werden soll, so sind die Indizes ganzzahlige
Ausdrücke (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:
1
Für Syntaxformeln gelten folgende Regeln:
S Alle beschreibenden (metasprachlichen) Begriffe werden in Kleinschreibung notiert.
S Die definierten Begriffe (linke Seite der Formel) werden durch das Zeichen 6 abgeschlossen.
S Alle Elemente der zu definierenden Sprache (Schlüsselwörter , Opereratoren) werden fett dargestellt.
S Mögliche W iederholungen eines Konstruktes werden durch ... angegeben.
S Optionale Konstrukte werden in Kursivschrift dargestellt.
S Alternative Konstrukte werden als Liste notiert, wobei als Trennzeichen | verwendet wird.
Elementare Konstrukte 2-5
Die drei Varianten, die für den Indexbereich möglich sind, besitzen folgende Bedeutungen:
# Wenn nur ein Doppelpunkt notiert wird, so wird der Indexbereich der definieren-
den Anweisung herangezogen.
# Wenn zwei Ausdrücke, 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 Ausdrücke, jeweils durch Doppelpunkte getrennt, notiert, so de-
finiert der mittlere Ausdruck zusätzlich die Schrittweite für die Indexzählung.
< 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 können. Die
Felder werden über Feldbezeichner eingeführt. 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:
Der Strukturbezeichner steht für das heterogene Datenfeld als Ganzes. Der Feldbezeichner steht
für 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 große Vielfalt an Möglichkeiten. Insbesondere kann ein Feldbe-
zeichner wiederum eine Struktur repräsentieren.
In der folgenden Tabelle sind die wichtigsten MATLAB-Funktionen, die sich auf Strukturen
beziehen, zusammengestellt. Der Bezeichner s steht für eine strukturierte Variable, die Bezeich-
ner f1, ...fn für Datenfelder; ‘f‘ kennzeichnet den Namen des Feldes f als Zeichenkette.
< Beispiele
>> fieldnames(daten)
Elementare Konstrukte 2-7
ans =
'name'
'daten'
'n'
'mittel_x'
'mittel_y'
Cells bzw. zelluläre 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 zelluläres Feld wird als Liste seiner Elemente
(Zellen) definiert. Diese Liste steht in geschweiften Klammern. Das trennende Komma zwi-
schen den Elementen kann entfallen.
Als Elemente sind alle syntaktisch korrekten Ausdrücke und Datenstrukturen zugelassen. Der
Zugriff auf eine Zelle wird wie folgt realisiert:
Der Variablenbezeichner kennzeichnet das zelluläre 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 zelluläre
Felder beziehen, zusammengestellt. Der Bezeichner c steht für zelluläres Feld, die Bezeichner
c1,.. cn für Zellen des Feldes sowie f1, ...fn für Datenfelder in einer strukturierten Variablen; ‘f‘
kennzeichnet den Namen des Feldes f als Zeichenkette.
< 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 Ausdrücke
Ausdrücke stellen Verknüpfungen zwischen Konstanten und Variablen über definierte Operato-
ren her. In MATLAB ergibt sich die Bedeutung der Operatoren aus den Typen der verknüpften
Variablen (die Bedeutungen der Operatoren sind damit kontextabhängig). Wenn Ausdrücke
bezüglich ihres Typs unterschieden werden, so bezieht sich das darauf, dass die Resultate der
Verknüpfungen unterschiedlichen Typen angehören können. 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).
Skalare Ausdrücke verknüpfen Konstanten, skalare Variable, Vektoren, Matrizen sowie Ergeb-
nisse von Funktionsaufrufen so, dass sich skalare Resultate ergeben. Dabei kann noch genauer
zwischen den einfachen Typen komplex, reell und ganzzahlig unterschieden werden. Bezüglich
der Syntax von skalaren Ausdrücken gelten die üblichen Regeln für arithmetische Ausdrücke.
Elementare Konstrukte 2-9
Insbesondere gelten die üblichen Vorrangregeln der arithmetischen Operatoren und die assoziati-
ve Wirkung von Klammern.
Neben den vier Standardoperatoren ( + | - | * | / ) gibt es auch den Potenzoperator, der durch das
Zeichen ^ kodiert wird. Die Basis und der Exponent müssen dabei skalare Ausdrücke sein.
Die in der folgenden Tabelle zusammengestellten arithmetischen Standardfunktionen besitzen
als Argumente ebenfalls skalare Ausdrücke; das heißt aber nicht, dass sie nur in skalaren
Ausdrücken auftreten können!
2.3.2 Vektorausdrücke
Für die Operation der Transposition wird das Zeichen ‘ (Hochkomma) verwendet.
In der folgenden Tabelle sind Operationen zusammengestellt, die zwischen Vektoren und
Skalaren möglich sind; dabei bezeichne v einen Vektor/Vektorausdruck und c ein Skalar/einen
skalaren Ausdruck:
Elementare Konstrukte 2 - 11
In Vektorausdrücken können auch Bereichsvariable auftreten. Diese sind wie folgt definiert:
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 Argu-
mente Vektorausdrücke 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.
< Beispiele
2.3.3 Matrizenausdrücke
Beachte: Das Produkt A*B liefert das Matrizenprodukt der Matrizen A und B!
In der folgenden Tabelle sind wichtige MATLAB-Funktionen, die sich auf die Arbeit mit
Matrizen beziehen, zusammengestellt. Folgende Bezeichnungen für die Argumente wurden
gewählt:
< 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.0145 0.0474
0.1830 -0.4895 -0.0549
0.0814 0.2889 0.0228
Elementare Konstrukte 2 - 15
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 Ausdrücke
entstehen durch die Ausführung von Vergleichen und durch logische Verknüpfungen über
logische Operatoren. Sie können nur die Werte 0 oder 1 annehmen.
Operator Bedeutung
< kleiner als
<= kleiner als oder gleich
> größer als
>= größer als oder gleich
== gleich
~= ungleich
Operator Bedeutung
& Konjunktionsoperator
| Disjunktionsoperator
~ Negationsoperator
Wenn zwei Vektoren miteinander verglichen werden, so werden die entsprechenden Elemente
verglichen. Das Resultat ist dann ein Vektor, der die Vergleichsergebnisse enthält.
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 gelie-
fert 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 -0.5883 2.1832 -0.1364
>> b=randn(1,5)'
b =
0.1139 1.0668 0.0593 -0.0956 -0.8323
>> a>=b
ans =
0 0 0 1 1
>> any(a==b)
ans =
0
>> any(a<=b)
ans =
1
2.3.5 Zeichenkettenausdrücke
Werden Zeichenketten in Vektoren oder Matrizen abgelegt, so müssen sie als Elemente alle von
gleicher Länge sein. Werden Zeichenketten in zellulären Feldern gespeichert, ist diese Ein-
schränkung hinfällig.
Zeichenkettenausdrücke entstehen durch die Verknüpfung von Zeichenketten mit Hilfe speziel-
ler Funktionen. Für die nachfolgende Zusammenstellung gelten folgende Festlegungen:
Funktion Bedeutung
blanks(n) Erzeugt einen leeren String der Länge n.
char(c1,...,cn) Generiert eine Char-Matrix, in deren Zeilen die Zeichenketten c1
.... cn stehen, wobei alle auf eine gemeinsame Länge mit Leerzei-
chen aufgefüllt werden.
char(x) Konvertiert den Wert von x in Zeichenketten. x kann ein skalarer
oder ein Vektorausdruck sein.
double(S) Die Char-Matrix wird in eine numerische Matrix überführt, wo-
bei das jeweils korrespondierende Element den numerischen
ASCII-Wert enthält.
eval(c) Die Zeichenkette c wird als MATLAB-Ausdruck ausgewertet.
Elementare Konstrukte 2 - 17
findstr(c1,c2) Der kürzere String wird im längeren gesucht; Ergebnis sind die
Startpositionen des kürzeren im längeren.
ischar(c) Ergebnis der Funktion ist 1, fall c ein String ist.
lower(c) Die Zeichenkette c wird in Kleinbuchstaben konvertiert.
num2str(x) Der Wert/ die Werte von x werden in Zeichenketten konvertiert.
x kann ein skalarer oder ein Vektorausdruck sein.
str2num(S) Die Char-Matrix S wird in skalare Wert konvertiert.
strcat(c,..,cn) Die Zeichenketten der Liste werden in der Reihenfolge verbun-
den.
strcmp(c1,c2) Die Zeichenketten c1 und c2 werden miteinander verglichen. Das
Ergebnis ist 1, wenn sie identisch sind.
upper(c) Die Zeichenkette c wird in Großbuchstaben konvertiert.
< 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 Elementare Konstrukte
2.3.6 Polynome
Polynome werden durch die Vektoren ihrer Koeffizienten definiert, wobei der Koeffizient zur
höchsten Potenz im ersten Element abgespeichert wird, der zur zweithöchsten im zweiten, usw.
Es besteht also folgende Korrespondenz:
Für die Addition und Subtraktion von Polynomen können die Vektoroperatoren + und - genutzt
werden. Für 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 unabhängigen und
y die Werte der zugehörigen abhängigen Variablen enthält.
Funktion Bedeutung
conv(v,w) Die durch v und w definierten Polynome werden multipli-
ziert; die Funktion liefert den Vektor der Koeffizienten
des Produktpolynoms.
deconv(v,w) Die durch v und w definierten Polynome werden divi-
diert; die Funktion liefert den Koeffizientenvektor.
poly(z) Die Funktion bestimmt die Koeffizienten des Polynoms,
das die im Vektor z vorgegebenen Nullstellen besitzt.
polyder(v) Die Funktion liefert die Koeffizienten der ersten Ablei-
tung des durch v definierten Polynoms.
polyfit(x,y,n) Die Funktion liefert die Koeffizienten des Polynoms vom
Grade n, das die in den Vektoren x und y gegebenen Da-
ten im Sinne der Methode der kleinsten Fehlerquadrate
approximiert.
polyval(v,x) Die Werte des durch v definierten Polynoms werden an
den Stellen x (x kann Skalar/Vektor/Matrix sein ) berech-
net.
roots(v) Die Funktion liefert als Ergebnis den Vektor der Nullstel-
len des durch v definierten Polynoms
< Beispiele
>> dp=deconv(p,w)
dp =
2.0000 3.0000 4.0000 1.0000
>> r=roots(p)
r =
3.3333 + 1.4907i
3.3333 - 1.4907i
-0.5971 + 1.1306i
-0.5971 - 1.1306i
-0.3059
>> % 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 0.0000
>> py=polyval(p,x);
>> plot(x,y,x,py)
Das Resultat ist im folgenden Bild dargestellt (die beiden Kurven fallen praktisch zusammen):
2 - 20 Elementare Konstrukte
plot(X)
plot(x,y,..)
plot(x,y,linienspezifikation,..)
plot(..,‘eigenschaftsname‘,wert_der_eigenschaft,..)
Linien-Stil
Zeichen Bedeutung
- Durchgezogene Linie
-- Strichlierte Linie
: Punktierte Linie
.- Strichpunktierte Linie
Marker-Typ
Symbol Bedeutung
+ Plus-Zeichen als Marker
° Kringelchen
Elementare Konstrukte 2 - 21
* Stern
. Punkt
x Kreuz
s Quadrate
d Raute
^ Aufwärts orientiertes Dreieck
v Abwärts orientiertes Dreieck
> Nach links orientiertes Dreieck
< Nach rechts orientiertes Dreieck
p Fünfzackiger Stern
h Sechszackiger Stern
Symbol Bedeutung
r rot
g grün
b blau
c zyan
m violett
y gelb
k schwarz
w weiß
LineWidth
Die Linienstärke 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 für die Linienfarbe.
MarkerFaceColor
Die Füllfarbe der Marker wird als eine Zeichenkette kodiert; es gelten die gleichen
Festlegungen wie für die Linienfarbe.
Marker Size
Die Markergröße wird ganzzahlig in Punkten vorgegeben.
Bei dieser Art der Diagrammerzeugung kann mit einem Plot-Aufruf nur ein Kurvenver-
lauf dargestellt werden. Sollen mehrere Verläufe 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 hinzugefügt. 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:
< 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 2 - 23
Die beiden Kurven können mit subplot auch in Teildiagramme gezeichnet werden:
>> subplot(2,1,1);
>> plot(x,y1,'-h')
>> subplot(2,1,2)
>> plot(x,y2,'-^')
2 - 24 Elementare Konstrukte
2.4.2 3D-Grafiken
MATLAB stellt eine Reihe von Funktionen bereit, die die Erzeugung von 3D-Grafiken ermögli-
chen.
plot3
Die Funktion für die 3D-Darstellungen von Kurven ist plot3, für deren Aufruf die folgenden
Möglichkeiten 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 Kurvenverläufe
enthalten. Die Bedeutungen der Aufrufe lassen sich in Analogie zu denen von plot erschlie-
ßen (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 für die Darstellung von Flächen im
Raum. Dabei werden aus den Vektoren x und y die Matrizen X und Y erzeugt. Die Matrix X
enthält den Vektor x so oft als Zeilenvektor, wie y lang ist; die Matrix Y enthält 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 Fläche dargestellt werden kann. Der Aufruf hat
folgende Form:
[X,Y] = meshgrid(x,y)
mesh
Diese Funktion dient der Darstellung von Flächen in Gestalt von Drahtmodellen. Folgende
Formen des Funktionsaufrufs sind möglich
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 zugehörigen
Wert für 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 verändert. 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 zusätzlich zum Drahtmodell der Fläche die Darstellungen der
Höhenlinien (meshc) bzw. umschließen die Kontur der Funktion mit einem „Vorhang“
(meshz). Sie werden wie mesh aufgerufen.
surf, surfc
Die Funktion surf erzeugt eine 3D-Flächendarstellung, wobei die Fläche entsprechend den
Werten von Z eingefärbt wird. Der Aufruf von surfc erzeugt neben der Fläche noch zusätzlich
die Höhenlinien 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 - 27
figure
Es wird ein neues Grafik-Fenster, das die Standardeigenschaften besitzt, geöffnet; 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 Fens-
ters auf dem Bildschirm, der Titel des Fensters oder die Hintergrundfarbe. Die Liste der
Eigenschaften sowie die möglichen 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
enthält 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
gehört. Ist h kein Figure-Handle für 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
Als nächstes wird eine Zufallsfolge generiert. Diese Folge wird im ersten Grafikfenster dar-
gestellt:
>> t=0:0.1:10;
>> y=rand(1,length(t));
>> figure(dia1);
>> plot(t,y)
>> figure(dia2)
>> hist(y,20)
Elementare Konstrukte 2 - 29
Die Eigenschaften grafischer Darstellungen können vom Anwender in vielfältiger Art und Weise
eingestellt bzw. geändert werden. Grundsätzlich sind dabei zwei Wege zu unterscheiden:
S Die Grafik wird zunächst erzeugt und über die interaktiven Werkzeuge des Grafik-
Fensters verändert.
S Die Eigenschaften der Grafik werden durch MATLAB-Funktionsaufrufe eingestellt.
Beide Wege stellen den gleichen Funktionsumfang zur Verfügung, wobei aus dem Zusammen-
hang heraus zu entscheiden ist, welcher Weg günstiger ist.
Ein Figure-Fenster besitzt die im folgenden Bild dargestellte Menüzeile bzw. Werkzeugleiste:
Im folgenden werden die wichtigsten Menüpunkte mit ihren Untermenüs beschrieben.
File
Über diesen Menüpunkt sind die Lade-, Speicher- und Druckfunktionen für Grafiken zu errei-
chen. Die meisten der Untermenüpunkte bedürfen keiner weiteren Erläuterung. Für die Ein-
bindung 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 Menüpunkt wird ein Untermenü erreichbar, dass eine Reihe von Funktionen für die
Editierung der Grafik bereitstellt. Zunächst werden die Funktionen für das Markieren, Aus-
schneiden, Kopieren usw. angeboten.
Über die folgenden drei Menüpunkte kann der Anwender alle Parameter der Grafik erreichen
und verändern. Es sind dies die Untermenüpunkte:
Figure Properties
Axes Properties
Current Object Properties
Nach der Aktivierung eines dieser Menüpunkte geht die Grafik in den editierbaren Zustand über
und es erscheint ein Formular mit mehreren Seiten, über das die Eigenschaften der betreffenden
Konstrukte geändert werden können.
2 - 30 Elementare Konstrukte
Die anderen Formulare haben eine ähnliche Gestalt. Die Bedeutungen der Felder sind weit-
gehend aus der Formularbeschriftung zu erschließen. Die on-line-Hilfe stellt weiterführende
Informationen bereit.
Hinweis: Für die Beschriftung der Grafik bzw. der Achsen kann eine Teilmenge von TeX-
Befehlen (das sind Zeichenketten, die dem Sonderzeichen \ folgen) verwendet
werden. Damit können auch Formeln, griechische Buchstaben u.ä. für die Be-
schriftung herangezogen werden. Details sind in der on-line-Hilfe zu finden.
View
Dieser Menüpunkt gestattet die Einstellung der Werkzeugleiste. Standard ist die oben dar-
gestellte Werkzeugleiste, die durch den Menüpunkt Figure Toolbar eingestellt wird. Mit dem
Menüpunkt Camera Toolbar kann eine zweite Werkzeugleiste aktiviert werden, die den schnel-
len Zugriff auf die Kamera-Werkzeuge gestattet. Mit Hilfe dieser Werkzeuge kann das Er-
scheinungsbild der Grafik verändert werden (s. Menüpunkt Tools).
Insert
Unter diesem Menüpunkt wird ein Untermenü aktiviert, das eine Reihe von Einfügefunktionen,
so für Achsen, zusätzliche Grafikelemente (Pfeile, Linien, Texte ) usw., bereitstellt.
Elementare Konstrukte 2 - 31
Tools
Unter diesem Menüpunkt wird ein Untermenü angeboten, dessen wichtigste Punkt im folgenden
erläutert werden (diese Punkte sind prinzipiell auch über die Werkzeugleisten erreichbar):
Edit Plot
Dieser Menüpunkt ist ein rastender Schalter. Nach Betätigung werden die Werkzeuge für
das Editieren der Grafik aktiviert. Insbesondere kann der Anwender mit der Maus die
dargestellte Fläche oder die Grafik als Ganzes markieren; mit der rechten Maustaste
können anschließend Popup-Menüs aktiviert werden, die sich in ihrer Funktionalität am
markierten Objekt orientieren.
Zoom In / Zoom Out
Über diese Menüpunkte kann die Größe der Grafik relativ zum Figure-Fenster verändert
werden.
Rotate 3D
Die Grafik kann anschließend über die Mausbewegung gedreht werden. Es erscheint ein
Hilfskoordinatensystem, das die Orientierung erleichtert.
Move Camera
Die Grafik kann anschließend aus der Sicht einer virtuellen Kamera, deren Position
durch den Mauszeiger vorgegeben wird, betrachtet werden.
Camera Motion
Es erscheint ein weiterführendes Untermenü, das die Art der Kamerabewegung zu
modifizieren gestattet. So kann nicht nur der Blickwinkel (Orbit Camera) sondern es
können beispielsweise auch die Entfernung (Move Forward / Back) oder die Beleuch-
tung (Orbit Scene Light ) geändert werden. Mit Walk wird die Kamera, gesteuert von der
Mausgeschwindigkeit über die Grafik bewegt. Die Bewegung dauert an, so lange die
Maustaste gedrückt 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 für die Ansicht der Grafik eingestellt.
Die über den Toolbar zu erreichenden Werkzeuge sind der folgenden Darstellung zu
entnehmen:
Zoom: Ein/Aus
2 - 32 Elementare Konstrukte
Für alle Operationen, die über die interaktiven Werkzeuge möglich sind, gibt es auch ent-
sprechende MATLAB-Funktionen. Die wichtigsten werden im folgenden beschrieben.
axis
Diese Funktion bietet die Möglichkeit, die Koordinatenachsen zu skalieren. Folgende Formen
des Funktionsaufrufs sind von Interesse:
axis
Der Funktionsaufruf liefert die Bereiche für die Koordinatenachsen als Vektor (4 oder
6 Elemente je nach 2D/3D-Darstellung).
axis([xmin xmax ymin ymax])
Die unteren/oberen Grenzen der Koordinatenachsen einer 2D-Grafik werden gesetzt.
axis([xmin xmax ymin ymax zmin zmax])
Die unteren/oberen Grenzen der Koordinatenachsen einer 3D-Grafik werden gesetzt.
axis auto
Die automatische Achsen-Einstellung (die MATLAB aus den Datenbereichen ableitet)
wird vorgenommen.
axis manual
Die aktuellen Achseneinstellungen werden festgehalten; wenn hold on aktiv ist, wird
eine neue Grafik in das aktuelle Achsensystem gezeichnet.
axis tight
Die Grenzwerte der Achsen werden exakt auf die minimalen/maximalen Werte der
Daten gesetzt.
axis xy
Das Koordinatensystem wird in der Kartesischen Standardform gezeichnet. Der Koordi-
natenursprung 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 Maßstab skaliert.
axis square
Die Achsen werden so skaliert, dass der Zeichenbereich ein Quadrat bzw. ein Würfel
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 Koordina-
tenachsen 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 Möglichkeiten, die der on-line-Hilfe zu entnehmen sind.
xlabel(‘string‘)
Die durch ‘string‘ kodierte Zeichenkette wird zur Achsenbeschriftung. TeX-Kom-
mandos werden im Standardfall interpretiert.
xlabel(fname)
Der Ausdruck fname muss einen Zeichenkettenwert liefern; dieser Wert wird zur Be-
schriftung der Achse herangezogen.
xlabel(..‘eigenschaftsname‘,wert_der_eigenschaft,..)
Die Eigenschaften der Achsenbeschriftung werden entsprechend gesetzt. Die möglichen
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 Ausdrücke x und y festgelegt. Sind x, y Vektorausdrücke, so markieren
sie den Beginn der Textzeilen, die in der Zeichenkettenmatrix (in der Regel ein zelluläres
Feld von Zeichenketten) enthalten sind. Die TeX-Kommandos werden interpretiert, so
dass auch Formeln und Sonderzeichen im Text auftreten können.
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 können sehr flexibel festegelegt werden. Die Eigenschaften sowie
die möglichen 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 - 35
2.5 Daten-Input/Output
2.5.1 Lesen/Schreiben von binären Dateien
Mit im folgenden behandelten Funktionen lassen sich binäre Speicherabbilder von Daten
zwischen Dateien und Arbeitsspeicher übertragen.
fid = fopen(filename)
Die Datei wird für den Lesezugriff geöffnet. Der Ausdruck filename muss den Namen
der Datei einschließlich Zugriffspfad, sofern nicht auf das Standardverzeichnis zu-
gegriffen wird, enthalten. Unter fid steht der File-Identifikator zur Verfügung, über den
in den folgenden Transferoperationen auf die geöffnete Datei Bezug genommen wird.
fid = fopen(filename,permission)
Zusätzlich zu den obigen Angaben wird bei diesem Aufruf ein Zugriffsrecht gesetzt.
Dieses wird über den Parameter permission als Zeichenkette angegeben. Folgende
Möglichkeiten sind von Bedeutung:
permission Bedeutung
‘r‘ Öffnen nur für Lesezugriff.
‘w‘ Öffnen nur für Schreibzugriff.
‘a‘ Öffnen nur für Anhängen von Daten.
‘r+‘ Öffnen nur für Lese-/Schreibzugriff.
[fid,message] = fopen(filename,permission)
Diese Form des Aufrufs unterscheidet sich von den bisherigen Formen dadurch, dass in
der Variablen message eine Mitteilung im Falle eines Systemfehlers übergeben wird.
Im Fehlerfall wird für fid der Wert -1 zurückgegeben.
A= fread(fid)
Aus der unter fid geöffneten Datei wird A gelesen. Dabei werden folgende Annahmen
getroffen:
• A ist Spaltenvektor.
• Die Datei wird bis zum Endezeichen gelesen.
• Die Daten werden als numerisch kodierte Zeichenfolge interpretiert (jedes Byte
wird in einem Vektorelement abgespeichert.
Sind diese Annahmen nicht zutreffend, ist einer der folgenden Aufrufe zu nutzen.
A = fread(fid,size,precision)
2 - 36 Elementare Konstrukte
Dieser Aufruf gestattet es, im Parameter size die Anzahl der zu übertragenden Daten
vorzugeben und im Parameter precision die interne Darstellung zu kodieren. Für den
Parameter size sind folgende Möglichkeiten vorgesehen:
size Bedeutung
n Es werden n Elemente in den Spaltenvektor A übertragen.
inf Es werden alle Elemente der Datei in den Spaltenvektor A über-
tragen.
[n,m] Die Daten werden in die [n x m] - Matrix A übertragen.
Der Parameter precison muss ein Zeichenkettenausdruck sein, der folgende Werte
annehmen kann:
[A,count] = fread(fid,size,precision)
Alle Parameter haben die gleiche Bedeutung wie beim vorangegangenen Aufruf. Im
Parameter count wird zusätzlich die Anzahl der übertragenen Datenelemente bereit-
gestellt.
fwrite(fid,A,precision)
Die Parameter besitzen die bereits eingeführten Bedeutungen; mit A ist das zu über-
tragende 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 zurückgegeben; 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 zunächst drei Matrizen berechnet und gespeichert. Die Längen der
Zeilen und Spalten stehen als ganze Zahlen am Anfang der Datei.
Die Datei kann in einem anderen Zusammenhang wieder gelesen werden; die Daten werden nun
genutzt, um einen 3D-Grafen zu erzeugen.
Durch die im folgenden zu behandelnden Funktionen werden die Daten als Zeichenketten auf
dem Datenträger dargestellt. Das hat zur Folge, dass die Daten beim Lesen und beim Schreiben
konvertiert werden müssen. Die Vorschriften beim Schreiben werden über einen Format-String
kodiert. Beim Lesen wird die formatierte Textdatei nach bestimmten Regeln interpretiert, so dass
die Datenfelder zunächst extrahiert werden und anschließend 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 über-
tragen.
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 enthält
nicht das Endezeichen der Zeile (das Zeichen NewLine).
Wird das Ende der Datei ( End of File ) erreicht, enthält 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 enthält.
tline = fgets(fid,nchar)
Es werden höchstens 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 gegeben-
falls zyklisch durchlaufen. Die Variable A wird als Spaltenvektor interpretiert. Die
Formatvorschrift folgt der Syntax:
[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. Dafür
gelten folgende Regeln:
size Bedeutung
n Es werden n Elemente konvertiert und in den Spaltenvektor A
übertragen.
2 - 40 Elementare Konstrukte
inf Es werden alle Elemente der Datei konvertiert und in den Spalten-
vektor A übertragen.
[n,m] Die Daten werden konvertiert und in die [n x m] - Matrix A über-
tragen. Die Matrix wird spaltenweise gefüllt.
count = fprintf(fid,format,A,...)
Die Werte der in A enthaltenen Elemente werden als konvertierte Textketten in die
Datei fid übertragen. Die Formatvorschrift, die die Darstellung der Daten in der Text-
datei regelt, besteht wiederum aus einer Liste von Formatfeldern. Wird das Ende dieser
Liste erreicht und es sind noch zu übertragende Daten vorhanden, so wird mit der ersten
Vorschrift der Liste erneut begonnen. Die Formatierungsvorschrift wird also gegebenen-
falls zyklisch durchlaufen. Ist die auszugebende Datenstruktur eine Matrix, so wird diese
spaltenweise abgearbeitet. Die Formatvorschrift folgt der Syntax:
Wird in der Zeichenkette, die die Formatvorschrift darstellt, das Zeichen % gefunden, so
werden die folgenden Zeichen als Formatfeld interpretiert. Zeichenfolgen, die keine
Formatfelder sind, werden als Zeichenketten in den Ausgabebereich übertragen. Soll das
Zeichen % in einer solchen Zeichenkette dargestellt werden, so muss %% geschrieben
werden. Wird in der Formatvorschrift das Zeichen \ gefunden, so wird das Folgezeichen
als Steuerzeichen interpretiert. Soll \ als Zeichen ausgegeben werden, so ist \\ zu schrei-
ben.
Für das optionale Flag in einem Formatfeld sind folgende Möglichkeiten vorgesehen:
Flag Bedeutung
+ Es wird in jedem Falle das Vorzeichen dargestellt ( + oder - ).
- Die auszugebende Zeichenkette wird linksbündig im Konver-
tierungsfeld angeordnet.
0 Führende Leerzeichen werden durch Nullen ersetzt.
Die folgenden Zeichen, wenn sie \ folgen, dienen zur Steuerung der Darstellung des
Textes auf dem Speichermedium.
Steuerzei- Bedeutung
chen
b Leerzeichen
f Positionieren des Ausgabezeigers auf die nächste Zeile bei
Beibehaltung der Spaltenposition.
n Positionieren des Ausgabezeigers auf den Anfang der nächs-
ten Zeile (NewLine)
r Positionieren des Ausgabezeigers auf den Anfang der aktuel-
len Zeile.
t Tabulatorsprung.
“ Ein Hochkomma wird ausgegeben.
< Beispiel
die Vektoren mit den Näherungswerten werden in einer Matrix gespeichert; diese wird an-
schließend in eine Datei abgelegt. An den Anfang der Datei werden die Anzahlen der Zeilen und
Spalten geschrieben.
5 81
0.000 0.000 0.739 0.196 0.040
0.500 0.476 0.998 0.591 0.493
1.000 0.905 1.242 0.956 0.906
1.500 1.291 1.473 1.292 1.281
2.000 1.637 1.690 1.601 1.621
2.500 1.947 1.893 1.884 1.927
3.000 2.222 2.084 2.141 2.201
3.500 2.466 2.261 2.375 2.446
4.000 2.681 2.426 2.586 2.663
.............
Die Datei poly.dat könnte 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);
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 für den reinen
Kommandobetrieb eigentlich überflüssig; für 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 Zeichen-
kette '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
enthält den Wert der Konstanten; wird die Eingabe als Zeichenkette ( also in Hoch-
komma eingeschlossene Zeichenfolge) kodiert, so enthält die Variable a diese Zeichen-
kette.
a = input('prompt','s')
Auch nach diesem Kommando wird eine Dateneingabe über die Tastatur erwartet. Die
Zeichenkette 'prompt' wird vorher ausgegeben. Die Variable a enthält aber anschie-
ßend 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
disp(X)
Der Inhalt von X (kann ein skalar Ausdruck , ein Vektorausdruck, ein Matrixausdruck
2 - 44 Elementare Konstrukte
oder ein Zeichenkettenausdruck sein) wird in einem Standardformat auf dem Bildschirm
dargestellt.
count = fprintf(format,A,...)
count = fprintf(1,format,A,...)
Die Bedeutungen der Parameter sowie die Syntax der Formatierung sind aus 2.5.2 zu übertragen.
Numerische Daten und Zeichenketten können auch intern konvertiert werden. Das Ergebnis liegt
anschließend im Arbeitsspeicher als Zeichenkette oder als Zeichenkettenfeld vor. Umgekehrt
kann ein Zeichenkettenfeld in ein Feld numerischer Daten konvertiert werden.
A = sscanf(s,format)
A = sscanf(s,format,size)
Der Parameter s kennzeichnet einen Zeichenkettenausdruck. Die Bedeutung der anderen Para-
meter kann aus der Beschreibung der Funktion fscanf im Abschnitt 2.5.2 übernommen
werden.
s = sprintf(format,A,...)
Die Variable s ist eine Zeichenkettenvariable. Die Bedeutung der anderen Parameter kann aus
der Beschreibung der Funktion fprintf im Abschnitt 2.5.2 übernommen werden.
< Beispiel
x =
1.2300
45.6000
81.9000
237.1200
In den vorangegangenen Abschnitten wurde MATLAB als interaktiv zu nutzendes System für
wissenschaftlich-technische Berechnungen behandelt, das über eine relativ einfache Komman-
dosprache zu bedienen war. Diese Form ist nur für einfache Berechnungsabläufe effizient.
Schon das wiederholte Ausführen der Kommandos über den Kommandopuffer zeigt sehr
schnell die Grenzen dieser Arbeitsweise. Das System stellt darum eine Programmierumgebung
bereit, die es ermöglicht, MATLAB-Programme interaktiv entwickeln und testen zu können.
MATLAB-Programme als „vorprogrammierte“ Kommandofolgen können in unterschiedlichen
Formen entwickelt werden. Dem Programmierer stehen drei Formen zur Auswahl bereit; welche
er wählt, hängt von der Zielstellung seiner Entwicklungsaufgabe ab. Im folgenden werden diese
drei Formen kurz charakterisiert.
MATLAB-Skript
Es erscheint zweckmäßig, bei größeren und vor allem bei wiederholt abzuarbeitenden Kom-
mandofolgen, diese in Dateien abzulegen und bei Bedarf zur Abarbeitung zu bringen. Derartige
Kommandofolgen werden als Skripts bezeichnet. Ein Skript kann alle Elemente der MATLAB-
Programmiersprache enthalten. Von der MATLAB-Funktion unterscheidet sich das Skript
dadurch, dass es keinen Parameterteil besitzt. Das hat zur Folge, dass evt. notwendige Ver-
änderungen von Parametern nur durch Editieren des Skripttextes vorgenommen werden können.
MATLAB-Funktionen
MATLAB-Funktionen erweitern das Skriptkonzept durch die Einführung eines Abschnittes zur
Definition formaler Parameter. Diese Definition wird dabei für Input- und Output-Parameter
getrennt vorgenommen. Die formalen Parameter werden beim Aufruf durch die Werte der
aktuellen Parameter ersetzt. Damit besitzen Funktionen gegenüber Skripts eine wesentlich
größere Flexibilität. Funktionen können sowohl durch andere Funktionen als auch auf der
Kommandoebene aufgerufen werden. Die MATLAB-Toolboxes werden als Funktionsbibli-
otheken bereitgestellt.
Alle Formen von MATLAB-Programmen können als Ausdrucksmittel für die algorithmischen
Strukturen die im Abschnitt 2. eingeführten Konstrukte nutzen. Daneben gibt es weitere An-
weisungstypen (die prinzipiell auch im Kommandobetrieb genutzt werden können), die die
Steuerung der Programmabläufe unterstützen und die im folgenden Abschnitt behandelt werden.
alternativ_anweisung 6 if logischer_ausdruck
anweisung ...
elseif logischer ausdruck
anweisung ...
...
else
anweisung ...
end
< Beispiel
else
disp('Matrix singulär!');
end
b =
-6.6577
3.6241
0.9069
1.1875
3.2.2 Laufanweisung
Die Laufanweisung ermöglicht die wiederholte Ausführung einer oder mehrerer Anweisungen.
Es gilt folgende Syntax:
< Beispiel
index(imax)=index(i);
index(i)=ima;
end
>> x
x =
5 3 3 2 1 1
» index
index =
4 6 2 3 1 5
Eine Laufanweisung oder eine Schleifeanweisung kann vor Erreichen der eigentlichen Abbruch-
bedingungen verlassen werden. Es wird dies durch die Abbruchanweisung erreicht. Es gilt
folgende Syntax:
abbruchanweisung 6 break
S Der Wert des skalaren Ausdrucks bzw. des Zeichenkettenausdrucks wird bestimmt. An-
schließend 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.
S Wird der Wert in keiner Werteliste gefunden, so wird, falls vorhanden, der Anweisungsteil
nach otherwise abgearbeitet; sonst wird die Programmbearbeitung mit der ersten An-
weisung nach end fortgesetzt.
S Die Wertelisten müssen mit dem Typ des Ausdrucks nach switch kompatibel sein.
S Umfasst die Werteliste nur einen Wert, können die geschweiften Klammern entfallen.
S In den Anweisungsblöcken können weitere Fallunterscheidungs-Anweisungen auftreten;
diese müssen streng hierarchisch geschachtelt werden.
< Beispiel
Im nachfolgenden Programmabschnitt wird eine Messgröße, die primär als elektrischer Span-
nungswert vorliegt, in die indirekt gemessene primäre physikalische Größe umgerechnet. Der
Sensor habe 4 Messbereiche; für jeden gilt eine andere Umrechnungsbeziehung. Im nachfolgen-
den MATLAB-Programmabschnitt wird diese Umrechnung für mehrere Bereiche realisiert.
3.2.5 Schleifeanweisung
Durch eine Schleifeanweisung wird eine Anweisungsgruppe so oft wiederholt ausgeführt, bis
eine Abbruchbedingung erfüllt ist. Im Gegensatz zur Laufanweisung liegt damit die Zyklenzahl
zu Beginn der Ausführung noch nicht fest. Es gilt folgende Syntax:
S Der logische Ausdruck nach dem Schlüsselwort while definiert die Abbruchbedingung.
Solange dieser Ausdruck den Wert 1 (für wahr) liefert, wird der folgende Anweisungsblock
abgearbeitet; nimmt er den Wert 0 (für falsch) an, wird die Abarbeitung nach end fortge-
setzt.
3-6 Programmentwicklung
< Beispiel:
Im folgenden Beispiel wird der Reibungsbeiwert für die Rohrströmung nach der Gleichung von
COLEBROOK berechnet. Diese Gleichung hat die Form
Die Gleichung lässt sich nach dem Einsetzverfahren lösen; dazu muss eine Scheinauflösung
gefunden werden, die dem folgenden Programmbeispiel entnommen werden kann. Der Para-
meter r ist die relative Wandrauhigkeit und Re bezeichnet die REYNOLDS-Zahl
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 Maßnahmen „abzufangen“). Es gilt folgende Syntax:
fehlerreaktions_anweisung 6 try
anweisung ...
catch
anweisung ...
end
S Die zwischen den Schlüsselwörtern try und catch stehenden Anweisungen werden
ausgeführt. Tritt ein Fehler auf, so wird der Anweisungsblock nach dem Schlüsselwort
catch ausgeführt.
S Die Fehlerursache kann durch Aufruf der Funktion lasterr ermittelt werden. Diese
Funktion liefert die letzte MATLAB-Fehlermitteilung.
S Tritt zwischen catch und end ein Fehler auf, so wird die Programmabarbeitung abgebro-
chen, es sein denn, der Abschnitt ist selbst als Fehlerreaktions-Anweisung ausgeführt.
< 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 Parametervermitt-
lung ist nicht möglich.
Für die Erzeugung eines Skripts kann prinzipiell ein beliebiger Texteditor verwendet werden. Es
empfiehlt sich aber, den von MATLAB bereitgestellten Editor zu verwenden, da dieses Werk-
zeug eine Reihe nützlicher Funktionen bereitstellt. So hebt es einige Sprachelemente farblich
hervor, analysiert die Klammerstruktur in MATLAB-Ausdrücken, strukturiert den Programm-
text bei einigen Anweisungen automatisch und hängt beim Speichern standardmäßig die
Dateierweiterung .M an den Dateinamen an. Außerdem 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 zunächst der Editor zu aktivieren. Dafür gibt es zwei
Möglichkeiten:
• Über die Kommandozeile wird das Kommando
>> edit
eingegeben. Ein leeres Editorfenster wird anschließend geöffnet.
• Über den Menüpunkt File des Desktop-Menüs wird der Menüpunkt New angewählt; im
erscheinenden Untermenü wird der Menüpunkt M-File aktiviert. Anschließend erscheint
ebenfalls das leere Editorfenster.
• Soll eine bereits vorhandene Skriptdatei geöffnet werden, so ist entweder das Kommando
>> edit(‘dateiname‘) oder >> edit dateiname
einzugeben ( dabei ist lediglich der Dateiname anzugeben; die Erweiterung .M ist weg-
zulassen! ), oder der Menüpunkt Open im File-Menü des Desktop ist zu aktivieren.
3-8 Programmentwicklung
Soll die Kommandofolge des Skripts abgearbeitet werden, gibt es zwei Start-Möglichkeiten:
• Der Name ( es ist wiederum nur der Dateiname anzugeben; die Erweiterung .M ist weg-
zulassen! ) der Datei wird über die Kommandozeile eingegeben. Damit wird die Abarbei-
tung des Skripts gestartet.
• Über den Menüpunkt des Editorfenster wird der Unterpunkt Save and Run bzw. Run
aktiviert.
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 können. Somit muss eine Funktion über
einen speziellen Abschnitt verfügen, der die Parametervermittlung beschreibt. Damit ergibt sich
folgende syntaktische Struktur:
funktion 6
function ergebnisparamter_liste = name_der_funktion (eingabeparameter_liste)
kommando ...
S Sollen Funktionen als Parameter an eine Funktion übergeben werden, so ist wie folgt zu
verfahren:
• Der Name der Funktion ist als formaler Parameter in der Liste der Eingabeparameter
aufzuführen. Programmtechnisch steht dieser Name für ein Funktions-Handle.
• Lokal kann die Funktion dann im Unterprogramm wie eine externe Funktion aufgerufen
werden.
• Beim Aufruf der Funktion, die eine Funktion als aktuellen Parameter erfordert, ist dieser
aktuelle Parameter als Funktions-Handle der aktuellen Funktion zu übergeben. Dieses
Handle wird durch das dem Funktionsnamen vorangestellt Zeichen @ (Tastenkombina-
tion <Alt Gr > < Q > ) erzeugt.
• Diese Technik der Parameterübergabe 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 müssen
(so z. B. die numerische Integration oder die Lösung von Anfangswertproblemen).
S Die Listen der formalen Parameter können leer sein.
S 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
verkürzter 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 Reibungsbei-
wertes nach der COLEBROOK-Gleichung läßt sich wie folgt durch eine Funktion realisieren:
function x = fkt_colebrook(r,Re)
% Lösung der Colebrook-Gleichung
% für den Reibungsfaktor der Rohrströmung
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 können. Durch folgende Kommandos lässt sich mit Hilfe der Funktion ein
Diagramm erzeugen, dass den Reibungsbeiwert über der Re-Zahl darstellt.
>>Re=1e4:100:2e5;
>>plot(Re,fkt_colebrook(1e-4,Re))
3 - 10 Programmentwicklung
Im folgenden Beispiel wird die Polynom-Approximation einer Funktion realisiert. Dabei wird
der Name der Funktion als formaler Parameter eingeführt. Die angegebene Funktion zur
Approximation kann also für beliebige MATLAB-Funktionen verwendet werden. Der Para-
meter n bestimmt den Grad des approximierenden Polynoms; die Parameter xu, dx, xo de-
finieren den Bereich, den die unabhängige Variable durchläuft.
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 würde sich für die Approximation der sin-Funktion durch ein
Polynom 5. Grades im Bereich 0 bis 7 ergeben:
>> fit_polynom(@sin,5,0,0.1,7)
ans =
-0.0047 0.0748 -0.3276 0.1215 0.9976 -0.0091
und die Grafik (im folgenden weggelassen) für den Vergleich der Originalfunktion mit der
Approximation.
Die Namen von Variablen und Funktionen unterliegen bezüglich ihrer Gültigkeitsbereiche
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,
können 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 Verzeich-
nissen gesucht; das M-File, das die Funktion enthält, muss über einen dieser Suchpfade
erreichbar sein. Die Liste der Pfade kann über den Menüpunkt Set Path des File-Menüs im
Desktop eingesehen bzw. ergänzt werden.
S Die formalen Parameter sowie alle lokalen Variablen, die im Kommandoteil der Funktion
eingeführt werden, sind nur innerhalb der Funktion gültig. Die Namen können also auch in
anderen Funktionen verwendet werden; die Bedeutung eines Namens ist an den Gültigkeits-
bereich der jeweiligen Funktion gebunden. Jede Funktion besitzt damit einen eigenen
Workspace.
S Sollen bestimmte Variablen über den Gültigkeitsbereich einer Funktion hinaus erreichbar
sein, müssen sie als global deklariert werden. Diese Deklaration folgt der Syntax:
Alle Funktionen, die die globale Deklaration enthalten, können auf die so eingeführten
Variablen zugreifen. Die Deklaration muss vor der ersten Verwendung der Variablen im
Kommandoteil erfolgen.
< Beispiel
function u = umsatz(T,tau)
global k0;
global EA;
k= k0*exp(-EA./(T+273));
u= 1-1./(1+tau.*k);
>> global k0
>> global EA
>> k0=650; EA=3800;
>> T=20:5:80;
>> u=umsatz(T,50);
>> plot(T,u)
Bei den Lösungsverfahren für lineare Gleichungssysteme ist zwischen den direkten und den
iterativen Lösungsverfahren zu unterscheiden. Iterative Lösungsverfahren sind für schlecht
konditionierte Systeme sowie für Systeme hoher Ordnung mit schwach besetzten Koeffizienten-
matrizen von Bedeutung.
Den Lösungsvektor x des linearen Gleichungssystems A x = B erhält man über das folgende
MATLAB-Kommando:
3 - 12 Programmentwicklung
x = A \ B
Die Lösung 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 Lösungen, wobei die Spaltenvektoren von x den jeweili-
gen Spalten von B als Lösungsvektoren zugeordnet sind.
A ist im Standardfall eine [n x n] - Matrix. Für die Anwendung des Operators \ ist das aber
keine notwendige Voraussetzung; A kann eine [m x n]-Matrix sein. Damit sind die folgenden
Spezialfälle für die Bestimmung des Lösungsvektors x zu unterscheiden:
< Beispiel
x =
0.9949 1.6571
-2.7365 -5.4217
1.2998 2.7264
>> A*x
ans =
1.0000 2.4000
5.0000 2.5000
10.0000 23.7000
x =
0.1826 0.0479
0 0
0.0502 0.2507
Programmentwicklung 3 - 13
>> A*x
ans =
1.0000 2.4000
5.0000 2.5000
q = quad(fun,a,b,tol)
Es wird die adaptive SIMPSON -Regel angewandt, wobei der absolute Fehler kleiner als tol
ist. Dieser Parameter kann auch weggelassen werden; es wird dann der Standardwert von
1.0E-6 angenommen. Die Parameter a und b bestimmen die untere bzw. obere Integrations-
grenze. fun bezeichnet einen Funktions-Handle, der auf die Funktion für den Integranden
verweist. Diese Funktion muss gerade einen Eingangsparameter, der die Integrationsvariable
darstellt, besitzen.
q = quadl(fun,a,b,tol)
Der Wert des Integrals wird nach der LOBATTO -Quadraturformel bestimmt; die Parameter
besitzen die gleiche Bedeutung wie bei der vorangegangenen Funktion.
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 für die zwei
Integrationsvariablen sein.
< Beispiel
Die folgende Funktion gestattet die Berechnung des bestimmten Integrals für eine Reihe
vorgegebener Werte der oberen Integrationsgrenze î (die à - Funktion ist als Standardfunktion
in MATLAB verfügbar):
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
function y = fkt_film(x)
y= exp(-x.^3);
Die folgenden MATLAB-Kommandos führen zur grafischen Darstellung der Funktion È(î):
>> x=0:0.1:2;
>> y=t_film(x);
>> plot(x,y)
stellt MATLAB eine Reihe von Lösungsprozeduren 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 für einen der in der folgenden Tabelle angegebenen
Namen:
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)
Form zu setzen, ist die Funktion odeset aufzurufen. Die beiden Hauptformen des Aufrufs
sind im folgenden gegeben:
options = odeset('name1',wert1,...)
Die Zeichenketten stellen die Namen der Eigenschaften bereit; den Namen schließen sich
die aktuellen Werte an. Die Liste der möglichen Parameter ist umfangreich (s. on-line-Hilfe
zu dieser Funktion). In der folgenden Liste ist eine Auswahl für die wichtigsten Fälle zu
finden:
Standardwert: 1E-3
AbsTol reelle Kon- Vektor der absoluten Genauigkeiten; wird ein Ska-
stante lar angegeben, wird dieser Wert für alle x(i) ange-
nommen. Standardwert: 1E-6
OutputFcn Funktions-H. Funktions-Handle auf eine anwenderspezifische
Funktion, die die Darstellung der Lösung über-
nimmt. Die Einzelheiten zur Struktur dieser Funk-
tion sind in der on-line-Hilfe unter dem Stichwort
ODE-Solver Output Properties zu finden.
@odeplot Diese Funktion ist bereits vorhanden; sie ist zu-
gleich die Standardfunktion für die Ergebnisdar-
stellung. Die Zustandsgrößen werden über der Zeit
dargestellt.
@odephas2 Diese Funktion ist bereits vorhanden. Es wird ein
zweidimensionales Phasendiagramm dargestellt.
@odephas3 Diese Funktion ist bereits vorhanden. Es wird ein
dreidimensionales Phasendiagramm dargestellt.
OutputSel Vektor mit Dieser Vektor enthält die Indizes der Zustandsgrö-
ganzzahligen ßen, die für die Ergebnisdarstellung mit der Aus-
Elementen gabefunktion herangezogen werden sollen.
MaxStep reelle Kon- Größte Schrittweite, die der Integrator verwenden
stante darf. Standardwert: das durch tspan gegebene
Intervall.
InitialStep reelle Kon- Der Integrator wird versuchen, mit diesem Intervall
stante zu beginnen; werden die Toleranzgrenzen verletzt,
wird die Schrittweite verringert.
Programmentwicklung 3 - 17
options = odeset(oldopts,'name1',wert1,...)
Ein bereits existierender Satz von Optionen oldopts wird modifiziert.
Der Ergebnisparameter T enthält die Zeitpunkte, zu denen eine Lösung vorliegt und die
Matrix Y stellt spaltenweise die Lösungen für die einzelnen Zustandsgrößen bereit.
< Beispiel
Das folgende nichtlineare DGL-System, das auch als das LOTKA -VOLTERRA -DGL-System
bezeichnet wird, beschreibt das sogenannte Räuber-Beute-Modell. Dieses DGL-System kann
aber auch für die Beschreibung autokatalytischer Reaktionen herangezogen werden. Es handelt
sich um das folgende Anfangswertproblem:
Für die Kodierung der rechten Seite kann die folgende MATLAB-Funktion angegeben werden:
function f = lotka_volterra(t,x)
% Funktion für 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 gelöst; die Zeitverläufe werden dargestellt:
MATLAB stellt für die Lösung 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 unabhängige Variable; der Parameter y liefert den Vektor der
Zustandsgrößen. Der Ergebnisparameter muss die rechten Seiten der Differentialglei-
chungen 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
Der Parameter solinit ist eine Strukturvariable, die über folgende Datenfelder verfügt:
S solinit.x Liefert das Anfangsraster der unabhängigen Variablen. Dabei muss
gelten: solinit.x(1)=a solinit.x(end)=b.
S solinit.y Matrix der Anfangsschätzungen für die Lösungen. Die Spalte
solinit.y(:,i) stellt die Schätzung der Zustandsgrößen am Ras-
terpunkt solinit.x(i)bereit.
Für die Belegung der Struktur solinit kann die Funktion bvpinit genutzt werden.
Diese wird wie folgt aufgerufen:
solinit = bvpinit(x,v)
Dabei ist x wiederum der Vektor der Stützstellen. Der Vektor v hat für jede Zustandsgröße
eine Komponente, die als Anfangsschätzung auf alle Stützstellen übertragen wird. Das
Unterprogramm belegt somit die Struktur mit konstanten Anfangswerten in der Form, wie
das von der Funktion bvp4c gefordert wird.
Der Parameter options spezifiziert, sofern er angegeben wird, die Eigenschaften des
Lösungsalgorithmus (relative/absolute Genauigkeiten usw.). Die hierfür bestehenden
Möglichkeiten sind der on-line-Hilfe zu entnehmen. Um den Parameter richtig zu belegen,
gibt es die Hilfsfunktion bvpset.
Der Ergebnisparameter sol ist eine Strukturvariable, die über folgende Datenfelder verfügt:
S sol.x Enthält als Vektor die Stützstellen der Lösung. Diese Stützstellen sind die,
die der Lösungsalgorithmus festgelegt hat.
S sol.y Diese Matrix stellt zeilenweise die Lösungsverläufe für die Zustandsgrößen
an den in x mitgeteilten Stützstellen dar.
S sol.yp Diese Matrix stellt die Werte der ersten Ableitungen der Zustandsgrößen an
den Stützstellen dar.
Hinweis: Die Namen der Strukturvariablen können vom Anwender frei gewählt werden;
die Namen der Datenfelder sind jedoch so wie oben angegeben zu wählen.
Durch Einführung neuer Zustandsgrößen kann diese DGL 2. Ordnung in ein System von zwei
DGL 1. Ordnung umgeformt werden:
Damit nimmt das DGL-System einschließlich der umgeformten Randbedingungen die neben-
stehende Gestalt an
Die MATLAB-Funktionen für die Lösung 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 für die Lösung des Problems und die grafische Darstellung der Lösung
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,:))
MATLAB stellt im Basispaket eine Funktion zur Lösung des folgenden Anfangs-Randwert-
Problems zur Verfügung:
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 abhängen können. Es gelten folgende Festlegungen:
• f ist der Vektor der Fluss-Terme und s der Vektor der Quellterme. C ist eine Diagonalma-
trix, deren Diagonalelemente entweder identisch Null sind (die entsprechende PDGL ist
elliptisch) oder von Null verschieden (die entsprechende PDGL ist parabolisch).
• Die Anfangsbedingungen müssen durch folgende Funktionen gegeben sein:
• Die Randbedingungen müssen an den Stellen x = a und x = b für alle t die Randbedingungen
befriedigen, die in der folgenden Form gegeben sind:
Der folgende Funktionsaufruf bestimmt die Lösung eines Systems von PDGL‘s
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)
• Der Parameter m bestimmt die Ordnung der Symmetrie (s. o.). Es gilt 0 #m #2.
• Der Parameter pdefun ist ein Funktions-Handle auf die Funktion, die die Komponen-
ten 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 Lösungs-
funktionen 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, für die Funktionen, die für 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 überge-
Programmentwicklung 3 - 23
ben die aktuellen Werte der Lösung am linken bzw. rechten Rand.
Die Vektoren pl, ql stellen die Koeffizienten im Gleichungssystem der Randbedingun-
gen (s. o.) am linken Rand bereit, die Vektoren pr, qr entsprechend am rechten Rand.
• Der Parameter xmesh bezeichnet den Vektor der Rasterpunkte für die Ortskoordinate:
xmesh = [x0, x1 , ..., xn ]
wobei x0 = a und xn =b gilt. Die Werte müssen 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 können der on-line-
Hilfe entnommen werden.
• Der Ergebnisparameter sol ist ein dreidimensionales Feld, das aus so vielen zweidi-
mensionalen „Scheiben“ besteht, wie das System Gleichungen bzw. Zustandsgrößen hat.
Daraus folgt beispielsweise:
S sol (:,:,k) liefert die Werte der Lösung für die k-te Zustandsgröße über dem
vorgegebenen Orts-/Zeitraster.
S sol (i,:,k)liefert das Ortsprofil zum Zeitpunkt tspan(i) für die k-te Zu-
standsgröße.
S sol (i,j,k) liefert den Wert der k-ten Zustandsgröße an der Stelle xmesh(j)
zum Zeitpunkt tspan(i).
Ein Gas A diffundiert in eine Flüssigkeit B und reagiert dabei mit der Flüssigkeit. Die Flüssig-
keitssäule hat die Länge L; der Diffusionskoeffizient sei DAB. Die Transportgleichung für die
Komponente A besitzt die konkrete Form:
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 für die Erfüllung der Randbedingungen
% Entspricht der Funktion bcfun.
pl=ul-0.02;
ql=0; pr=0; qr=1;
Die Funktion zur Lösung der PDGL kann nun wie folgt aufgerufen werden:
Die Symbolic Math Toolbox von MATLAB erlaubt die Ausführung mathematischer Operatio-
nen, wie Differentiation oder Integration in symbolischer Form. Die dafür notwendigen Operan-
den müssen vorher als symbolische Operanden vereinbart werden, um sie von normalen (nume-
rischen) Variablen unterscheiden zu können. Weiterhin ist es notwendig, Ausdrücke definieren
zu können, die als symbolische Verknüpfungen von Konstanten und/oder Variablen interpretiert
werden. Es bestehen die folgenden Möglichkeiten:
Bei allen Formen des sym - Befehls kann auf der linken Seite der Name einer symbo-
lischen Variablen stehen. Wurde diese nicht bereits an anderer Stelle deklariert, so wird
sie durch den betreffenden sym - Befehl als symbolische Variable eingeführt.
1
Im Folgenden wird ausschließlich die Nutzung der Möglichkeiten symbolischen Rechnens
über die Kommandooberfläche behandelt. Die Alternative, Verwendung eines MyPAD
Notbook, wird in diesem Abschnitt nicht beschrieben, da es sich hierbei um ein eigenständiges
Werkzeug handelt. Die notwendigen Details sind in “MuPAD - User’s Guide” zu finden.
4-2 Symbolisches Rechnen
flag Bedeutung
‘r‘ Die Daten werden in eine rationale Darstellung kon-
vertiert.
‘d‘ Es wird eine dezimale Darstellung erzeugt. Die Län-
ge der Dezimalzahl wird durch die vpa-Funktion
festgelegt.
‘f‘ Es wird eine Gleitkommadarstellung erzeugt, wobei
der exponentielle Anteil mit der Basis 2 dargestellt
wird
< Beispiele
>> x=sym('a+b*b+3');
>> x*x
ans =
(a+b^2+3)^2
>> c=0.5;
>> y=sym(c,'r')
y =
1/2
>> z=sym(x+y)
z =
a+b^2+7/2
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, 1/a]
[ 10/3/a, -1/3/a, -2/a]
[ -1/a, 0, 1/a]
>> ans*A
ans =
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]
Soll eine Reihe symbolischer Variablen deklariert werden ohne dass diesen gleichzeitig
Ausdrücke zuzuweisen sind, so ist die folgende Deklaration dem sym-Befehl vor-
zuziehen:
< Beispiel
>> syms X Y Z a b c
>> X=[a b c; 2*a 3*b 4*c]
X =
[ a, b, c]
[ 2*a, 3*b, 4*c]
>> Y=[a b; c a ; a c]
4-4 Symbolisches Rechnen
Y =
[ a, b]
[ c, a]
[ a, c]
>> Z=X*Y
Z =
[ a^2+b*c+c*a, 2*a*b+c^2]
[ 2*a^2+3*b*c+4*c*a, 5*a*b+4*c^2]
< Beispiele
>> abs_a=sqrt(a*ca)
abs_a =
((b+i*c)*(b-i*c))^(1/2)
>> abs_a=simple(sqrt(a*ca))
abs_a =
(b^2+c^2)^(1/2)
>> abs_a=abs(a)
abs_a =
(b^2+c^2)^(1/2)
>> 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 Beträge der Elemente dieser Matrix erhält 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]
Die „Variablen-Konvention“
Im Zusammenhang mit den Umformungsfunktionen taucht das Problem auf, eine symbolische
Variable als unabhängige Variable innerhalb eines Ausdrucks zu deklarieren. Dafür gilt folgende
Regel:
Diese Regel gilt auch im Folgenden, wenn in anderen Zusammenhängen eine unabhängige
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 symbo-
lische Variable für den Sortiervorgang ausgewählt wird, wird nach der oben angegebe-
nen 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
factor ( S )
Diese Funktion zerlegt den Ausdruck S in Faktoren durch Ausklammern gemeinsamer
Bestandteile von Teilausdrücken.
< Beispiel
expand ( S )
Alle in S enthaltenen Klammerausdrücke werden aufgelöst; der Ausdruck S „expan-
diert“.
< Beispiel
>> 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 kürzer als der ursprüngliche Aus-
druck S ist. Die Zwischenschritte der Umformung werden angezeigt, wenn simple allein
aufgerufen wird. Wird das Ergebnis der Funktionsauswertung einer Variablen zugewie-
sen, werden die Zwischenergebnisse nicht angezeigt.
< Beispiele
a =
(sin(x)+cos(x))^2
>> simple(a)
simplify:
2*sin(x)*cos(x)+1
radsimp:
(sin(x)+cos(x))^2
combine(trig):
1+sin(2*x)
4-8 Symbolisches Rechnen
factor:
(sin(x)+cos(x))^2
expand:
sin(x)^2+2*sin(x)*cos(x)+cos(x)^2
combine:
1+sin(2*x)
convert(exp):
(-1/2*i*(exp(i*x)-1/exp(i*x))+1/2*exp(i*x)+1/2/exp(i*x))^2
convert(sincos):
(sin(x)+cos(x))^2
convert(tan):
(2*tan(1/2*x)/(1+tan(1/2*x)^2)+(1-tan(1/2*x)^2)/(1+tan(1/2*x)^2))^2
collect(x):
(sin(x)+cos(x))^2
ans =
1+sin(2*x)
>> simplify(a)
ans =
2*sin(x)*cos(x)+1
< Beispiel
>> syms a b c x
>>
>> a=(x+5)^3
a =
(x+5)^3
>> b=x+c
b =
x+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 für Polynome
die Koeffizienten so geordnet, dass die Komponente mit dem niedrigsten Index den
Koeffizienten vor der höchsten Potenz der Polynomvariablen darstellt und die mit dem
höchsten 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 numeri-
sche Variable im aktuellen Workspace existieren.
4 - 10 Symbolisches Rechnen
< Beispiele
Bestimmung des Wertes eines symbolischen Ausdrucks, der aus symbolischen Kon-
stanten besteht
double ( N )
Der symbolische Ausdruck N beschreibe die arithmetische Verknüpfung numerischer
Konstanten. Durch die Funktion double wird der Wert des Ausdrucks berechnet und in
einer reellen Zahlendarstellung bereitgestellt.
< Beispiel
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 Möglichkeiten der Erzeugung grafischer Funktionsdarstellungen noch wesentlich erweitern1,
deren Beschreibung aber den Umfang dieses Handbuchs sprengen würde.
ezplot ( f )
Der symbolische Ausdruck beschreibe eine Funktion f(x). Die Funktion wird über x im
Standardbereich -2ð < x < 2ð 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: -2ð < x < 2ð ; -2ð < y < 2ð. Die Varia-
blen müssen nicht mit x und y bezeichnet werden, sondern können mit anderen Namen
bezeichnet werden.
1
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 für ezplot nach der obigen Beschreibung.
Lediglich der Wertebereich für die unabhängige 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 für
den Parameter wird 0 < t < 2ð angenommen.
< Beispiele
>> syms x y z
>> z=sin(x)/x
z =
sin(x)/x
ezplot(z,[-5*pi,5*pi])
4 - 14 Symbolisches Rechnen
>> z=sin(x*y)
z =
sin(x*y)
>> ezplot(z)
>> syms x y t
>> x=2*sin(t);
>> y=cos(t);
>> ezplot(x,y)
Symbolisches Rechnen 4 - 15
Sowohl für 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
unabhängigen Variablen erfolgt.
diff ( S )
Es wird die erste Ableitung der durch den symbolischen Ausdruck S definierten Funktion
gebildet. Die unabhängige Variable wird gemäß der Variablen-Konvention gewählt.
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 unabhängige Variable wird gemäß der Variablen-Konvention gewählt.
diff ( S , v , n )
Es wird die n-te Ableitung der durch den symbolischen Ausdruck S definierten Funktion
nach der Variablen v gebildet.
< Beispiele
>> diff(y)
ans =
(x*log(x))^x*(log(x*log(x))+(log(x)+1)/log(x))
4.3.2 Integration
int ( S )
Über die durch den symbolischen Ausdruck S gegebene Funktion wird unbestimmt
integriert. Die Integrationsvariable wird gemäß der Variablen-Konvention gewählt.
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-Konventi-
on gewählt. Die Integrationsgrenzen a und b sind numerische MATLAB-Ausdrücke.
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 Integrations-
grenzen a und b sind numerische MATLAB-Ausdrücke.
< Beispiele
>> simple(int(y))
% Die Einzelschritte von simple werden weggelassen.
% Es wird gleich das Ergebnis angegeben.
ans =
-1/2*exp(-x)*(cos(x)+sin(x))
4.3.3 Grenzwertberechnung
limit ( S )
Es wird der Grenzwert der durch den symbolischen Ausdruck S gegebenen Funktion
bestimmt. Dabei wird angenommen, dass die unabhängige Variable gegen Null geht. Die
unabhängige Variable wird gemäß der Variablen-Konvention gewählt.
limit ( S , g )
Es wird der Grenzwert der durch den symbolischen Ausdruck S gegebenen Funktion
bestimmt. Die unabhängige Variable geht gegen den Wert g. Die unabhängige Variable
wird gemäß der Variablen-Konvention gewählt.
limit ( S , v , g )
Es wird der Grenzwert der durch den symbolischen Ausdruck S gegebenen Funktion
bestimmt. Die unabhängige Variable v geht gegen den Wert g.
< Beispiele
y =
sin(x)/x
>> limit(y)
ans =
1
taylor ( S )
Es wird die durch den symbolischen Ausdruck S definierte Funktion in eine TAYLOR-
Reihe entwickelt. Als Entwicklungsstelle wird Null angenommen; die Entwicklung wird
bis zum sechsten Reihenterm angegeben. Die unabhängige Variable wird gemäß der
Variablen-Konvention gewählt.
taylor ( S , n , v )
Es wird die durch den symbolischen Ausdruck S definierte Funktion in eine TAYLOR-
Reihe entwickelt. Die unabhängige 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 TAYLOR-
Reihe entwickelt. Die unabhängige Variable ist die Variable v. Die Entwicklung wird
bis zum n-ten Reihenterm angegeben. Als Entwicklungsstelle wird der Wert des numeri-
schen Ausdrucks a angenommen.
< Beispiele
y =
1-1/2*x^2+1/8*x^4
Symbolisches Rechnen 4 - 19
symsum ( S )
Es wird die Summe der Reihe berechnet, deren allgemeines Glied durch den symbo-
lischen Ausdruck S gegeben ist. Als Summationsvariable wird die Variable k bzw. die
ihr lexikalisch nächste Variable im Ausdruck angenommen; die Variablen-Konvention
gilt für diesen Fall demnach bezogen auf k. Die Summation wird von Null bis k-1
ausgeführt.
symsum ( S , v )
Es wird die Summe der Reihe berechnet, deren allgemeines Glied durch den symbo-
lischen Ausdruck S gegeben ist. Als Summationsvariable wird die Variable v angenom-
men. Die Summation wird von Null bis v-1 ausgeführt.
symsum ( S , a , b)
Es wird die Summe der Reihe berechnet, deren allgemeines Glied durch den symbo-
lischen Ausdruck S gegeben ist. Als Summationsvariable wird die Variable k bzw. die
ihr lexikalisch nächste Variable im Ausdruck angenommen; die Variablen-Konvention
gilt für diesen Fall demnach bezogen auf k. Die Summationsvariable durchläuft den
Bereich von a bis b.
symsum ( S , v , a , b )
Es wird die Summe der Reihe berechnet, deren allgemeines Glied durch den symbo-
lischen Ausdruck S gegeben ist. Als Summationsvariable wird die Variable v angenom-
men. Die Summationsvariable durchläuft den Bereich von a bis b.
< Beispiele
Die Grundfunktionen der linearen Algebra stehen auch als symbolische Funktionen bereit. Mit
Hilfe dieser Funktionen lassen sich lineare Gleichungssysteme lösen. Prinzipiell kann für 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
>> det(A)
ans =
T1*T2^2*T3^2-T1^2
>> X=inv(A)
X =
[ T2*T3/T1/(T2^2*T3^2-T1), -T2/(T2^2*T3^2-T1)]
[ -1/T2/(T2^2*T3^2-T1), T2*T3/(T2^2*T3^2-T1)]
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
A =
[ a, a^2]
[ 2*a^2, 5*a]
>> [V,D]=eig(A)
[ -1/2*(-(3+(4+2*a^2)^(1/2))*a+5*a)/a^2, -1/2*(-(3-(4+2*a^2)^(1/2))*a+5*a)/a^2]
[ 1, 1]
zu bestimmen, so kann man die oben eingeführte Funktion für die symbolische Inverse inv
anwenden, da gilt:
Es kann aber auch die Notation mit dem Backslash-Operator \ gewählt werden:
Als dritte Möglichkeit kann die solve-Funktion herangezogen werden (s. folgenden Ab-
schnitt).
< Beispiele
X =
Symbolisches Rechnen 4 - 23
Im Mittelpunkt des Interesses steht im folgenden Abschnitt die symbolische Lösung nicht-
linearer algebraischer Gleichungssysteme. Die dafür verfügbare solve-Funktion ist, wie bereits
im Abschnitt 4.4.1 mehrfach hervorgehoben, prinzipiell auch für die symbolische Lösung
linearer algebraischer Gleichungssysteme anwendbar. Allerdings dürften in diesem Fall die im
vorangegangenen Abschnitt behandelten Methoden effektiver sein.
Allgemeine Hinweise
1. Die zu lösenden Gleichungen können durch symbolische Ausdrücke oder durch Zeichen-
ketten dargestellt werden. In den folgenden syntaktischen Beschreibungen werden die
Gleichungen durch die Parameter eq bzw. eq1, eq2 , ... , eqn bezeichnet.
2. Sollen die Gleichungen durch symbolische Ausdrücke 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 Ausdrücke kodiert werden, nicht auftreten.
3. Werden die Gleichungen durch Zeichenketten kodiert, so können 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.
4. Wenn die Namen der Unbekannten, für die die Lösungen 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.
5. Wird ein System von Gleichungen gelöst, treten also mehrere Unbekannte auf, so werden
die Lösungen in einer Struktur abgespeichert. Die Namen der Unbekannten bezeichnen
die Namen der Datenfelder, unter denen die Lösungen zu finden sind.
6. Wenn die Gleichungen nach den Unbekannten nicht auflösbar sind, erfolgt eine Fehler-
mitteilung.
7. Wenn die Lösung sich numerisch darstellen lässt, so ist zu beachten, dass diese numeri-
schen Konstanten ebenfalls symbolische Konstanten sind. In die „normale“ Darstellung
müssen sie mit der double-Funktion konvertiert werden.
4 - 24 Symbolisches Rechnen
solve ( eq )
Der Parameter eq beschreibt eine zu lösende Gleichung; es sind die allgemeinen Regeln
zu beachten.
solve ( eq , v )
Der Parameter eq beschreibt eine zu lösende Gleichung; es sind die allgemeinen Regeln
zu beachten. Die Lösung wird für die Unbekannte v bestimmt.
< Beispiele
ans =
exp(.10778502390377436626197930837265)
Allgemeine Hinweise
Der dem Symbol D (bzw. D n ) folgende Name bezeichnet die gesuchte Funktion, auf
die sich der Differentialoperator bezieht.
S Die Bezeichnungen der gesuchten Funktionen ergeben sich implizit dadurch, dass sie im
Zusammenhang mit einem Differentialoperator auftreten.
S 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:
Das System aus n Differentialgleichungen wird gelöst. Als unabhängige Variable wird v
angenommen. Alle Gleichungen werden durch eine zusammenfassende Zeichenkette
kodiert. Die zu berücksichtigenden Anfangs- bzw. Randbedingungen werden ebenfalls
in einer gemeinsamen Zeichenkette kodiert.
< Beispiele
y=simple(dsolve('T1*Dy+y=exp(-t/T0)','y(0)=0'))
y =
-T0*(exp(-t/T0)-exp(-1/T1*t))/(T1-T0)
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)
Die Toolbox stellt eine Reihe spezieller Funktionen bereit, die im Grundumfang von MATLAB
nicht verfügbar sind. Diese Funktionen können hier nicht alle behandelt werden. Das ist auch
nicht erforderlich, da der Zugriff auf diese Funktionen nach einem einheitlichen Schema erfol-
gen kann:
1. Über ein spezielles Kommando kann die Liste der verfügbaren Funktionen angefordert
werden.
2. Der Aufruf der gewünschten Funktion erfolgt mit Hilfe einer speziellen Rahmenfunkti-
on; für den Aufruf sind die Informationen der Liste zu entnehmen.
Im Folgenden werden die beiden Kommandos, die für den Zugriff auf die speziellen Funktionen
erforderlich sind, beschrieben.
mfunlist
Es wird die Liste der verfügbaren speziellen Funktionen erzeugt. Diese Liste enthält in
drei Spalten den Namen des Aufrufs, die Parameter und die Bezeichnung der Funktio-
nen. 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.
Detaillierte Hinweise und Beschreibungen sind unter den Namen der Funktionen auch
der Online-Hilfe zu entnehmen.
< Beispiel
>> Y=mfun('FresnelS',(0:0.2:1))
Y =
real ( K )
Der Realteil des komplexen Ausdrucks K wird in symbolischer Form bestimmt.
imag ( K )
Der Imaginärteil des komplexen Ausdrucks K wird in symbolischer Form bestimmt.
conj ( K )
Der konjugiert komplexe Ausdruck von K wird in symbolischer Form bestimmt.
< Beispiele
Die Matrix-Exponentialfunktion gibt es auch in symbolischer Form. Sie wird wie folgt aufgeru-
fen:
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 er-
mitteln ist. Als unabhängige 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 er-
mitteln ist. Als unabhängige 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 Ausdrücke f und g beschreiben die beiden Funktionen f(x) und
g(y). Die Festlegungen bezüglich der unabhängigen Variablen erfolgen gemäß Variablen-
Konvention. compose liefert die zusammengesetzte Funktion f(g(y)).
compose ( f , g , z)
Die Variable z wird zur unabhängigen Variablen im Ergebnisausdruck; es wird also
f(g(z)) gebildet. Die Festlegung der unabhängigen Variablen für f und g erfolgt gemäß
Variablen-Konvention.
compose ( f , g , v , w , z )
Die unabhängigen Variablen werden bei dieser Form explizit vorgegeben: v gilt für die
Funktion f und w für 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)
Für weiterführende Darstellungen ist es mitunter hilfreich, einen symbolischen Ausdruck in das
LaTeX-Format zu konvertieren. Die folgende Funktion realisiert diese Aufgabe:
l = latex ( S )
Der symbolische Ausdruck S wird in das LaTeX-Format konvertiert und als Zeichenkette
unter l abgespeichert.
< Beispiele
>> syms x
>> latex(exp(-x^2/2))
ans =
{e^{-1/2\,{x}^{2}}}
>> latex(taylor(exp(-x^2/2)))
ans =
1-1/2\,{x}^{2}+1/8\,{x}^{4}
4 - 34 Symbolisches Rechnen
Im Folgenden werden zwei interaktive Werkzeuge kurz beschrieben, die für die schnelle Aus-
führung symbolischer Operationen sehr hilfreich sein können, zumal sie mit einer Online-Grafik
versehen sind, die für viele Sachverhalte eine gute Visualisierung gestattet.
funtool
Diese Funktion aktiviert das folgende Fenster:
In diesen beiden Fenstern werden die in den Eingabefeldern f und g beschriebenen Funktionen
grafisch dargestellt.
Die Bedeutungen der Schalter auf der „Tastatur“ ergeben sich aus den Beschriftungen, so dass
eine detaillierte Beschreibung nicht erforderlich sein dürfte. Die Buchstaben f, g und a stehen
dabei stets für die oben beschriebenen Eingabefelder.
taylortool
Nach diesem Kommando erscheint das folgende Fenster:
4 - 36 Symbolisches Rechnen
f(x) In diesem Feld wird die zu entwickelnde Funktion eingegeben. Die un-
abhängige Variable wird im Standardfall mit x bezeichnet, kann aber
grundsätzlich eine beliebige Bezeichnung besitzen.
TN(x) In diesem Feld wird die Taylor-Reihe entsprechend der gewählten Ord-
nung und der gewählten Entwicklungsstelle formelmäßig 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.
SIMULINK 5-1
SIMULINK bildet das Systemverhalten durch Blöcke ab. Ein SIMULINK-Block, der für die
Beschreibung des Systemsverhaltens herangezogen werden kann, lässt sich in allgemeiner Form
wie folgt darstellen:
5-2 SIMULINK
Der Vektor der Ausgangsgrößen y hängt sowohl vom Vektor der Zustandsgrößen als auch von
dem der Eingangsgrößen ab. Für den Vektor der Zustandsgrößen x kann angenommen werden,
dass es ein System von Differentialgleichungen oder Differenzengleichungen gibt, das den
aktuellen Zustand aus den zurückliegenden Zuständen, dem Vektor der Eingangsgrößen u und
der Zeit zu bestimmen gestattet.
Die besondere Form des Zustandsmodells wird durch den jeweiligen Blocktyp berücksichtigt.
Die Blöcke werden durch spezifische Parameter an die konkreten Gegebenheiten angepasst.
Diese Parameter können über ein blockspezifisches Parametrier-Formular vorgegeben werden.
In einem SIMULINK-Schema können sowohl zeitdiskrete als auch zeitkontinuierliche Blöcke
kombiniert auftreten. Darüber hinaus gibt es Blöcke, die je nach dem mit welchen Umgebungs-
blöcken sie gekoppelt sind, zeitkontinuierlich oder zeitdiskret arbeiten.
Die Ausgangssignale eines Blockes können zu Eingangssignalen eines anderen Blockes bzw.
anderer Blöcke werden. Die Verbindungen werden durch Signalflusslinien hergestellt.
Der Anwender kann auch Blöcke mit spezifischer Funktionalität programmieren. Diese anwen-
derspezifischen Blöcke können in der MATLAB-Programmiersprache entwickelt werden (S-
Funktionen).
Bei der Ausführung der Simulation setzt das System gewisse Standardwerkzeuge ein. Der
Anwender kann die Lösungswerkzeuge modifizieren; die in MATLAB verfügbaren Integrato-
ren können hierfür herangezogen werden.
Für die Präsentation der Ergebnisse bzw. für deren weitere Verarbeitung stehen spezielle
Blöcke zur Verfügung. Hierbei sind vor allem die grafischen Blöcke für die Anzeigen der
zeitlichen Verläufe in Form von Diagrammen hervorzuheben.
Literatur
< Über das Auswahlmenü des New-Schalters im MATLAB-Rahmenmenü ist der Menü-
punkt Simulink Model zu aktivieren.
< Es wird der entsprechende Schalter im Rahmenmenü der Simulink Block-Bibliothek
aktiviert (s. unten 5.2.2).
Menüpunkt Funktion
File Über diesen Menüpunkt wird ein Menü, das die üblichen File-
Operationen enthält, aktiviert. Dazu gehören:
S New , Open , Close
S Save, Save as..
S Print, Print setup
S Exit
Edit Über diesen Menüpunkt wird ein Menü aktiviert, dessen Funktio-
nen die Veränderung bzw. Anpassung des erzeugten Schemas un-
terstützen. Diese Funktionen (wie Cut, Copy, Clear) beziehen sich
dabei in der Regel auf die markierten Blöcke. Über
Copy Current View to Clipboard
wird das erzeugte Schema in die Zwischenablage kopiert.
View Über die Menüpunkte des Untermenüs, das diesem Punkt zugeord-
net ist, kann das Erscheinungsbild der Werkzeugpalette des Arbeits-
fensters verändert werden. Die Zoom-Funktion wird hier ebenfalls
angeboten.
Simulation Über die drei Menüpunkte, die das zugeordnete Untermenü enthält,
wird der Ablauf eines Simulationslaufs gesteuert:
S Start Der Simulationslauf wird gestartet
S Stop Der Simulationslauf wird abgebrochen
S Step forward Schrittweise Abarbeitung.
Tools Es erscheint ein Menü, das die Aktivierung gewisser Werkzeuge
erlaubt.
Help Es erscheint ein Menü, das die unterschiedlichen Formen der
Online-Hilfe bereitstellt.
Eine Reihe von Menüpunkten kann auch über den Toolbar des Formulars erreicht werden. Im
folgenden Bild werden die Bedeutungen der wichtigsten Schalter kurz erläutert.
Im linken Teilfenster
erscheint das geöffnete
Unterverzeichnis mar-
kiert.
Im rechten Teilfenster
werden die im gewähl-
ten Unterverzeichnis
verfügbaren Blöcke
angezeigt. Diese kön-
nen aus diesem Ver-
zeichnis heraus in das
Arbeitsfenster einge-
fügt werden.
Ports
Die in das Arbeitsfenster eingefügten Blöcke stehen zunächst in keinem definierten Zusammen-
hang zu anderen Blöcken. Für die Herstellung der Verbindungen zwischen den Blöcken sind
spezielle Operationen auszuführen. Zunächst ist festzustellen, dass die Blöcke nach ihrem
Einfügen in das Arbeitsfenster definierte Ports besitzen. Diese werden durch Pfeile dargestellt;
durch die jeweilige Pfeilrichtung lassen sich Eingänge von Ausgängen unterscheiden. Es ist zu
5-8 SIMULINK
beachten, dass die meisten Blöcke nur jeweils einen Eingang und einen Ausgang besitzen.
Welche Dimensionen die Ausgänge besitzen (Skalare, Vektoren Matrizen) hängt zum einen
vom Blocktyp und zum anderen (im Allgemeinen) von der Dimension des Eingangs ab.
Die folgende Auswahl hat orientierenden Charakter. Für 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.
Differenzierer (Derivative)
Integrierer (Integrator)
External reset:
Der Nutzer kann festlegen, ob der In-
tegrationsprozess bei Erscheinen eines
bestimmten Signals mit dem Anfangs-
wert beginnend fortgesetzt werden
soll.
Initial condition:
In diesem Feld wird der Anfangswert
für die Integration angegeben.
Die weiteren Felder sind bei begrenz-
ten Ausgangssignalen von Interesse.
5 - 10 SIMULINK
Zustandsraummodell-Block (State-Space)
Die das Verhalten kennzeichnenden Matrizen sowie die Anfangswerte können über folgendes
Parametrierformular festgelegt werden:
Über diesen Blocktyp lässt sich das Verhalten eines linearen Über-
tragungsgliedes durch die Übertragungsfunktion beschreiben. Die
Übertragungsfunktion wird bei diesem Blocktyp durch Zähler- und
Nennerpolynom beschrieben. Für die Kennzeichnung des Übertra-
gungsverhaltens müssen die Polynomkoeffizienten als Vektoren gemäß der MATLAB-Konven-
tion angegeben werden.
SIMULINK 5 - 11
Time delay:
In diesem Feld wird die Totzeit im
Maßstab der Simulationszeit einge-
geben.
Initial input:
Der in diesem Feld vorgegebene
Wert wird zwischen dem Anfangs-
zeitpunkt und dem durch die Totzeit
markierten Zeitpunkt angenommen.
Initial buffer size:
Dieser Parameter stellt die maxima-
le Speicheranforderung für die Spei-
cherung der Zwischenwerte dar.
5 - 12 SIMULINK
Über diesen Blocktyp lässt sich das Verhalten eines linearen Über-
tragungsgliedes durch die Übertragungsfunktion beschreiben. Die
Übertragungsfunktion wird bei diesem Blocktyp durch ihre Nullstellen
und Pole (das sind die Nullstellen des Nennerpolynoms) sowie durch
einen Verstärkungsfaktor beschrieben. Die Übertragungsfunktion
nimmt damit die folgende Form an:
Zeros:
Die Nullstellen der Übertragungs-
funktion sind in Vektornotation an-
zugeben.
Poles:
Die Pole der Übertragungsfunktion
sind in Vektornotation anzugeben.
Gain:
Die Verstärkung K ist anzugeben.
Dieser Schalter liefert ein oberes oder ein unteres konstantes Ausgangssignal, je
nachdem, ob das Eingangssignal größer oder kleiner als eine vorgegebene Schran-
ke ist. Diese Schranke kann sich für den Einschaltvorgang von der für den Aus-
schaltvorgang unterscheiden; damit kann eine Schalthysterese nachgebildet
werden.
Switch on point:
Ab diesem Wert des Eingangssignals
wird der On-Outputwert angenommen.
Begrenzer (Saturation)
Im nebenstehenden Bild
ist das Parametrierformu-
lar für den Blocktyp dar-
gestellt.
Numerator / Denomina-
tor:
In diese Felder sind die
Koeffizienten des Zähler-
bzw. Nennerpolynoms
einzutragen, wobei auf
die korrekte Ordnung der
Koeffizienten zu achten
ist.
Sample time:
In diesem Feld ist die Ab-
tastzeit einzugeben. Wird
in dieses Feld ein negati-
ver Wert eingetragen, so
wird die Abtastzeit des
Input-Blocks übernom-
men.
Speicherblock (Memory)
Initial condition:
In diesem Feld ist der Anfangs-
wert vorzugeben.
SIMULINK 5 - 17
< Beispiel
Das folgende SIMULINK-Schema löst das lineare Gleichungssystem:
SIMULINK 5 - 19
Bei diesen beiden Blocktypen wird das Ausgangssignal aus dem mit einem
Verstärkungsfaktor bzw. einer Verstärkungsmatrix multiplizierten Eingangs-
signal bestimmt. Beide Blocktypen lassen sich durch die Parametrierung
ineinander überführen. Obwohl die beiden Typen als separate Typen in der
Bibliothek enthalten sind, handelt es sich also um unterschiedlich voreinge-
stellte Versionen eines gemeinsamen Grundtyps.
Gain:
In diesem Feld sind der Verstär-
kungsfaktor bzw. die Ver-
stärkungsmatrix anzugeben.
Multiplication:
In diesem Feld wird die konkrete
Ausführung der Verstärkung ein-
gestellt. In der folgenden Tabelle
sind die Einträge der Pickliste
dieses Feldes und die zugehörigen
Funktionen angegeben.
Als Eingangssignale können sowohl Skalare als auch Vektoren bzw. Matrizen auftreten. Der Typ
des Ausgangssignals hängt somit vom Typ des Eingangssignals und vom Typ der gewählten
Verknüpfung ab.
Der Block liefert als Ausgangssignal den Wert der gewählten Standard-
funktion für das Argument, das durch das Eingangssignal gegeben ist.
Die Anzahl der Eingänge folgt aus der Anzahl der Argumente der gewählten
Standardfunktion (pow hat z.B. zwei Eingänge) .
Im folgenden Bild ist das Parametrierformular des Blocktyps angegeben:
Der Block liefert als Ausgangssignal den Wert der gewählten trigonometrischen
Standardfunktion für das Argument, das durch das Eingangssignal gegeben ist.
Das Parametrierformular hat eine analoge Struktur wie das für die Standard-
funktionen. Folgende Funktionen werden im Feld Function angeboten:
sin, cos, tan,
asin, acos, atan, atan2,
sinh, cosh, tanh, cos + j sin
SIMULINK 5 - 21
Minimum/Maximum-Auswahl (MinMax)
Function:
In diesem Feld ist einzustellen, ob das
Minimum oder das Maximum zu bestim-
men ist.
Summierer (Sum)
Dieser Blocktyp
liefert als Aus-
gangssignal die
Summe der Ein-
gangssignale.
Die Darstellung
kann zwischen
Kreis und Recht-
eck umgeschaltet werden.
Die Anzahl der Eingänge kann para-
metriert werden. Die Vorzeichen der
Summanden können ebenfalls para-
metriert werden, so dass mit diesem
Blocktyp auch die Differenzbildung
realisiert werden kann.
Im nebenstehenden Bild ist das Para-
metrierformular dargestellt.
5 - 22 SIMULINK
Polynomfunktion (Polynomial)
Das Eingangssignal wird als Argument der durch den Block definierten
Polynomfunktion interpretiert; das Ausgangssignal ergibt sich als
zugehöriger Funktionswert. Das Polynom wird durch seinen Koeffi-
zientenvektor definiert, wobei gemäß MATLAB-Konvention die Koef-
fizienten von links nach rechts mit fallender Potenz angeordnet werden.
Im folgenden Bild ist das Parametrierformular dargestellt:
Polynomial coefficients:
In diesem Feld ist der Vektor der Polynomkoeffizienten einzutragen.
SIMULINK 5 - 23
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 können die Ausgangssignale skalare Signale
oder Signalvektoren sein.
Number of outputs:
In diesem Feld werden Anzahl und
Struktur der Ausgangssignale festge-
legt.
Wenn die Eintragung mit der Anzahl
der Eingangssignal-Komponenten
übereinstimmt, so werden entspre-
chend viele skalare Ausgangssignale
erzeugt. Die Anzahl der Komponen-
ten bei vektoriellen Ausgangssignalen
kann als Dimensionsvektor vorgege-
ben werden.
5 - 24 SIMULINK
In diesem Unterverzeichnis sind die Anzeigeblöcke und die Abschlussblöcke für Signalfluss-
linien zusammengefasst. Diese Blöcke haben gemeinsam, dass sie nur Eingangssignale besitzen.
Dieser Blocktyp
realisiert die gra-
fische Anzeige von
Signalverläufen.
Dabei kann die Zu-
ordnung der anzu-
z ei gen den S i gnal e d u r ch d i e
Signalflusslinie fest vorgegeben wer-
den (Blocktyp Scope) oder variabel
vor einem Simulationslauf durch
Auswahl festgelegt werden (Blocktyp
Floating Scope). Beide Formen las-
sen sich (durch das Setzen/Rücksetz-
en eines Auswahlschalters) ineinan-
der überführen. Das Anzeigefenster
wird durch Doppelklick mit der lin-
ken Maustaste auf das Blocksymbol
geöffnet. Das Fenster hat nebenste-
hendes Erscheinungsbild.
5 - 26 SIMULINK
Parametrierformular
Number of axes:
In diesem Feld wird die Anzahl der
Ordinatenachsen angegeben. Das
Diagrammfenster wird in eine ent-
sprechende Anzahl von Diagrammen
zerlegt. Diese haben alle die gleiche
Zeitachse aber unterschiedliche Ordi-
naten. 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.
SIMULINK 5 - 27
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
auszuwählen und der Faktor n ist im benachbarten Feld anzugeben. Sollen alle Werte dargestellt
werden, ist in diesem Feld Sample time auszuwählen.
floating scope:
Wenn dieser Schalter gesetzt wird, so wird das Anzeigegerät zum Floating Scope deklariert.
Umgekehrt kann durch Rücksetzen der Typ Scope eingestellt werden.
Variable name: Der Name der Variablen, unter der die Ergebnisse abzulegen sind, wird
angegeben.
Format: In diesem Feld kann die Art der Speicherung gewählt werden. Drei
Formate sind vorgesehen:
Array: Die Verläufe werden im Matrix-Format abgespei-
chert.
Structure with time: Die Verläufe werden in einer Struktur abgespei-
chert; die Zeit wird in einem Datenfeld abgelegt.
Structure: Die Verläufe werden in einer Struktur abgespei-
chert; die Zeit wird nicht abgelegt.
Das dritte Unter-Formular Style dient der Festlegung der Darstellungen der einzelnen Kurven im
Diagrammfenster. Das Formular erscheint wie folgt:
5 - 28 SIMULINK
Achsenskalierung
Über den ersten Schalter wird die Zoomfunktion für einen rechteckigen Bereich akti-
viert. Mit dem Mauszeiger kann im Diagrammbereich ein beliebiger Bereich markiert
werden, auf den dann die Diagrammdarstellung vergrößert 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 gewählt, dass die grafischen Verläufe optimal den Diagramm-
bereich ausfüllen.
Für den Fall, dass der Diagrammblock als Floating Scope betrieben wird, sind die Zuordnungen
zwischen dem Block und den anzuzeigenden Signalverläufen vor einem Simulationslauf
festzulegen.
Im Toolbar des Diagrammfensters gibt es einen Schalter, mit dem der Blocktyp von Scope in
Floating Scope umgestellt werden kann.
Für die Parametrierung eines Floating Scope - Blockes ist ein Parametrierformular erforderlich.
Dieses kann über den entsprechenden Schalter des Diagramm-Toolbar aktiviert werden. Das
Formular kann auch über das Popup-Menü im Diagrammfenster aktiviert werden; der Menü-
punkt hat die Bezeichnung Signal selection.
Im linken Teilfenster wird die Modellhierarchie, die die evt. vorhandene Schachtelung der
Modellblöcke darstellt (im Beispiel gibt es nur eine Ebene) angezeigt. Es ist die gewünschte
Modellebene auszuwählen.
Im rechten Teilfenster werden die Signale angezeigt, die für 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 angebote-
nen Signale gefiltert werden. Die bezüglich der einzelnen Signale darzustellenden Details lassen
sich über die Schaltelemente steuern.
Dieser Block führt zum Abbruch der Simulation, wenn sein Eingang einen
Wert verschieden von Null aufweist. Wenn der Eingang ein Signalvektor ist,
so reicht es für den Abbruch der laufenden Simulation aus, dass eine Kompo-
nente verschieden von Null ist.
Abschlussblock (Terminator)
Dieser Blocktyp ist dann nützlich, wenn Signalflusslinien auftreten, die keinen
Abschluss als Eingangssignale anderer Blöcke finden. Diese „offenen“ Signal-
flusslinien erzeugen bei der Simulation eine Warnung. Durch Abschluss mit
einem Terminator lassen sich diese Meldungen unterdrücken.
Filename:
Name der Datei, in die die Matrix
gespeichert werden soll.
Variable name:
Name der Matrix, in die die Daten
geschrieben werden.
5 - 32 SIMULINK
Save format:
Es gibt folgende Speicher-Formate:
Array - Die Daten werden in Matrixform wie folgt abgespeichert
Timeseries:
Die Daten werden als MATLAB-Timeseries Objekte gespeichert. Dieses Format ist für beliebi-
ge Datentypen anwendbar.
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.
Mit diesem Blocktyp lässt sich ein Signal erzeugen, das näherungsweise dem
Modell des weißen Rauschens folgt. Es wird eine Zufallsfolge erzeugt, die den
„Korrelationshorizont“ berücksichtigt. Für das „ideale“ weiße Rauschen hat
dieser den Wert Null. Da sich das technisch nicht realisieren lässt, wird der
Horizont zwar endlich aber sehr viel klei-
ner als die kleinste Zeitkonstante gewählt.
Noise power:
Dieser Parameter beschreibt die konstante
Leistungsdichte des Signals.
Sample time:
Dieser Parameter definiert den Korrela-
tionshorizont. Er sollte wie folgt gewählt
werden:
Uhrzeit-Block (Clock)
Konstanten-Block (Constant)
Constant value:
In diesem Feld wird der Wert der Konstan-
ten angegeben. Die Darstellung bestimmt
den Typ der Konstanten.
Rampenfunktion-Block (Ramp)
Slope:
Dieser Parameter gibt den Anstieg der Gera-
den 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 Blöcke Eingangsports, die für ein aktuelles Problem nicht
benötigt werden. Diese offenen Ports verursachen Warnungen zur Laufzeit.
Sollen diese vermieden werden, sind diese Ports mit einem Block des Leer-
blocktyps zu verbinden. Dieser Block erzeugt Signale mit dem konstanten
Wert Null, wobei das Format des Eingangsports vom Leerblock realisiert
wird.
SIMULINK 5 - 35
Sprungfunktions-Block (Step)
Step time:
Dieser Parameter gibt an, zu welchem
Zeitpunkt der Sprung ausgeführt 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
Sine type:
Dieser Parameter bestimmt die Art der
Funktionsberechnung.
Time (t):
Dieser Parameter gibt an, ob als Zeitmaß
die Simulationszeit oder eine externe Uhr
verwendet werden soll. Im letzteren Fall
wird ein Input-Signal angezeigt.
5 - 36 SIMULINK
Amplitude:
Dieser Parameter spezifiziert den Wert von A.
Bias:
Dieser Parameter spezifiziert den Wert von b.
Frequency:
Dieser Parameter spezifiziert den Wert von ù.
Phase:
Dieser Parameter spezifiziert den Wert von ö.
Sample time:
Dieser Parameter ist nur für den Berechnungsmodus Sample-based von Bedeutung.
Mean:
In diesem Feld wird der Erwartungswert der
normalverteilten Zufallsgröße vorgegeben.
Variance:
In diesem Feld wird die Varianz der normal-
verteilten Zufallsgröße vorgegeben.
Seed:
Hier wird der Anfangswert der normalverteil-
ten Folge vorgegeben.
Minimum: / Maximum:
In diesen Feldern werden die Grenzen des
Intervalls angegeben, innerhalb dessen die
Werte der gleichverteilten Zufallsgröße liegen
sollen.
Seed:
Dieser Parameter beschreibt den Anfangs-
wert, mit dem die Zufallsfolge beginnt.
SIMULINK 5 - 37
Blöcke dieses Typs können für die Erzeugung periodischer Signale, die unter-
schiedlichen Klassen angehören können, eingesetzt werden.
Im folgenden Bild ist das Parametrierformular dargestellt:
Wave form:
Über diese Pickliste kann die
Signalform ausgewählt wer-
den. Folgende Einträge sind
vorhanden:
sine
Es wird ein sinusförmiges Si-
gnal erzeugt.
square
Es werden angenäherte Recht-
eckimpulse erzeugt.
sawtooth
Es wird ein sägezahnförmiges
Signal erzeugt.
random
Es wird ein Zufallssignal er-
zeugt.
Time (t)
Dieser Parameter gibt an, ob als Zeitmaß die Simulationszeit oder eine externe Uhr verwendet
werden soll. Im letzteren Fall wird ein Input-Signal angezeigt.
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.
Sample time:
Der Standardwert 0 setzt eine kontinu-
ierliche Zeit voraus.
Data:
In diesem Feld wird der Name der zu übertragenden Datenstruktur, den diese im Workspace hat,
angegeben.
SIMULINK 5 - 39
Interpolate data:
Ist dieser Schalter gesetzt,
so wird zwischen den Si-
gnalstützstellen interpoliert,
wenn zur Simulationszeit
Zwischenwerte benötigt
werden. Ist der Schalter
nicht gesetzt, so wird der
nächstgelegene Zeitpunkt
als Näherung herangezogen.
Die Einträge und ihre Bedeutungen sind der folgenden Tabelle zu entnehmen:
! Als Eingangssignale sind Skalare, die in den Ausdrücken mit u bezeichnet werden
müssen, oder Vektoren zugelassen, deren Komponenten in den Ausdrücken mit u(1),
u(2) ... zu bezeichnen sind. Der Bezeichner u steht entweder für ein Skalar oder für das
erste Element von u (also für u(1)).
! Folgende Operatoren sind innerhalb der Ausdrücke zugelassen:
< Numerische Konstanten.
< Aritmetische Operatoren (+ - * /)
< Vergleichsoperatoren ( == != < > <= >=). Der Ausdruck liefert den Wert 1,
wenn der Vergleich zutrifft, sonst liefert er den Wert 0.
< Logische Operatoren (&& || !) Zur Bildung logischer Ausdrücke. Die logischen
Ausdrücke liefern 1, wenn sie wahr sind, sonst liefern sie den Wert 0.
< Klammern.
< Standardfunktionen (abs, acos, asin, atan, atan2, ceil, cos, cosh, exp, floor,
hypot, log, log10, power, rem, sgn (äquivalent zu sign in MATLAB), sin, sinh,
sqrt, tan, and tanh).
! In den Ausdrücken können Variable, die im Workspace gespeichert sind, verwendet
werden. Bei Vektoren und Matrizen muss auf einzelne Elemente Bezug genommen
werden.
Expression:
In dieses Feld ist der Aus-
druck, der die Berechnung des
Ausgangssignals aus den Ein-
gangssignalen beschreibt, ein-
zutragen.
SIMULINK 5 - 41
Das SIMULINK-Schema zeigt die Verknüpfung des MATLAB-Funktionsblocks mit Ein- und
Ausgangsblöcken.
Das Ergebnis der Abarbeitung des Modells ist zu erkennen.
Wenn innerhalb eines existierenden Schemas ein Subsystem durch Zusammenfassung von
bestimmten Blöcken erzeugt werden soll, ist wie folgt zu verfahren:
SIMULINK 5 - 43
S Die zum Subsystem zusammenzufassenden Blöcke sind durch den Mauszeiger (bei
gedrückter linker Maustaste) als rechteckiger Bereich zu markieren.
S Wenn die linke Maustaste gelöst wird, erschein ein (blau hinterlegtes) Toolbar für die
Erzeugung des Subsystems. Das erste Button bewirk die Erzeugung eines (einfachen)
Subsystems.
S Wird dieses Button gewählt, so werden die markierten Blöcke zum Subsystem zu-
sammengefasst und erscheinen im aktuellen Modell als ein einzelner Block.
S Durch Doppelklick auf den Subsystemblock wird die innere Struktur des Subsystem-
blocks in einem neuen Fenster zur detaillierten Anzeige bringen; in diesem Fenster kann
der Block auch intern weiter editiert werden. Die ein- bzw. austretenden Signale werden
durch Ports dargestellt.
< Beispiel
Im dargestellten Mo-
dell sollen der Block
für eine nutzerdefi-
nierte Funktion und
der Integrator zu ei-
nem Subsystem zu-
sammengefasst wer-
den.
Wenn man den Subsystem-Block auswählt und das Popup-Menü mit der rechten Maustaste
aktiviert, findet man den Menüpunkt Subsystem & Model Refernce. Dieser Menüpunkt aktiviert
ein weiteres Untermenü. In diesem findet man den Menüpunkt Expand Subsystem. Wird dieser
Menüpunkt aktiviert, so wird das Subsystem mit den konkreten Eingangs und Ausgangssignalen
komplett in seiner Block-Struktur in das Modell eingefügt.
In der Blockbibliothek-Gruppe Ports & Subsystems findet man unter anderem die folgenden
Blocktypen, mit deren Hilfe Subsysteme direkt entwickelt werden können.
Im folgenden Bild ist ein SIMULINK-Arbeitsblatt dargestellt, bei dem der Menüpunkt Simu-
lation aufgeblättert wurde.
Über die folgenden Menüpunkte wird der Ablauf einer Simulation gesteuert:
Wenn die Simulation läuft, so ändert das Run-Button seine Funktion; er wird zum Pause-
Schalter. Das wird dadurch angezeigt, dass das Symbol zu zwei senkrechten Balken verändert
wird. Wenn man den Pauseschalter betätigt, so wird die Simulation angehalten, kann aber
jederzeit über das Run-Button fortgesetzt werden.
Das Erscheinungsbild des Browser wird im folgenden Bild mit der Seite Solver dargestellt:
Im linken Fenster kann zwischen den einzelnen Seiten navigiert werden; im rechten Fenster
werden die jeweils ausgewählten Seiten mit den zugehörigen Parametrierfeldern dargestellt.
Wie aus der Abbildung zu erkennen ist, gestattet diese Formularseite Solver die Einstellung der
Rahmenbedingungen eines Simulationslaufs, insbesondere die
S Vorgabe des Zeitintervalls für die Simulation,
S Einstellung des Integrationsverfahrens,
S Parametern für das Integrationsverfahren.
Wenn sich in einem Feld der Eintrag auto befindet, so wird der Parameter vom System vor-
gegeben.
SIMULINK 5 - 49
Die folgende Seite erlaubt die Wahl der Systemreaktionen in gewissen Ausnahmensituation. Die
voreingestellten Reaktionen (warning, error, non) können über die Items der Picklisten geändert
werden.
5.5 S-Funktionen1
Für komplexere Problemstellungen ist es mitunter notwendig, dass ein Algorithmus als
SIMULINK-Block zu realisieren ist, der sich nicht aus den vorhandenen Blöcken der Bibliothek
zusammensetzen lässt. Derartige Blöcke heißen S-Funktionen. Der von einer S-Funktion zu
realisierende Algorithmus ist nach bestimmten Regeln als MATLAB- oder C-Funktion zu
programmieren.
1
Hierfür gibt es das spezielle Handbuch “Developing S-Functions”.