Einführung in MATLAB ® Simulink ® WS 2008/09 Dr.-Ing. Thomas Buch Universität Rostock, Fakultät IEF-NT
Dr.-Ing. Th. Buch: Einführung
1
Universität Rostock FB EIT/NTIE
Gliederung 1. Einleitung 1.1 Anwendungsgebiet 1.2 Produktfamilie
2. MATLAB-System 3. Einführung in MATLAB 2.1 Elementare MATLAB-Operationen 2.2 Die MATLAB-Hilfe 2.3 MATLAB-Programmierung 2.4 Symbolische Rechnung
4. Einführung in Simulink 3.1 Was ist Simulink? 3.2 Funktionsprinzip und Handhabung von Simulink 3.3 Vereinfachung von Simulink-Systemen 3.3 Interaktion mit MATLAB Dr.-Ing. Th. Buch: Einführung
2
Universität Rostock FB EIT/NTIE
Gliederung 1. Einleitung 1.1 Anwendungsgebiet 1.2 Produktfamilie
2. MATLAB-System 3. Einführung in MATLAB 2.1 Elementare MATLAB-Operationen 2.2 Die MATLAB-Hilfe 2.3 MATLAB-Programmierung 2.4 Symbolische Rechnung
4. Einführung in Simulink 3.1 Was ist Simulink? 3.2 Funktionsprinzip und Handhabung von Simulink 3.3 Vereinfachung von Simulink-Systemen 3.3 Interaktion mit MATLAB Dr.-Ing. Th. Buch: Einführung
2
Universität Rostock FB EIT/NTIE
MATLAB/Simulinkk Anwendungsgebiet MATLAB/Simulin
Grundlage der Anwendung von MATLAB ® und Simulink ®
MATLAB Matrizen, Optimierung, Grafik, DGL‘s usw.
Simulink, Blocksets Toolboxen
Signalverarbeitung, Identifikation, Reglerentwurf usw. Dr.-Ing. Th. Buch: Einführung
3
Universität Rostock FB EIT/NTIE
MATLAB/Simulink Produktfamilie
Dr.-Ing. Th. Buch: Einführung
4
Universität Rostock FB EIT/NTIE
MATLAB-System Was ist MATLAB?
MATLAB ist eine Hochleistungsprogrammiersprache für technische Berechnungen, wie für: • Mathematik und numerische Berechnungen, • Algorithmen-Entwicklung • Datenerfassung • Modellierung, Simulation und Prototype- Entwicklung • Datenanalyse und Datenvisualisierung • Wissenschaftliche und Technische Grafik • Entwicklung von Anwenderprogrammen mit GUI Dr.-Ing. Th. Buch: Einführung
5
Universität Rostock FB EIT/NTIE
MATLAB-System Bestandteile von MATLAB
• Desktop Tools und Entwicklungsumgebung Command window, history, workspace, editor, browsers
• MATLAB Bibliothek für Mathematische Funktionen Berechnungsalgorithmen für Elementarmathematik, Matrizenrechnung, Mathematische Funktionen, Schnelle Fourier-Transformation usw.
• MATLAB Programmiersprache Programmsteuerung, objektorientierte Programmierung, Matrizenrechnung
• MATLAB Grafik • MATLAB Externe Schnittstellen, Programmierinterfaces (API) • Entwicklung von Anwenderprogrammen mit GUI Dr.-Ing. Th. Buch: Einführung
6
MATLAB-System - Desktop
Universität Rostock FB EIT/NTIE
MATLAB wird aus Windows heraus durch „Doppelklick“ gestartet. Es öffnet sich der MATLAB - Desktop
File-Browser Variablen workspace Eingabe von MATLAB-Funktionen Command History
Dr.-Ing. Th. Buch: Einführung
7
MATLAB-System - Help
Universität Rostock FB EIT/NTIE
MATLAB besitzt eine sehr gute „HELP“
Dr.-Ing. Th. Buch: Einführung
8
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen MATLAB-Kommandooberfläche • MATLAB ist eine Interpretersprache
• Kommandos und Befehle werden in Kommandozeile ausgeführt • MATLAB kannte nur eine Datenstruktur, die Matrix • Implementierung weiter Datenstrukturen z.B. Structure , Cell Arrays • Lange Kommandos können über mehrere Zeilen verteilt werden ... >> Y
= [sin(x) + cos(y) sin(a) + cos(b); ... sin(x) + cos(y) sin(a) + cos(b)]
Dr.-Ing. Th. Buch: Einführung
9
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen MATLAB-Operationen • Arithmetische Operationen • Logische Operationen • Mathematische Funktionen • Grafikfunktionen • I/O-Operationen (Datenaustausch)
Dr.-Ing. Th. Buch: Einführung
10
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen MATLAB-Variablen
• MATLAB-Variable im folgenden grundsätzlich eine Matrix • Matrix-Elemente: reele und komplexe Zahlen, ASCII-Zeichen • Skalare sind 1 x 1- Matrizen • Variablennamen beginnen mit Buchstaben, case sensitive • Es gibt reservierte Symbole, z.B. pi, eps, i, j, ... • Dezimalpunkt als Dezimaltrenner • Matrix-Elemente werden in eckigen Klammern [ ] eingeschlossen • Zeilen-Trenner: Leerzeichnen und Komma • Spaltentrenner: Semikolon Dr.-Ing. Th. Buch: Einführung
11
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Beispiele: >> x = 45.789 x = 45.7890
>> vector = [1, 2, -5] vector = 1
2
-5
>> Matrix = [3 1+3*j -5; 4 2 -1.56] Matrix = 3.0000
1.0000 + 3.0000i
-5.0000
4.0000
2.0000
-1.5600
Größe von Matrix: 2 x 3 (2 Zeilen, 3 Spalten) Dr.-Ing. Th. Buch: Einführung
12
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Stringvariablen besitzen die Klasse char und werden wie normale Variablen zugewiesen mit dem Unterschied, dass der Wert in Hochkomma ‘...‘ eingeschlossen wird. Stringvariablen haben Matrizen- (Vektor-) Struktur! Beispiele Stringvariablen: >> str = 'hallo world'
>> size(str)
str =
ans = 1
hallo world
11
>> str1 = ['hallo'; 'world']
>> size(str1)
str1 =
ans =
hallo
2
5
world Dr.-Ing. Th. Buch: Einführung
13
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Spezielle Werte
MATLAB kennt Konstanten und spezielle Symbole, die nicht anderweitig verwendet werden sollten >> pi ans =
Zahl 3.1416
>> inf ans = Inf
Zahl „Unendlich“, Ergebnis von 1/0
>> nan ans = NaN
Not a Number, Platzhalter für eine Zahl
>> eps ans =
2.2204e-016
relative Genauigkeit einer Gleitkommazahl
Dr.-Ing. Th. Buch: Einführung
14
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Der Workspace ist der Speicherbereich für alle Variablen. Variablennamen, Größe, Variablenklasse, Speicherbedarf können angezeigt werden Befehl who, whos who Your variables are: Matrix
ans
str
str1
vector
x
>> whos
Name
Matrix
Size
Bytes
2x3
96
Class
double array (complex)
str
1x11
22
char array
str1
2x5
20
char array
vector
1x3
24
double array
x
1x1
8
double array
Grand total is 33 elements using 186 bytes Dr.-Ing. Th. Buch: Einführung
15
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Variablen können gelöscht, der Variablenspeicher Null gesetzt oder Speicher reserviert werden. Variable löschen:
clear x
x ist gelöscht
Variablenspeicher Null: x = [];
x ist leer
Speicher Reservieren:
x = zeros(1000,5);
1000 x 5 Null Matrix
Alle Variable löschen:
clear all
alle Variablen gelöscht
Variablen werden übersichtlich im Workspace-Browser dargestellt und bearbeitet. Ein Semikolon am Ende der Kommandozeile unterdrückt das Ergebnis-Echo >> x = 45.789;
Dr.-Ing. Th. Buch: Einführung
16
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Zeilen-Kommandos können rekonstruiert werden. Alle Kommandows bleiben in der History gespeichert. Durch Eingabe der ersten Zeichen der Kommando-Zeile, gefolgt von den Pfeiltast oder werden Zeilen gesucht, die mit den eingegebenen ersten Zeichen übereinstimmen. 5
6
Ein gesondertes History -Fenster hält ebenfalls alle Kommando-Zeilen. Ein Datum in der History unterscheidet verschiedene Sitzungen Teile einer Kommando-Zeile oder mehrere Kommandozeilen können markiert und mit der rechten Maustaste kopiert, oder direkt ausgeführt werden.
Dr.-Ing. Th. Buch: Einführung
17
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Weitere Variablendefinitionsmöglichkeiten: Die besondere Bedeutung des Colon-Operators Doppelpunkt [:] Definition einer Folge ii = {1 2 3 4}:
ii = 1:4
Schrittweite 1
Definition einer Folge ii = {0 0.2 0.4 0.6}: ii = 0:0.2:0.6 Schrittweite 0.2 Auswahl von Matrix-Elementen über den Index in runden Klammern. Der Colon -Operator im Index kennzeichnet eine ganze Zeile oder/und Spalte z.B.: >> Matrix(1,2) ans = 1.0000 + 3.0000i Matrix(1,:) ans = 3.0000
1.0000 + 3.0000i
-5.0000
Dr.-Ing. Th. Buch: Einführung
18
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Weitere Indexierungsmöglichkeiten:
Jede n-dimensionale Matrix wird spaltenweise als eindimensionaler Vektor abgelegt. Der Index ist entweder eindimensional oder von der Dimension n der Matrix z.B.: >> Matrix(1,2)
% Matrix ist eine 2 x 3 Matrix
ans = 1.0000 + 3.0000i
>> Matrix(3) ans = 1.0000 + 3.0000i
Dr.-Ing. Th. Buch: Einführung
19
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Weitere Indexierungsmöglichkeiten(2): Zeilenvektor der Länge l = n xm einer nxm Matrix: >> elemente(1:6) = Matrix(1:2,1:3) elemente = Columns 1 through 4 3.0000
4.0000
1.0000 + 3.0000i
2.0000
Columns 5 through 6 -5.0000
-1.5600
Colon-Operator als Platzhalter für die Matrix-Dimension >> Matrix(:) = elemente Matrix = 3.0000
1.0000 + 3.0000i
-5.0000
4.0000
2.0000
-1.5600
Dr.-Ing. Th. Buch: Einführung
20
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Weitere Variablendefinitionsmöglichkeiten: Vektoren und Matrizen können verlängert bzw. vergrößert werden. So lassen sich Elemente in Vektoren, oder ganze Zeilen und Spalten in Matritzen an beliebiger Stelle einfügen. Aus Teilmatrizen können Supermatrizen generiert werden. z.B.: >> A = [1 2; 3 4] A = 1
2
3
4
>> B = [A,A] B = 1
2
1
2
3
4
3
4
>> B = repmat(A,1,2);
% Befehl zum Generieren großer Matrizen Dr.-Ing. Th. Buch: Einführung
21
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Elementare Matrizenmanipulationen:
Die Elemente einer Matrix können umsortiert werden. Matrizen lassen sich horizontal oder vertikal kippen (flipud, fliplr, flipdim ), um 90° drehen (rot90 ) oder umsortieren (reshape ). Weitere siehe help Matices Operations and Manipulation
Beispiel für reshape: >> B = [1 2; 3 4; 5 6] B = 1
2
3
4
5
6
>> C = reshape(B,2,3)
% Elemente werden spaltenweise umsortiert.
C =
% Produkt aller Dimensionen von B und C muss 1
5
4
3
2
6
% gleich sein. prod(size(B)) == prod(size(C)) Dr.-Ing. Th. Buch: Einführung
22
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Spezial-Matrizen:
MATLAB kennt auch alle in der Algebra üblichen Matrizen, wie • Einheitsmatrix:
I = eye(m,n)
• Diagonalmatrix:
D = diag(v)
• Zufallsmatrix, gleichverteilt:
U = rand(m,n)
• Zufallsmatrix, normalverteilt:
N = randn(m,n)
• Null-Matrix:
Z = zeros(m,n)
• Eins-Matrix:
O = ones(m,n)
• ...
Dr.-Ing. Th. Buch: Einführung
23
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Arithmetische MATLAB-Operationen (+, -, *, / etc.): Alle arithmetischen Operationen sind grundsätzlich Matrix -Operationen. Das Produkt zweier Variablen ist nur definiert, wenn das Matrix-Produkt A*B definiert ist. >> M = [1 2 3; 4 -1 2] M = 1
2
3
4
-1
2
>> N = [1 2 -1; 4 -1 1; 2 0 1] N = 1
2
-1
4
-1
1
2
0
1
Dr.-Ing. Th. Buch: Einführung
24
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Arithmetische MATLAB-Operationen (+, -, *, /, ^, etc.): Beispiel Matrix-Multiplikation. >> V = M*N
% 2x3-Matrix x 3x3-Matrix
V = 15
0
4
4
9
-3
>> W = N*M
% 3x3-Matrix x 2x3-Matrix
??? Error using ==> * Inner matrix dimensions must agree.
Matrix-Manipulationen, z.B.: Transponieren einer Matrix:
Vt
= V‘
Invertieren einer Matrix:
Vinv
= inv(V)
Dr.-Ing. Th. Buch: Einführung
25
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Feld-Operationen (.*, ./, .^, etc.):
Die arithmetischen Operationen lassen sich auch Komponentenweise einsetzen. Dazu müssen die Operanten von gleicher Dimension sein. >> N.*N ans = 1
4
1
16
1
1
4
0
1
Feldoperationen werden durch das Operationszeichen mit vorangestelltem Punkt gekennzeichnet.
Dr.-Ing. Th. Buch: Einführung
26
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Division, rechte Division / , linke Division \ : Die Division X = A / B zweier Matrizen nicht definiert. Quotient nur im Falle quadratischer Matrizen sinnvoll X = A * B -1, falls B -1 existiert. Falls A-1 existiert, auch X = A \ B sinnvoll für X = A-1 * B Die Vektorgleichung A * x = b stellt ein lineares Gleichungssystem dar, mit der Lösung: x = A \ b Wenn A eine nichtquadratische Matrix ist, lassen sich über- oder unterbestimmte Gleichungssysteme lösen.
Dr.-Ing. Th. Buch: Einführung
27
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Logische und relationale Operationen
Logische und relationale Operatoren sind Feld-Operatoren. Sie arbeiten Elementweise bzw. skalar • Negation:
~
• Und:
&
• Oder:
|
• XOR
xor
• Relational:
>, <, >=, <=, ==, ~=
• WAHR, wenn alle nichtnull:
all
• WAHR, wenn einer nichtnull:
any
Dr.-Ing. Th. Buch: Einführung
28
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Mathematische Funktionen
MATLAB verfügt über ein Vielzahl von vorgefertigten Funktionen. Die Funktionen arbeiten grundsätzlich Komponentenweise und sind auch für komplexe Argumente definiert. MATLAB kennt folgende elementare Funktionsklassen : • Trigonometrische Funktionen, z.B.:
sin(x), asin(x), atanh(x), ...
• Exponentialfunktionen, z.B.:
exp(x), log10(x), sqrt(x), ...
• Komplexe Umrechnungen, z.B.:
abs(x), angle(x), real(x), ...
• Runden, ganze Zahlen, Teiler, z.B.:
round(x), mod(x), fix(x), ...
Unterstützung findete man durch die online Help help >> help sin SIN
Sine.
SIN(X) is the sine of the elements of X. Dr.-Ing. Th. Buch: Einführung
29
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Grafikfunktionen
Eine herausragende Stärke von MATLAB ist seine Grafik • zweidimensionale Funktionsgraphen (xy-Plots) • perspektivische dreidimensionale Funktionsgraphen (xyz-Plots) help grahp2d, help graph3d, help graphics :
2-D-Plots: • XY-Plot.:
plot(x,y)
• XY-Plot, halblogarithmisch:
semilogx(x,y)
• XY-Plot, doppellogarithmisch:
loglog(x,y)
• Mehrfach-Plots (1. Plot von 2 vert. Plots):
subplot(2,1,1)
Dr.-Ing. Th. Buch: Einführung
30
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen 2-D-Grafikfunktionen plot(0:5,sin(0:5))
1 0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
-0.2
-0.2
-0.4
-0.4
-0.6
-0.6
-0.8
-0.8
-1
0
0.5
1
1.5
2
2.5
3
plot(0:5, sin(0:5))
plot(0:5,sin(0:5), 'mo')
1
3.5
4
4.5
5
-1
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
plot(0:5, sin(0:5),‘mo‘)
Dr.-Ing. Th. Buch: Einführung
31
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Grafik beschriften
Grafiken können beschriftet werden, z.B. x-, y-Achsen, Titel, Legende, freier Text an der Stelle x 0,y0 • xlabel( ‘x-Achse‘ ), ylabel( ‘y-Achse‘ ), title( ‘Titel‘ ) • text(x0, y0,‘Text‘ ), legend(char( ‘Kurve 1‘,‘Kurve 2‘,‘Kurve 3‘ )), • Achsenbegrenzungen:
axis([ xmin, xmax, ymin, ymax])
Dr.-Ing. Th. Buch: Einführung
32
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Grafikfunktionen 3-D-Plots: • XYZ-Maschen-Plot.:
mesh(X,Y,Z)
• XYZ-Oberflächen-Plot:
surf(X,Y,Z)
• XYZ-Kontur-Plot:
contour3(X,Y,Z)
Dr.-Ing. Th. Buch: Einführung
33
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Grafikfunktionen Erzeugung eines 3-D-Plots:
• Die Matrizen X und Y definieren die Punkte in der xy-Ebene Erzeugung von X und Y aus den Vektoren x und y: [X,Y] = meshgrid(x,y); % X und Y besitzen die gleiche Dimension
•Berechnung einer Funktion Z = f(X,Y) als Funktion zweier Variabler Z = gauss2(X,Y,a,b); % 2-D-Gaussfunktion Beispiel: •Auswahl geeigneter 3-D-Grafikfunktionen surf(X,Y,Z) Beispiel:
Dr.-Ing. Th. Buch: Einführung
34
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Grafikfunktionen 1
Erzeugung eines 3-D-Plots:
0.8
X-Matrix
e 0.6 s h c 0.4 A z
-4 -3 -2 -1
0.2
0
0 2
1 2
1
3 4
-4
-3
-2
-1
0
1
2
3
0
4
-1
Y-Matrix -4
x-Achse
-3
-2
2
1
0
-1
y-Achse
-2 -1 0 1 2 3 4
-4
-3
-2
-1
0
1
2
3
4
Dr.-Ing. Th. Buch: Einführung
35
-2
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen 3-D-Grafikfunktionen
0.6
0.6
0.4 e s h c A α
0.4 e s h c A -
0.2 0
α
-0.2
0.2 0 -0.2
2 0 -2 y-Achse
-3
-2
-1
1
0
2
3
2 0 -2
x-Achse
y-Achse
Dr.-Ing. Th. Buch: Einführung
-3
-2
-1
0
1
3
2
x-Achse
36
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen 3-D-Volumengrafik, Beispiele
Dr.-Ing. Th. Buch: Einführung
37
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen 3-D-Volumengrafik, Beispiele
Dr.-Ing. Th. Buch: Einführung
38
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Behandlung von Zeichenketten, ASCII-Zeichen, Text Zeichenketten und Textblöcke werden bei MATLAB in Vektoren und Matrizen gehalten. Die Zeichenketten werden Variablen mittels Hochkomma zugewiesen (‘‘) >> str = 'Text' str = Text
Bei Eingabe von mehreren Zeilen ist zu beachten, dass jede Zeile die gleiche Länge besitzt. Mit Leerzeichen auffüllen >> str = ['neuer';'Text '] str = neuer Text
Automatischer Zeilenausgleich mit Befehl char (‘ ...‘ ,‘...‘ , ...) Dr.-Ing. Th. Buch: Einführung
39
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Behandlung von Zeichenketten, ASCII-Zeichen, Text Zeichenketten können in die ASCII – Darstellung umgewandelt werden mit dem Befehl: abs (str) >> asc = abs(str) asc = 110 101 117 84 101 120
101 116
114 32
und umgekehrt wieder in eine Zeichenkette mit char(asc). z.B. Umwandlung von klein in Großbuchstaben >> STR = char(abs('text') - 32) STR = TEXT Dr.-Ing. Th. Buch: Einführung
40
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Behandlung von Zeichenketten, Cell-Array Das Halten von mehreren Strings in einem Array bedeutet Auffüllen mit Leerzeichen. Man kann Strings in Cell Array‘s halten. Jedes Cell-Array -Element ist ein String. >> S = {'Hello' 'Yes' 'No' 'Goodbye'} S = 'Hello' 'Yes' 'No' 'Goodbye'
Zugriff auf ein Cell-Element: str = S{1}; % Ergebnis ist ein char-String Aber: cellstr = S(1); % Ergebnis ist ein Cell-Array mit einem Element str = char(S(1)); % Ergebnis ist ein char-String wie in Zeile 1 Siehe auch help cellstr Dr.-Ing. Th. Buch: Einführung
41
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Behandlung von Zeichenketten, ASCII-Zeichen, Text Umwandlung von Zahlen in Zeichenketten num2str (x); int2str (n);
Umwandlung in eine Festpunktzahl bzw. ganze Zahl
Formatierte String-Ausgabe mit sprintf ähnlich Programmiersprache C >> x = pi; >> str = sprintf('Variable x = %.2f',x) str = Variable x = 3.14 >> fprintf('--> Text\ttext \\ ''\n\n') % Ausgabe Console --> Text text \ ' % \t tab, \n newline
Weitere Funktionen zur Zeichenketterbehandlung siehe help strings (String-Operationen, String-Umwandlungen usw.) Dr.-Ing. Th. Buch: Einführung
42
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Behandlung von Zeichenketten, ASCII-Zeichen, Text Darstellung von Beschriftungen in Grafiken mit Hilfe von Zeichenketten, z.B. Achsenbeschriftungen, Titel freier Text title(‘Titel‘); xlabel(‘x-Achse‘), ylabel(‘y-Achse‘); text(xpos,ypos,‘Freier Text‘) % Text auf der Position [xpos,ypos] Interpretation von LATEX-Befehlen für z.B. griechische Buchstaben und mathematische Symbole: text('Interpreter','latex',... 'String',['$$z = \int \alpha\cdot x + \beta\:dx = ',... '\frac{\alpha}{2}\cdot x^2+ \beta\cdot x+\gamma$$'],... 'Position',[-1.5 -10],... 'FontSize',16) Dr.-Ing. Th. Buch: Einführung
43
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
Behandlung von Zeichenketten, ASCII-Zeichen, Text
Dr.-Ing. Th. Buch: Einführung
44
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen I/O-Operationen
Datenaustausch zwischen MATLAB und externen Dateien. MATLAB verwendet ein eigenes Speicherformat für Daten, das mat- File
Das load und save - Kommando save
[variable1 variable2 ...] oder save(‘Pfad/Dateiname‘ , ‘ var1‘ , ‘ var2‘ , ...) save wsdaten
%ohne Var.-Angabe werden alle Var. %gespeichert
Das load – Kommando läd die Variablen aus einem Mat-File load wsdaten load(‘wsdaten‘)
%Alle Variablen von “wsdaten“ laden %äquivatente Funktion Dr.-Ing. Th. Buch: Einführung
45
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen I/O-Operationen
Text-Dateien werden mit dem Schalter –ascii erzeugt oder geladen save [variable1...] –ascii oder save(‘Pfad/Dateiname‘, ‘var1‘, ..., ‘-ascii‘)
Das load -ascii läd eine Variable aus einem ASCII-File load daten.txt -ascii
%ASCII-Daten laden in %Defaultvariable „daten“
Var1 = load(‘daten.txt‘,‘-ascii‘) %Werte der Textdatei werden %der Variablen „Var1“ %zugewiesen
Dr.-Ing. Th. Buch: Einführung
46
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen I/O-Operationen, ASCII-Files
Der Text muss Zahlen in gültiger MATLAB-Notation (-12.45, 1.1e-7) enthalten, getrennt durch Trennzeichen und Zeilenabschluss. Alpha-Zeichen werden nicht eingelesen!!! Die Anzahl der Zahlen in den einzelnen Zeilen muss gleich sein (Matrix, Zeilenvektor, Spaltenvektor) Zeilentrenner: „,“, „;“, tab, leerzeichen Spaltentrenner: , ENTER,
Dr.-Ing. Th. Buch: Einführung
47
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
I/O-Operationen, Import-Wizard, weitere I/O-Funktionen Für das interaktive Einlesen von Dateien gib es den Import-Wizard, der in der Lage ist, strukturierte Daten aus Tabellen (xls, usw.) einzulesen. Dabei können auch Texte, z.B. Spaltenüberschriften, behandelt werden, die in Text-Array‘s abgelegt werden. Weiter IO-Funktionen •
Formatiere I/O ähnlich C/C++ fopen, fclose, fread, fwrite
•
Lesen von Bild-, HTML-, XLS-Dateien imread, xlsread
•
Serielle Dateneingabe über RS232 serial(‘COM1‘)
Weitere Informationen findet man mit der online help help iofun Dr.-Ing. Th. Buch: Einführung
48
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen
I/O-Operationen, weitere I/O-Funktionen (1) • I/O-Funktionen für das Kommando-Fenster •
•
•
•
•
clc
- Clear command window.
disp
- Display array.
home
- Send cursor home.
input
- Prompt for user input.
pause
- Wait for user response.
•Timer-Funktionen •
•
•
timer
- Construct timer object.
start stop Dr.-Ing. Th. Buch: Einführung
49
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen MATLAB - Suchpfad
Mit path kann der Suchpfad angezeigt und geändert werden Die Verzeichnisse werden der Reihe nach von oben durchsucht. path(path,‘Mydir\mfiles‘)
% Anhängen ans Ende
path(‘Mydir\mfiles‘,path)
% Anfügen an den Anfang
MATLAB verwendet den Verzeichnisname Privat zur Kennzeichnung eines Verzeichnisses, welches nur vom übergeordneten Verzeichnis (Elternverzeichnis) sichtbar ist. Das Verzeichnis Privat sollte nicht in den Suchpfad aufgenommen werden!!!!
Dr.-Ing. Th. Buch: Einführung
50
Universität Rostock FB EIT/NTIE
Elementare MATLAB-Operationen Strukturen
Zusammenfassen von Variablen unterschiedlicher Typen und Größe, z.B. Grafik-Eigenschaften • Grafiktitel
Grafik.Titel = ‘Beispiel‘;
• Achenbezeichnung
Grafik.xlabel = ‘Zeit in s‘; Grafik.ylabel = ‘Strom in mA‘;
• xy-Intervall
Grafik.xlim = [0,10]; Grafik.ylim = [0,10];
Name
Grafik
Size 1x1
Bytes 708
Class
struct array
Grand total is 37 elements using 708 bytes Dr.-Ing. Th. Buch: Einführung
51
Universität Rostock FB EIT/NTIE
Symbolisches Rechnen, TB Symbolics Toolbox Symbolics
Die Symbolics-TB ist Bestandteil der Studentenversion von MATLAB Es ist eine Anpassung der Algebra-Software MAPLE ® help symbolic Calculus:
diff, int, limit, taylor
Linear Algebra:
eig, poly, ...
Simplification:
simlify, subs, ...
Solution of Equations:
solve, dsolve, ...
Basic Operations: ...
sym –Create symbolic object pretty –print symbolic expr. Dr.-Ing. Th. Buch: Einführung
52
Universität Rostock FB EIT/NTIE
Symbolisches Rechnen, TB Symbolics Toolbox Symbolics, Beispiel Ableiten einer Funktion
2
f ( x, y ) = sin( xy ) cos(vxy)
>> syms x y v >> f = sin(x*y^2)*cos(x*y*v) >> df = diff(f,‘y‘)
% Funktion definieren
% nach Symbol y ableiten
df = 2*cos(x*y^2)*x*y*cos(x*y*v)-sin(x*y^2)*sin(x*y*v)*x*v >> pretty(df) 2
2
2 cos(x y ) x y cos(x y v) - sin(x y ) sin(x y v) x v
Dr.-Ing. Th. Buch: Einführung
53
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Programmtypen • MATLAB-Prozeduren
M-Files, M-Script
• MATLAB-Funktionen
M-Function, M-Subfunction
Diese MATLAB-Programme sind Textfiles, die mit beliebigen Texteditoren bearbeitet werden können. Die Programme werden mit der Endung *.m in beliebigen Verzeichnissen abgelegt. Der Filename sollte keine Name einer anderen MATLAB-Funktion oder Variablen sein. Um die Programme ausführen zu können, muss das Verzeichnis im Suchpfad path eingestellt sein Dr.-Ing. Th. Buch: Einführung
54
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Prozeduren Alle MATLAB-Befehle können in Script-Files zusammengefasst werden. Zur Erstellung ist jeder Text-Editor verwendbar. Der MATLAB-Editor bietet jedoch Syntax-Highlighting und Debug. Neue M-Files können über das Menü File-New-M-File im MATLAB-Fenster geöffnet werden. Man kann auch Teile der History markieren und in ein M-File übernehmen (Kontex-Menü) Kommentar:
% Rest der Zeile ist Kommentar
Dr.-Ing. Th. Buch: Einführung
55
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Prozeduren, Help-Zeilen Wenn die erste und die folgenden Programmzeilen Kommentarzeilen sind, werden diese als help-Text mit der Funktion help ausgegeben. Beispiel: % MATLAB-Script zur Berechnung von... % Aufruf: test % Version, Datum, Autor % Berechnung N = 4; for ii=1:N n(ii) = 1/(1-ii^2); end
!Wichtig! Programme ausführlich kommentieren! Script-Files werden zeilenweise abgearbeitet Dr.-Ing. Th. Buch: Einführung
56
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Prozeduren, Ausführung MATLAB-Scripte werden durch Eingabe des Programm-Namens (Filename) in die Kommandozeile und ausgeführt. Die Bearbeitung des Programms erfolgt zeilenweise Laufende Programme kann man mit Strg+C abbrechen. MATLAB-Prozeduren verwenden den Workspace als Variablenspeicher. •
Variablen können durch Ausführen eines M-Files überschrieben werden
•
Neue Variablen bleiben erhalten
Dr.-Ing. Th. Buch: Einführung
57
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen MATLAB-Funktionen sich spezielle MATLAB-Scripte, bei denen in der 1. Programm-Zeile der Schlüsselname function , gefolgt von der Aufruf-Notation stehen muss. function [varout1, varout2, ...] = fctname(varin1, varin2,...) fctname
Funktionsname = Filename, M-File (case sensitive)
varin1...
Eingangsargumente (Variablen-Namen)
Varout1...
Ausgangsargumente (Variablen-Namen)
Ein- oder/und Ausgangsargumente können auch fehlen, z.B. function []
= fctname(varin1, varin2,...)
function [varout1, varout2, ...] = fctname() function fctname(varin1, varin2,...) Dr.-Ing. Th. Buch: Einführung
58
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, M-Function, Workspace In der 2. und den folgenden Programmzeilen sollte wieder ein Help Text als Kommentar stehen einschließlich der Aufrufnotation und Bedeutung der Funktions-Argumente. Alle Variablen innerhalb der Funktion sind local und werden im Function-workspace gehalten. Auf die Funktions-Argumente wird über die in der Aufrufnotation festgelegten Namen zugegriffen, z.B. function prod = mult(varin1, varin2) % Multiplikatione zweier Vektoren % prod = mult(varin1, varin2); prod = varin1 * varin2;
Dr.-Ing. Th. Buch: Einführung
59
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, M-Function, Aufruf M-Function können im MATLAB-Kommando-Fenster oder in anderen MATLAB-Scripten und –Funktion aufgerufen werden. Funktions-Eingangsargumente sind entweder zuvor definierte Variablen oder direkt Zahlen oder Strings. Ausgangsargumente müssen Variablen-Namen sein oder werden weggelassen. z-.B.: >> vprod = mult(2, [1 2 3]) vprod = 2 4 6
oder >> factor = [1 2 3]; >> mult(2,factor) ans = 2 4 6 Dr.-Ing. Th. Buch: Einführung
60
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, Argumente Die Aufruf-Eingangs-Argumente werden der Reihe nach den Funktions-Eingangsargumenten zugeordnet und die Variablenwerte den Funktionen übergeben Allen Eingangsargumenten muss ein Wert zugewiesen werden, sonst erfolgt Fehlermeldung mult(2) ??? Input argument 'varin2' is undefined.
Error in ==> C:\MATLAB6p5\work\mult.m On line 2
==> prod = varin1 * varin2;
Dr.-Ing. Th. Buch: Einführung
61
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, fehlende Argumente Fehlende Eingangsargumente können durch Default-Werte abgefangen werden. Dazu muss die Anzahl der Argumente geprüft werden nargin und nargout übergeben die Anzahl die Ein- und Ausgangsargumente des Funktionsaufrufes. Diese können in der M-Function verwendet werden, z.B. function prod function prod = mult(varin1, varin2) ... if nargin == 1, varin2 = 1; end
% Default: varin2 = 1
... >> mult(2) ans = 2 Dr.-Ing. Th. Buch: Einführung
62
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, Sprachkonstrukte MATLAB besitzt alle typischen Konstrukte einer Programmiersprache. Mit help lang (language) werden sie angezeigt. z.B. Kontrollfluss-Konstrukte if, else, elseif, end
% IF-Anweisung
for, end; while, break, end
% FOR, WHILE-Anweisung
switch, case, otherwise, end
% SWITCH-Anweisung
try, catch, end
% TRY-Anweisung (Fehlerbehandlung)
return
% RETURN-Anweisung (Rückkehr aus Funktion)
Dr.-Ing. Th. Buch: Einführung
63
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, Sprachkonstrukte(1) Berechnung, Programm-Ausführung ... eval feval
% Ausführung eines Strings als MATLAB-Anweisung % Ausführung einer Funktion, spezifiziert als % String
...
Argumente-Behandlung ... nargin varargin ...
% Anzahl der Aufruf-Eingangsargumente % Liste der variablen Eingangsargumente
Meldungen, Textausgaben ... error ...
% Fehlermeldung, Abbruch der Funktion Dr.-Ing. Th. Buch: Einführung
64
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, IF-Anweisung Programm-Verzweigung if , WAHR-Anweisungen; elseif , WAHR-Anweisungen;
% kann entfallen
else FALSCH-Anweisungen;
% kann entfallen
end
Der Wahrheitswert WAHR ist das Ergebnis einer Anweisung oder Wert einer Variablen nichtNull. Matrizen sind WAHR, wenn alle Elemente nichtNull sind. z.B. if x < 0 xsig = -1; else xsig = 1; end
% Vorzeichen berechnen
Dr.-Ing. Th. Buch: Einführung
65
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, FOR-Schleife Programm-Schleifen für begrenzte Zahl von Durchläufen for
Schleifen-Anweisungen;
% Schleifenvariable nimmt % nacheinander Werte der % Vektorelemente an % wird n-mal ausgeführt. % n = Länge von Vektor
end
Der Wert der Schleifenvariable kann innerhalb und nach der Schleife verwendet werden. xmean = []; n = 10; for ii = 1:n % Mittelwert berechnen xmean = xmean + x(ii); end xmean = xmean/n; Dr.-Ing. Th. Buch: Einführung
66
Universität Rostock FB EIT/NTIE
MATLAB-Programmierung MATLAB-Funktionen, WHILE-Schleife
Programm-Schleifen für unbekannte Zahl von Durchläufen while
% % Schleifen-Anweisungen; % % %
Schleifen Abbrechen, wenn Wahrheitswert FALSCH Schleifen wird solange ausgeführt, wie Wahrheitswert WAHR
end
Der Wahrheitswert sollte sich aus einer Variablen ergeben, die sich innerhalb der Schleife ändert, z.B. Anzahl der Textzeilen einer Datei. fid = fopen(‘textfile.txt‘), textline=fgets(fid); while textline >= 0 % Textzeilen lesen textline=fgets(fid); % -1, wenn EOF erreicht end Dr.-Ing. Th. Buch: Einführung
67
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, Programm-Schleifen Alle Programm-Schleifen lassen sich mit der break -Anweisung abbrechen, z.B. while 1
% unendliche Schleife x = x + 2; if x > 100, break, end; % Abbruch der Schleifen
end
Programm-Schleifen sollten durch Vektorisierung vermieden werden, z.B.: for ii = 1:100 t = (ii-1)*.1; y(ii) = sin(t)
% ii-tes Vektorelement
end
Vektorisierung y = sin(0:.1:9.9); Dr.-Ing. Th. Buch: Einführung
68
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, SWITCH-Konstrukt Die switch-case -Anweisung eignet sich für Programmverzweigungen mit vielen Fällen, z.B. Abprüfen der Argumentezahl function test(varin1, varin2, varin3) switch nargin case 3 case 2
% Defaultwert für varin1 varin3 = [];
case 1
% Defaultwert für varin1 und varin2 varin3 = []; varin2 = []
otherwise
% Für alle anderen Fälle
error(‘Falsche Anzahl Eingangsargumente!‘) end
Die switch-Variable kann auch ein String sein. Dr.-Ing. Th. Buch: Einführung
69
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, EVAL, FEVAL Mit der eval- und feval -Anweisung lassen sich Strings als MATLABAusdrücke auswerten. Von besonderer Bedeutung ist die feval -Anweisung zur Auswertung von Funktionsausdrücken. [y1, y2, ..., yn] = feval(F, x1, x2, ..., xm);
Dabei ist F der Handle einer Funktion, z.B.: F = @sin feval(F,34.5) ist das gleiche wie: sin(34.5) Feval wird innerhalb von Funktionen verwendet, wobei FunktionsHandle als Eingangsargumente dienen
Dr.-Ing. Th. Buch: Einführung
70
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, EVAL Mit der eval -Anweisung lassen sich MATLAB-Ausdrücke aus Strings „zusammenbauen“. Es soll z.B. die Größe der Variablen im Workspace bestimmt werden: >> varstr = who' varstr = 'ans'
'x'
'xi‚
>> Ausdruck = ['size(',char(varstr(ii)),')']; % String-Variab. for ii = 1:length(varstr) [rowvar(ii,1), colvar(ii,1)] = eval(Ausdruck); end >> [char(varstr') 9*ones(3,1) num2str([row_var, colon_var])]= ans
3
2
x
1 10
xi
3
1
Dr.-Ing. Th. Buch: Einführung
71
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, FEVAL Die feval -Anweisung kann man z.B. verwenden, um das bestimmte Integral einer Funktion numerisch zu berechnen. Die Funktion selbst wird als Funktionshandle übergeben. Funktions-Definition: • Als INLINE-Funktion >> F = inline('sin(x).^2')
% INLINE-Funktionsobjekt
• Wenn Funktion durch M-Function definiert ist function y = sin2(x) >> F = @sin2
% Handle von sin2
Arithmetische Operationen müssen als Feldoperationen (.*, ./, usw.) angegeben werden! Dr.-Ing. Th. Buch: Einführung
72
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, FEVAL(1) Es kann nun z.B. eine M-Function zur numerischen Berechnung eines bestimmten Integrals nach der Simpson-Methode function int = simpson(F, a, b) geschrieben werden. Innerhalb der M-Function wird feval zur Berechnung Funktionswerte der Funktion F verwendet: ... int = int + feval(F,a) + feval(F,b); for ii = 3:2:2*N int = int + 2*feval(F,interval(ii)); end for ii = 2:2:2*N int = int + 4*feval(F,interval(ii)); end Dr.-Ing. Th. Buch: Einführung
73
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen, Funktions-Handle Funktions-Handle werden auch zur Definition von Funktionen für die numerische Optimierung (Minimierung des Fehlers fmin , fmins ), numerische Integration (quad ) und numerische Lösung von Differential-Gleichungen (ode ) verwendet. Beispiel: Lösung einer Differentialgleichung nach Kunge-Kutta [y, t] = ode23(@ODEFUN, Tspan, y0)
% Tspan = [T0, Tfinal]
dy
% y‘ = f(t,y)
= ODEFUN(t,y)
Dr.-Ing. Th. Buch: Einführung
74
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen ODE (Lsg. Differentialgleichung) Die Funktion ode23 kann zur numerischen Lösung eines Systems von gewöhnlichen DGL 1. Ordnung verwendet werden. Überführung einer DGL n‘ter Ordnung in DGL-System 1. Ordnung Beispiel Mathematisches Pendel der Länge l: ..
a (t ) = −
g l
⋅ sin(α (t ))
⎛ α (0) ⎞ r α (0) = ⎜ . ⎟ ⎜α (0)⎟ ⎝ ⎠
Dr.-Ing. Th. Buch: Einführung
75
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen ODE (Lsg. Differentialgleichung)(2) Überführung einer Pendelgleichnung in DGL-System 1. Ordnung
.
α 1(t ) =α (t )
a1 (t ) = α 2 (t )
. α 2(t ) =α (t )
.
a 2 (t ) = −
Dr.-Ing. Th. Buch: Einführung
g l
⋅ sin(α 1 (t ))
76
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen ODE (Lsg. Differentialgleichung)(3) Programmierung der ODEFUN (Pendelgleichungssystem) function [alphadot] = pendelgl(t, alpha) ... l = 10; g = 9.81;
% Parameter
alphadot = [0;0];
% Initialisierung
alphadot(1) = alpha(2);
% 1. DGL 1. Ordnung
alphadot(2) = -g/l*sin(alpha(1));
% 2. DGL 1. Ordnung
Die Variable t muss mit übergeben werden, auch wenn sie nicht benötigt wird!
Dr.-Ing. Th. Buch: Einführung
77
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Funktionen ODE (Lsg. Differentialgleichung)(4) Aufruf der ODE-Funktion für die Pendelgleichung [t, loesung] = ode23(@pendgl,[0,20],[pi/4, 0]);
Dr.-Ing. Th. Buch: Einführung
78
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
Speichern von MATLAB-Funktionen •
MATLAB-Funktionen müssen unter ihrem Funktionsname gespeichert werden
•
Funktionen, die z.B. im Verzeichnis verz\private gespeichert werden sind nur vom Verzeichnis verz aus sichtbar
•
Subfunction sind weitere Funktionsvereinbarungen function innerhalb eines Funktions-M-Files und sind nur in diesem sichtbar
Weitere Hinweise in der help
Dr.-Ing. Th. Buch: Einführung
79
MATLAB-Programmierung
Universität Rostock FB EIT/NTIE
MATLAB-Editor / Debugger Der MATLAB Editor unterstützt neben Syntac-Highlighting: Schlüsselwort, z.B.
function, for, end
Kommentar
% Kommentar
String
‘String‘
Debuggerfunktionen: Breakpoints, Einzelschritt, Lokaler Variablen-Browser, Abbruch usw.
Dr.-Ing. Th. Buch: Einführung
80
Einführung in Simulink
Universität Rostock FB EIT/NTIE
Simulationswerkzeug Simulink Programm zur Simulation dynamischer Prozesse Grafische Oberfläche als spezielle Toolbox von MATLAB Beschreibung der Modelle durch Blockschaltbilder Simulink ist ein numerischer Löser von Differentialgleichungen
Dr.-Ing. Th. Buch: Einführung
81
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Starten von Simulink Simulink wird aus MATLAB heraus gestartet z.B. •
•
•
Kommandoebene: >> simulink File/New/Model
öffnet ein neues Modell
Öffnen der Library-Browsers über die Toolbar
Der Library-Browser enthält Blocksets, die nach Funktionsgruppen geordnet sind, z.B. Quellen , Senken, Mathe, Kontinuierlich, Diskret, Nichtlinear usw.
Dr.-Ing. Th. Buch: Einführung
82
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Erstellen von Simulink-Modellen Mit der Maus werden die Blöcke in das Modell-Fenster gezogen
Dr.-Ing. Th. Buch: Einführung
83
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Erstellen von Simulink-Modellen (2) Das Modell sollte anschließend unter einem Namen abgespeichert werden. Modelle verwenden die Endung *.mdl Es werden weitere Blöcke in das Modellfenster gezogen. Der Name der Blöcke kann editiert werden, ebenso die Größe der Blöcke durch Ziehen an den Ecken. Ein mit der Maus angewählter Block kann mit der rechten Maustaste bearbeitet werden (Ausschneiden, Kopieren, Formate...)
Dr.-Ing. Th. Buch: Einführung
84
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Erstellen von Simulink-Modellen (3) Nun werden Aus- und Eingänge miteinander verbunden. Wenn die Maus in die Nähe eines Ein- Ausganges kommt, kann eine Verbindung erzeugt werden
Dr.-Ing. Th. Buch: Einführung
85
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Modifizieren von Simulink-Modellen Leitungsverbindungen erhält man, wenn man eine Verbindung vom Ausgang auf eine bestehende Verbindung zieht.
Verbindungen, Blöcke, Knoten und markierte Gruppen lassen sich verschieben
Dr.-Ing. Th. Buch: Einführung
86
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Modifizieren von Simulink-Modellen (2) Blöcke lassen sich durch Doppelklick parametrieren, z.B. Anzahl der Eingänge eines Multiplexers
Dr.-Ing. Th. Buch: Einführung
87
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Parametrieren von SimulinkModellen Die meisten Blöcke besitzen Parameter. Sie dienen zur Festlegung von Signal- oder Systemfunktionen, z.B. Amplitude, Frequenz, Phase eines SIN-Blockes Es werden auch SimulinkParameter benötigt, z.B. Abtastrate, Anzahl der Eingänge usw.
Dr.-Ing. Th. Buch: Einführung
88
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Parametrieren von SimulinkModellen (2) Mit den Scope-Block werden Oszillogramme erstellt. Die Daten lassen sich als workspace-Variable speichern
Dr.-Ing. Th. Buch: Einführung
89
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Beschriften von Simulink-Modellen Text lässt sich durch Doppelklick auf die Zeichnungsfläche eingeben. Angewählte Textfelder können bewegt ausgeschnitten und Kopiert weren. Textgröße, Farbe, Fonts lassen sich mit dem Format-Menüe ändern. Für Blöcke gibt es auch ein Format-Menüe Blöcke lassen sich drehen und kippen, färben und schattieren und der Name lässt sich verbergen. MUX-Linien lassen sich verbreitert dargestellen. Dr.-Ing. Th. Buch: Einführung
90
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Simulink-Simulation Der Menü-Befehl Simulation öffnet das Parameterfenster Simulation. Es lassen sich die Simulationszeiten, das Integrationsverfahren und die Schrittweite sowie weitere Parameter eingeben. Es lassen sich feste und variable Schrittweiten auswählen und eingeben. Einige Integrationsverfahren verfügen über eine automatische Schrittweitensteuerung.
Dr.-Ing. Th. Buch: Einführung
91
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Simulink-Simulation Für das Beispiel wird eine feste Schrittweite von 0.01 s verwendet. Die Simulation wird dem Pfeil oder dem Menü-Punkt Simulation gestartet. Auf dem Scope erscheinen die Zeitschriebe des Simulationsergebnisses. Die Daten können mit MATLAB weiterverarbeitet werden.
Dr.-Ing. Th. Buch: Einführung
92
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Lösen von Differentialgleichungen mit Simulink Einfached Beispiel: Erzeugung eines COS-Signals &&(t ) = − y (t ) y
Durch schrittweises Integrieren lässt sich die DGL lösen. Lt. DGL ist die 2. Ableitung gleich dem negierten Ausgangssignal y(t). Dies wird durch eine negative Rückführung realisiert.
&&(0) = 0 y (0) = 1, y
Dr.-Ing. Th. Buch: Einführung
93
Handhabung von Simulink
Universität Rostock FB EIT/NTIE
Lösen von Differentialgleichungen mit Simulink (2) Einfached Beispiel: Erzeugung eines COS-Signals
Dr.-Ing. Th. Buch: Einführung
94
Universität Rostock FB EIT/NTIE
Vereinfachung von Simulink-Modellen
Vereinfachung von Mathematischen Funktionen – Fcn-Block Mathematische Funktionen mit einem oder mehreren Eingängen und einem Skalar als Ausgang lassen sich durch den Fcn-Block beschreiben. Dadurch:
- Erhöhung der Übersichtlichkeit - Beschleunigung der Simulation
Funktion: y = sqrt(x^2 + z^2); Notation in Fcn-Block: sqrt(u(1)^2 + u(2)^2) u sind Elemente des Eingangsvektors
Dr.-Ing. Th. Buch: Einführung
95
Universität Rostock FB EIT/NTIE
Vereinfachung von Simulink-Modellen Zusammenfassen von Blöcken – Sub-System
Blöcke, die eine Funktionseinheit darstellen , lassen sich zu Sub-System zusammenfassen. Dadurch entstehen übersichtliche Modelle mit mehreren Hierarchie-Stufen Dadurch:
- Erhöhung der Übersichtlichkeit - Beschleunigung der Simulation
Dr.-Ing. Th. Buch: Einführung
96
Universität Rostock FB EIT/NTIE
Vereinfachung von Simulink-Modellen Zusammenfassen von Blöcken – Beispiel
Logistische DGL: Berechnung der Population bei gegebener Zuwachs- und Sterberate. (Nichtlineare DGL) .
P(t ) = γ ⋅ P (t ) − τ ⋅ P 2 (t )
Zusammenfassung
der Rückführungsgleichung mit FcnBlock y = g*u - t*u^2
Dr.-Ing. Th. Buch: Einführung
97
Universität Rostock FB EIT/NTIE
Vereinfachung von Simulink-Modellen Zusammenfassen von Blöcken – Beispiel (2)
Logistische DGL: Berechnung der Population bei gegebener Zuwachs- und Sterberate. (Nichtlineare DGL) .
P(t ) = γ ⋅ P (t ) − τ ⋅ P 2 (t )
Zusammenfassung
der Rückführungsgleichung mit FcnBlock y = g*u - t*u^2
Dr.-Ing. Th. Buch: Einführung
98
Universität Rostock FB EIT/NTIE
Vereinfachung von Simulink-Modellen Zusammenfassen von Blöcken – Beispiel (3)
Logistische DGL: Berechnung der Population bei gegebener Zuwachs- und Sterberate. (Nichtlineare DGL) .
P(t ) = γ ⋅ P (t ) − τ ⋅ P 2 (t )
Zusammenfassung
der Rückführungsgleichung mit Sub-System
Dr.-Ing. Th. Buch: Einführung
99
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB
Simulink-Parameter aus Workspace übernehmen Parameter von Simulinkblöcken können Variablenbezeichnungen sein Achtung: Vor der Simulation müssen den Variablen in MATLAB Werte zugewiesen sein Auch die Simulationsparameter, wie Schrittweite ts, kann als Variable festgelegt werden Es ist sinnvoll, alle Variablen eines Modells in einem M-File abzulegen, welches zu Beginn der Simulation aufgerufen wird
Dr.-Ing. Th. Buch: Einführung
100
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB
Beispiel: Nichtlineare DGl. Eines Masse-Feder-Systems
Dr.-Ing. Th. Buch: Einführung
101
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB
Beispiel: Nichtlineare DGl. Eines Masse-Feder-Systems
Parameter für „Faktor 1/m“ eingeben Dr.-Ing. Th. Buch: Einführung
102
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB
Beispiel: Nichtlineare DGl. Eines Masse-Feder-Systems
Schrittweite eingeben eingeben Dr.-Ing. Th. Buch: Einführung
103
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB
Beispiel: Nichtlineare DGl. eines Masse-Feder-Systems M-File für die Festlegung der Parameter starten: [m, b, c, tstep, szeit]= dglnonpm(4.5, 1.29/1000, 0.001,10);
Das Simulink-Modell kann jetzt gestartet werden
Dr.-Ing. Th. Buch: Einführung
104
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB
Start eines Simulink-Modelles aus MATLAB heraus Simulink-Modelle können auch aus MATLAB heraus gestartet werden Vorteile: • Die Simulation erfolgt mit einer höheren Rechengeschwindigkeit • Simulationsparameter lassen sich von Simulation zu Simulation ändern [t, x, y] = sim(‘system‘, [startzeit, endzeit]); z.B. [t, x, y] = sim(‘s_dglno2‘, [0, 10]);
Dr.-Ing. Th. Buch: Einführung
105
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB
Start eines Simulink-Modelles aus MATLAB heraus Nach Start der Simulation sind folgende Variablen im Workspace >> whos dglloesung t x y
Name
Size
10001x1 10001x1 10001x2 0x0
Bytes 80008 80008 160016 0
double double double double
Class
array array array array
Grand total is 40004 elements using 320032 bytes
Da kein Ausgangsblock vorhanden ist, werden für y keine Daten erzeugt! Dr.-Ing. Th. Buch: Einführung
106
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB Lesen und setzen von Parametern
Mit den MATLAB-Befehlen set_param und get_param lassen sich Modell-Parameter setzen und lesen >> help set_param SET_PARAM Set Simulink system and block parameters. SET_PARAM('OBJ','PARAMETER1',VALUE1,'PARAMETER2',VALUE2,...), where 'OBJ' is a system or block path name, sets the specified parameters to the specified values. Case is ignored for parameter names. Value strings are case sensitive. Any parameters that correspond to dialog box entries have string values.
Dr.-Ing. Th. Buch: Einführung
107
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB Lesen und setzen von Parametern z.B. Parameter von Modell „s_dglnon3“ lesen >> get_param('s_dglnon3/invm','Gain') ans = 0.10137 % Parameter neu setzen >> set_param('s_dglnon3/invm','Gain','0.12') >> get_param('s_dglnon3/invm','Gain') ans = 0.12
Achtung! Zahlenwerte müssen als String übergeben werden!!
Dr.-Ing. Th. Buch: Einführung
108
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB Finden von Blöcken eines Modells z.B. Blöcke von Modell „s_dglnon3“ suchen >> find_system('s_dglnon3') ans = 's_dglnon3' 's_dglnon3/(x'(t))^2' 's_dglnon3/Faktorb' 's_dglnon3/Faktorc' 's_dglnon3/Integrator1' 's_dglnon3/Integrator2' 's_dglnon3/Product' 's_dglnon3/Sum' 's_dglnon3/invm' 's_dglnon3/sgn (x'(t))' 's_dglnon3/Out1' Dr.-Ing. Th. Buch: Einführung
109
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB Finden von Blöcken eines Modells
>> find_system('s_dglnon3','BlockType','Gain') ans = 's_dglnon3/Faktorb' 's_dglnon3/Faktorc' 's_dglnon3/invm'
Einen Überblick über Blöcke und Parameter liefert das Modell-File, Wenn es mit einem Texteditor geöffnet wird, z.B.: >> edit s_dglnon3.mdl
Dr.-Ing. Th. Buch: Einführung
110
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB
Mehrfach Aufrufen eines Modells Ein Modell kann z.B. innerhalb einer Funktion in einer Schleife aufgerufen werden mit geänderten Parametern >> >> >> >> >>
r = [3 20 60]; rho = 1.29/1000; Fc = 155.2; [t,Y] = dglnonit(r, rho, Fc, 5, .01, [0,1]); figure(1), plot(t,Y(:,1),'b-',t,Y(:,2),'k--',t,Y(:,3),'r-.')
Dr.-Ing. Th. Buch: Einführung
111
Universität Rostock FB EIT/NTIE
Interaktion von Simulink und MATLAB Mehrfach Aufrufen eines Modells Ergebnis: 1
r=3 cm r=20 cm r = 60 cm
0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1
0
0.5
1
1.5
2
2.5
3
3.5
Dr.-Ing. Th. Buch: Einführung
4
4.5
5
112
MATLAB-Übungen
Universität Rostock FB EIT/NTIE
MATLAB-Übungen 1. 2. 3. 4. 5. 6. 7.
Variablen Arithmetische Operationen Elementare Funktionen Grafik-Funktionen IO-Funktionen Symbolics Programmierung
Dr.-Ing. Th. Buch: Einführung
113
Universität Rostock FB EIT/NTIE
Übungsaufgaben MATLAB-Variablen Übung 1
0 0 ⎞ ⎛ 1 ⎜ ⎟ 1 ⎟ M = ⎜ 0 j ⎜ j j + 1 − 3 ⎟ ⎝ ⎠ k = 2.75
⎛ 1 ⎞ ⎜ ⎟ 3 r ⎜ ⎟ v =⎜ −7 ⎟ ⎜ ⎟ ⎜ − 0.5 ⎟ ⎝ ⎠ r
w = (1 − 5.5 r
y = (1 1.5
− 1.7 − 1.5 3 − 10.7 ) 2
2.5 ... 100.5)
Dr.-Ing. Th. Buch: Einführung
114
Universität Rostock FB EIT/NTIE
Übungsaufgaben MATLAB-Variablen
Übung 2 1. Erweitern der Matrix M zu einer 6 x 6 – Matrix V der Form:
⎛ M M ⎞ ⎟⎟ V = ⎜⎜ ⎝ M M ⎠ 2. Löschen der 2. Zeile und 3. Spalte (V23 streichen) 3. Neuer Vektor z4 gleich 4. Zeile von V 4. Ändern Matrixelement V(4,2) zu j+5 Dr.-Ing. Th. Buch: Einführung
115
Universität Rostock FB EIT/NTIE
Übungsaufgaben MATLAB-Operationen Übung 3.1 1. Standardskalarprodukt der Vektoren r
x = (1 2
0,5
− 3 − 1)
r
y = (2
0
− 3 1 / 3 2 )
mit Hilfe der Matrix-Operation und mit Hilfe der Feldoperation 2. Produkt der Matrizen
2 ⎞ ⎛ − 1 3,5 ⎟ ⎜ A = ⎜ 0 1 − 1,3⎟ ⎜ 1,1 2 1,9 ⎟ ⎝ ⎠
0 − 1 ⎞ ⎛ 1 ⎜ ⎟ B = ⎜ − 1,5 1,5 − 3⎟ ⎜ 1 ⎟ 1 1 ⎝ ⎠
Dr.-Ing. Th. Buch: Einführung
116
Universität Rostock FB EIT/NTIE
Übungsaufgaben MATLAB-Operationen
Übung 3.2: Umsortieren von Matrizen und Vektoren: 1. Erzeugen Sie einen Spaltenvektor mit den aufeinander folgenden ganzen Zahlen von 1 bis 16 2. Sortieren Sie die Vektorelemente in eine 4 x 4 Matrix A und eine 8 x 2 Matrix B Lösen Sie die Aufgabe mit dem (:) Operator und der Funktion reshape
Dr.-Ing. Th. Buch: Einführung
117
Universität Rostock FB EIT/NTIE
Übungsaufgaben MATLAB-Operationen
Übung 3.3: Umsortieren von Matrizen und Vektoren: 1. Erzeugen Sie einen Spaltenvektor x mit den aufeinander folgenden ganzen Zahlen von 1 bis 21 2. Berechnen Sie für 3 aufeinander folgende Elemente den Mittelwert und legen Sie das Ergebnis in einem Vektor x2m ab. Hinweis: Sortieren Sie den Vektor in eine 3 x 7 Matrix und Berechnen Sie den Mittelwert mit Hilfe der Funktionen sum und mean
Dr.-Ing. Th. Buch: Einführung
118
Universität Rostock FB EIT/NTIE
Übungsaufgaben MATLAB-Operationen
Übung 4 1. Testen der relationalen Operationen der Vektoren r
x = (1 − 3 3 14
− 10 12)
r
y = (12
6
0
− 1 − 10 2)
<=, >=, >, ==, >, ~= 2. Matrix-Einträge >10 und < -10 auf Null setzen ⎛ 1 ⎜ ⎜ − 22 A = ⎜ 8 ⎜ ⎜ 18 ⎝
2
3
4 10 ⎞
⎟ 1 11 − 12 4 ⎟ 1 6 − 11 5 ⎟ ⎟ 1 11 6 4 ⎠⎟
Dr.-Ing. Th. Buch: Einführung
119
Universität Rostock FB EIT/NTIE
Übungsaufgaben MATLAB-Operationen Übung 4.1 1. Lösung eines linearen Gleichungssystems A * x = bT A = 1 2 3 4
A = 2 3 4 1
3 4 1 2
4 1 2 3
2 1 1 0
1 -1 5 2
1 0 2 0
0 0 0 1
b = -2 2 2 -2 Welche Bedingung muss erfüllt sein, damit LGS lösbar?
Dr.-Ing. Th. Buch: Einführung
120
Universität Rostock FB EIT/NTIE
Übungsaufgaben elementare Funktionen
Übung 5 1. Berechnung der Funktion für einen Zeitvektor t=[0,10] im Abstand 0,1
s (t ) = sin( 2Π5t ) cos( 2Π3t ) + e
Dr.-Ing. Th. Buch: Einführung
−0,1t
121
Universität Rostock FB EIT/NTIE
Übungsaufgaben Grafik - Funktionen Übung 6 1. Fehlerhafte MATLAB-Sequenz
t=(0:0.01:2); sinfkt=sin(2*pi*5*t); cosfkt=2*cos(2*pi*3*t); expfkt=exp(-2*t); plot(t,[sinfkt, cosfkt, expfkt])
Dr.-Ing. Th. Buch: Einführung
122
Universität Rostock FB EIT/NTIE
Übungsaufgaben Grafik - Funktionen
Übung 7 1. Berechnen eines Rechteckpulses der Länge 32, Dauer 8 und Amplitude 1. • Berechnung der DFT mittels FFT • Darstellung des Zeitsignals als Kurven-Plot im oberen Subplot • Darstellung des Betrages der DFT als Linienplot ( stem ) im unteren Subplot • Beschriftung von Titel, Achsen und Legende Verwendung Sie online help für die Befehlsbeschreibung subplot, legend, fft, stem, plot
Dr.-Ing. Th. Buch: Einführung
123
Universität Rostock FB EIT/NTIE
Übungsaufgaben Grafik - Funktionen
Übung 7.1 1. Berechnen Sie einen 2-D-Gauss-Impuls als Funktion von x und y im Bereich x, y = [-2:.1:2] mit a = 2 und b = 1/2. −
f ( x, y) = z = e • • •
x 2 a
−
y2 b
Stellen Sie die Funktion als 3-D-Plot (surf) dar Beschriftung von Titel und Achsen Integrieren Sie die Formel mit TEX-Befehlen in den Titel
Verwendung Sie online help für die Befehlsbeschreibung surf, meshgrid, xlabel, title, tex
Dr.-Ing. Th. Buch: Einführung
124
Universität Rostock FB EIT/NTIE
Übungsaufgaben Grafik - Funktionen
Übung 8 1. Plotten einer Übertragungsfunktionen in log-Darstellungen (Betrag und Phase) • H1(j omega) = 1/j omega • H2(j omega) = 1/(1 + j omega) Verwendung Sie online help für die Befehlsbeschreibung semilgx, semilogy, loglog
Dr.-Ing. Th. Buch: Einführung
125
Universität Rostock FB EIT/NTIE
Übungsaufgaben Grafik - Funktionen
Übung 8.1 1. Gegeben ist eine Wertetabelle. Die Funktion und eine Kurvenapproximation ist zu zeichnen t = 0 y = 0
•
0.3 0.82
0.8 1.14
1.1 1.25
1.6 1.35
2.3 1.4
Verwenden Sie eine Polynomapproximation 2. Ordnung
y = a1 + a2t + a3t2 •
Verwenden Sie eine Exponentialapproximation 2. Ordnung
y = a1 + a2e-t + a3te-t Plotten Sie die Messwerte und die Approximationen in ein Diagramm und beschriften Sie die Achsen und Kurven. Verwenden Sie zur Approximation t = [0:.01:2.5] Dr.-Ing. Th. Buch: Einführung
126
Universität Rostock FB EIT/NTIE
Übungsaufgaben I/O - Funktionen
Übung 9 1. Erstellen einer ASCII-Text-Datei mit einem Text-Editor, bestehend aus 3 Spalten und 4 Zeilen 1.2 0.34 22 -89
5.6 -2.3 -34.8 -10+j
37.5+4j 2-j 500 67.9
Laden der Textdatei mit load und Anzeige der Matlab-Variable load -ascii
Dr.-Ing. Th. Buch: Einführung
127
Übungsaufgaben Symbolics
Universität Rostock FB EIT/NTIE
Übung 10 1. Symbolische Bestimmung des Taylor-Polynoms 3. Ordnung der Funktion g(x) = sin(5x - 2) 2. Symbolische Lösung der DGL y‘ = xy^2
Dr.-Ing. Th. Buch: Einführung
128
Universität Rostock FB EIT/NTIE
Übungsaufgaben Programmierung
Übung 11 1. M-Funktion zum Plotten einer Kreisscheibe mit dem Radius R und der Farbe C. Die Kreisscheibe ist durch einen geschlossenen Polygonenzug anzunähern. Ausgabe von Umfang und Fläche. Ein gefüllter Plot wird mit der Funktion fill erzeugt. 2. Einlesen einer XLS-Wetterdatentabelle und Plotten der Wetterdaten als Contourplot, wenn keine Ausgangsargumente gegeben, sonst Ausgabe einer 3-dimensionalen Matrix [Tageszeit, Tag, Wetterdaten]. Tageszeit und Tag sind im MATLAB-Systemzeitformat anzugeben.
Dr.-Ing. Th. Buch: Einführung
129
Übungsaufgaben Simulink
Universität Rostock FB EIT/NTIE
Übung 12 1. DGL einer gedämpften mechanischen Schwingung des Systems Feder – Stahlplatte unter Berücksichtigung der Newton‘schen Reibung mx‘‘(t) + bx‘(t)^2 + cx(t) = 0 für x‘(t)>0 mx‘‘(t) - bx‘(t)^2 + cx(t) = 0 für x‘(t)<0 m = 0,5 kg, b = 0,5cw*rho*A, cw = 1; rho = 1,29kg/m^3, m = rho_st*h*pi*r^2; h = 1 cm b = 0,00411; c = 155,2 (Federkonstante)
Dr.-Ing. Th. Buch: Einführung
130
Universität Rostock FB EIT/NTIE
Übungsaufgaben Signale und Systeme
Übung 13 1. Es sind die komplexen Koeffizienten der Fourier-Reihe folgender Signale zu berechnen und darzustellen. Es ist eine M-Function zur Berechnung der Fourier-Koeff zu entwickeln. Wie groß ist der Klirrfaktor? Signale: X1(t) = sin(2*pi*f0t) X2(t) = arctan(X1(t) ) X3(t) = abs(X1(t) )
Dr.-Ing. Th. Buch: Einführung
131