Sie sind auf Seite 1von 132

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


MATLAB/Simulink
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
MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB/Simulink Anwendungsgebiet

Grundlage der Anwendung von MATLAB® und Simulink ®

MATLAB
Matrizen,
Optimierung,
Grafik,
DGL‘s Simulink,
usw. Blocksets
Toolboxen
Signalverarbeitung, Identifikation, Reglerentwurf
usw.

Dr.-Ing. Th. Buch: Einführung 3


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB/Simulink Produktfamilie

Dr.-Ing. Th. Buch: Einführung 4


MATLAB/Simulink
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


MATLAB/Simulink
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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-System - Desktop

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-System - Help

MATLAB besitzt eine sehr gute „HELP“

Dr.-Ing. Th. Buch: Einführung 8


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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
MATLAB/Simulink
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
MATLAB/Simulink
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 =
hallo world 1 11

>> str1 = ['hallo'; 'world'] >> size(str1)


str1 = ans =
hallo 2 5
world

Dr.-Ing. Th. Buch: Einführung 13


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

Spezielle Werte
MATLAB kennt Konstanten und spezielle Symbole, die nicht anderweitig
verwendet werden sollten
>> pi Zahl B
ans = 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


MATLAB/Simulink
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 Size Bytes Class
Matrix 2x3 96 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
MATLAB/Simulink
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


MATLAB/Simulink
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 5 oder 6 werden Zeilen gesucht, die mit den eingegebenen
ersten Zeichen übereinstimmen.
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


MATLAB/Simulink
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
MATLAB/Simulink
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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

Weitere Indexierungsmöglichkeiten(2):
Zeilenvektor der Länge l = nxm 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


MATLAB/Simulink
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
MATLAB/Simulink
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 % gleich sein. prod(size(B)) == prod(size(C))
3 2 6 Dr.-Ing. Th. Buch: Einführung 22
MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

2-D-Grafikfunktionen
plot(0:5,sin(0:5)) plot(0:5,sin(0:5), 'mo')
1 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 -1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

plot(0:5, sin(0:5)) plot(0:5, sin(0:5),‘mo‘)

Dr.-Ing. Th. Buch: Einführung 31


MATLAB/Simulink
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 x0,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


MATLAB/Simulink
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


MATLAB/Simulink
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


Beispiel: Z = gauss2(X,Y,a,b); % 2-D-Gaussfunktion

•Auswahl geeigneter 3-D-Grafikfunktionen


Beispiel: surf(X,Y,Z)

Dr.-Ing. Th. Buch: Einführung 34


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

Grafikfunktionen
1
Erzeugung eines 3-D-Plots: 0.8
X-Matrix

z-Achse
-4 0.6
-3

-2
0.4
-1
0.2
0

1 0
2 2
3
1
4
-4 -3 -2 -1 0 1 2 3 4
0 -2
-1
Y-Matrix
-1 0
-4 1
-2 2
-3
x-Achse y-Ach se
-2

-1

4
-4 -3 -2 -1 0 1 2 3 4

Dr.-Ing. Th. Buch: Einführung 35


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

3-D-Grafikfunktionen

0.6 0.6

0.4 0.4
α - Achse

α - Achse
0.2 0.2

0 0

-0.2 -0.2

2 2
3 3
2 2
0 1 0 1
0 0
-2 -1 -1
-2 -2 -2
y-Achse -3 y-Achse -3
x-Achse x-Achse

Dr.-Ing. Th. Buch: Einführung 36


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

3-D-Volumengrafik, Beispiele

Dr.-Ing. Th. Buch: Einführung 37


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

3-D-Volumengrafik, Beispiele

Dr.-Ing. Th. Buch: Einführung 38


MATLAB/Simulink
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


MATLAB/Simulink
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 101 114
84 101 120 116 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
MATLAB/Simulink
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
MATLAB/Simulink
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
MATLAB/Simulink
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
MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

Behandlung von Zeichenketten, ASCII-Zeichen, Text

Dr.-Ing. Th. Buch: Einführung 44


MATLAB/Simulink
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 <Pfad/Dateiname> [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 %Alle Variablen von “wsdaten“ laden
load(‘wsdaten‘) %äquivatente Funktion
Dr.-Ing. Th. Buch: Einführung 45
MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Elementare MATLAB-Operationen

I/O-Operationen
Text-Dateien werden mit dem Schalter –ascii erzeugt oder geladen
save <Pfad/Dateiname> [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


MATLAB/Simulink
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: <CR><LF>, ENTER,

Dr.-Ing. Th. Buch: Einführung 47


MATLAB/Simulink
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
MATLAB/Simulink
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
MATLAB/Simulink
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


MATLAB/Simulink
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 Size Bytes Class
Grafik 1x1 708 struct array
Grand total is 37 elements using 708 bytes

Dr.-Ing. Th. Buch: Einführung 51


MATLAB/Simulink
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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Symbolisches Rechnen, TB Symbolics

Toolbox Symbolics, Beispiel


Ableiten einer Funktion f ( x, y ) = sin( xy 2 ) cos(vxy)
>> syms x y v
>> f = sin(x*y^2)*cos(x*y*v) % Funktion definieren
>> df = diff(f,‘y‘) % 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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

MATLAB-Prozeduren, Ausführung
MATLAB-Scripte werden durch Eingabe des Programm-Namens
(Filename) in die Kommandozeile und <Enter> 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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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 = mult(varin1, varin2)
...
if nargin == 1, varin2 = 1; end % Default: varin2 = 1
...
>> mult(2)
ans =
2
Dr.-Ing. Th. Buch: Einführung 62
MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

MATLAB-Funktionen, Sprachkonstrukte(1)
Berechnung, Programm-Ausführung
...
eval % Ausführung eines Strings als MATLAB-Anweisung
feval % Ausführung einer Funktion, spezifiziert als
% String
...

Argumente-Behandlung
...
nargin % Anzahl der Aufruf-Eingangsargumente
varargin % Liste der variablen Eingangsargumente
...

Meldungen, Textausgaben
...
error % Fehlermeldung, Abbruch der Funktion
...
Dr.-Ing. Th. Buch: Einführung 64
MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

MATLAB-Funktionen, IF-Anweisung
Programm-Verzweigung
if <Wahrheitswert>, WAHR-Anweisungen;
elseif <Wahrheitswert>, 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 % Vorzeichen berechnen
xsig = -1;
else
xsig = 1;
end
Dr.-Ing. Th. Buch: Einführung 65
MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

MATLAB-Funktionen, FOR-Schleife
Programm-Schleifen für begrenzte Zahl von Durchläufen
for <Schleifenvariable = Vektor> % Schleifenvariable nimmt
% nacheinander Werte der
% Vektorelemente an
Schleifen-Anweisungen; % 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
MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

MATLAB-Funktionen, WHILE-Schleife
Programm-Schleifen für unbekannte Zahl von Durchläufen
while <Wahrheitswert> % Schleifen Abbrechen, wenn
% Wahrheitswert FALSCH
Schleifen-Anweisungen; % 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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

MATLAB-Funktionen, SWITCH-Konstrukt
Die switch-case-Anweisung eignet sich für Programm-
verzweigungen 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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

MATLAB-Funktionen, EVAL, FEVAL


Mit der eval- und feval-Anweisung lassen sich Strings als MATLAB-
Ausdrü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 Funktions-
Handle als Eingangsargumente dienen

Dr.-Ing. Th. Buch: Einführung 70


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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 = ODEFUN(t,y) % y‘ = f(t,y)

Dr.-Ing. Th. Buch: Einführung 74


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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:

.. g r ⎛α(0)⎞
a (t ) = − ⋅ sin(α (t )) α(0) = ⎜ . ⎟
l ⎜α(0)⎟
⎝ ⎠

Dr.-Ing. Th. Buch: Einführung 75


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

MATLAB-Funktionen ODE (Lsg. Differentialgleichung)(2)


Überführung einer Pendelgleichnung in DGL-System 1. Ordnung

.
α1(t) =α(t) a1 (t ) = α 2 (t )
. . g
α2(t) =α(t) a 2 (t ) = − ⋅ sin(α1 (t ))
l

Dr.-Ing. Th. Buch: Einführung 76


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Programmierung

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Einführung in Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

Erstellen von Simulink-Modellen


Mit der Maus werden die Blöcke in das
Modell-Fenster gezogen

Dr.-Ing. Th. Buch: Einführung 83


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

Parametrieren von Simulink-


Modellen
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 Simulink-
Parameter benötigt, z.B. Abtastrate,
Anzahl der Eingänge usw.

Dr.-Ing. Th. Buch: Einführung 88


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

Parametrieren von Simulink-


Modellen (2)
Mit den Scope-Block werden
Oszillogramme erstellt. Die
Daten lassen sich als
workspace-Variable speichern

Dr.-Ing. Th. Buch: Einführung 89


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

Lösen von Differentialgleichungen mit Simulink


Einfached Beispiel: Erzeugung eines COS-Signals
&y&(t ) = − y (t ) Durch schrittweises
y (0) = 1, &y&(0) = 0 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.

Dr.-Ing. Th. Buch: Einführung 93


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Handhabung von Simulink

Lösen von Differentialgleichungen mit Simulink (2)


Einfached Beispiel: Erzeugung eines COS-Signals

Dr.-Ing. Th. Buch: Einführung 94


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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ührungsglei-
chung mit Fcn-
Block
y = g*u - t*u^2

Dr.-Ing. Th. Buch: Einführung 97


MATLAB/Simulink
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ührungsglei-
chung mit Fcn-
Block
y = g*u - t*u^2

Dr.-Ing. Th. Buch: Einführung 98


MATLAB/Simulink
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ührungsglei-
chung mit
Sub-System

Dr.-Ing. Th. Buch: Einführung 99


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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
Name Size Bytes Class

dglloesung 10001x1 80008 double array


t 10001x1 80008 double array
x 10001x2 160016 double array
y 0x0 0 double 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


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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
MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Interaktion von Simulink und MATLAB

Mehrfach Aufrufen eines Modells


Ergebnis:
1
r=3 cm
0.8 r=20 cm
r = 60 cm
0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Dr.-Ing. Th. Buch: Einführung 112


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
MATLAB-Übungen

MATLAB-Übungen

1. Variablen
2. Arithmetische Operationen
3. Elementare Funktionen
4. Grafik-Funktionen
5. IO-Funktionen
6. Symbolics
7. Programmierung

Dr.-Ing. Th. Buch: Einführung 113


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Übungsaufgaben MATLAB-Variablen

Übung 1 ⎛1 0 0 ⎞
⎜ ⎟
M = ⎜0 j 1 ⎟
⎜j j + 1 − 3 ⎟⎠

k = 2.75

⎛ 1 ⎞
⎜ ⎟
r ⎜ 3 ⎟
v =⎜
−7 ⎟
⎜ ⎟
⎜ − 0.5 ⎟
⎝ ⎠

r
w = (1 − 5.5 − 1.7 − 1.5 3 − 10.7 )

r
y = (1 1.5 2 2.5 ... 100.5)

Dr.-Ing. Th. Buch: Einführung 114


MATLAB/Simulink
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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Übungsaufgaben MATLAB-Operationen

Übung 3.1
1. Standardskalarprodukt der Vektoren
r r
x = (1 2 0,5 − 3 − 1) y = (2 0 − 3 1 / 3 2)

mit Hilfe der Matrix-Operation und mit Hilfe der Feldoperation


2. Produkt der Matrizen

⎛ − 1 3,5 2 ⎞ ⎛ 1 0 − 1⎞
⎜ ⎟ ⎜ ⎟
A=⎜ 0 1 − 1,3 ⎟ B = ⎜ − 1,5 1,5 − 3⎟
⎜ 1,1 2 1,9 ⎟ ⎜ 1 ⎟
⎝ ⎠ ⎝ 1 1 ⎠

Dr.-Ing. Th. Buch: Einführung 116


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Übungsaufgaben MATLAB-Operationen

Übung 4
1. Testen der relationalen Operationen der Vektoren
r r
x = (1 − 3 3 14 − 10 12 ) y = (12 6 0 − 1 − 10 2 )

<=, >=, >, ==, >, ~=


2. Matrix-Einträge >10 und < -10 auf Null setzen

⎛ 1 2 3 4 10 ⎞
⎜ ⎟
⎜ − 22 1 11 − 12 4 ⎟
A=⎜
8 1 6 − 11 5 ⎟
⎜ ⎟
⎜ 18 1 11 6 4 ⎟⎠

Dr.-Ing. Th. Buch: Einführung 119


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Übungsaufgaben MATLAB-Operationen

Übung 4.1
1. Lösung eines linearen Gleichungssystems
A * x = bT
A = A =
1 2 3 4 2 1 1 0
2 3 4 1 1 -1 0 0
3 4 1 2 1 5 2 0
4 1 2 3 0 2 0 1

b =
-2 2 2 -2
Welche Bedingung muss erfüllt sein,
damit LGS lösbar?

Dr.-Ing. Th. Buch: Einführung 120


MATLAB/Simulink
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

−0,1t
s (t ) = sin( 2Π5t ) cos(2Π3t ) + e

Dr.-Ing. Th. Buch: Einführung 121


MATLAB/Simulink
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


MATLAB/Simulink
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


MATLAB/Simulink
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.
x2 y2
− −
f ( x , y ) = z =e a 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


MATLAB/Simulink
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


MATLAB/Simulink
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 0.3 0.8 1.1 1.6 2.3
y = 0 0.82 1.14 1.25 1.35 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
MATLAB/Simulink
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 5.6 37.5+4j
0.34 -2.3 2-j
22 -34.8 500
-89 -10+j 67.9

Laden der Textdatei mit load und Anzeige der Matlab-Variable


load -ascii

Dr.-Ing. Th. Buch: Einführung 127


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Übungsaufgaben Symbolics

Ü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


MATLAB/Simulink
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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Übungsaufgaben Simulink

Ü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


MATLAB/Simulink
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


MATLAB/Simulink
Universität Rostock
FB EIT/NTIE
Übungsaufgaben Signale und Systeme

Übung 14
1. Es sind der Amplituden- und Phasengang eines RLC-
Netzwerkes zu bestimmen. Dabei ist von der
Übertragungsfunktion G(jω) = U2(jω)/ U1(jω) auszugehen.
Rg = 10 kOhm, C = 100 pF, L = 0,1 mH, R = 1, 5, 50 kOhm

Rg

U1 U2
R L C

Dr.-Ing. Th. Buch: Einführung 132


MATLAB/Simulink