Simulink®
WS 2008/09
Dr.-Ing. Thomas Buch
Universität Rostock, Fakultät IEF-NT
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
MATLAB
Matrizen,
Optimierung,
Grafik,
DGL‘s Simulink,
usw. Blocksets
Toolboxen
Signalverarbeitung, Identifikation, Reglerentwurf
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
File-Browser
Variablen
workspace
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)]
MATLAB-Operationen
• Arithmetische Operationen
• Logische Operationen
• Mathematische Funktionen
• Grafikfunktionen
• I/O-Operationen (Datenaustausch)
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
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
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
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
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)
• ...
Matrix-Manipulationen, z.B.:
Transponieren einer Matrix: Vt = V‘
Invertieren einer Matrix: Vinv = inv(V)
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.
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)
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
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])
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)
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
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
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
3-D-Volumengrafik, Beispiele
3-D-Volumengrafik, Beispiele
>> 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
title(‘Titel‘);
xlabel(‘x-Achse‘), ylabel(‘y-Achse‘);
text(xpos,ypos,‘Freier Text‘) % Text auf der Position [xpos,ypos]
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
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
I/O-Operationen
Text-Dateien werden mit dem Schalter –ascii erzeugt oder geladen
save <Pfad/Dateiname> [variable1...] –ascii oder
save(‘Pfad/Dateiname‘, ‘var1‘, ..., ‘-ascii‘)
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,
•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
Strukturen
Zusammenfassen von Variablen unterschiedlicher Typen und
Größe, z.B. Grafik-Eigenschaften
• Grafiktitel Grafik.Titel = ‘Beispiel‘;
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.
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
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
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
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
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,...)
oder
>> factor = [1 2 3];
>> mult(2,factor)
ans = 2 4 6
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.
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)
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
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
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
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
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
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)
.. g r ⎛α(0)⎞
a (t ) = − ⋅ sin(α (t )) α(0) = ⎜ . ⎟
l ⎜α(0)⎟
⎝ ⎠
.
α1(t) =α(t) a1 (t ) = α 2 (t )
. . g
α2(t) =α(t) a 2 (t ) = − ⋅ sin(α1 (t ))
l
Die Variable t muss mit übergeben werden, auch wenn sie nicht
benötigt wird!
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.
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
Verbindungen,
Blöcke, Knoten und
markierte Gruppen
lassen sich
verschieben
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.
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.
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]);
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.
>> 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
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
>> find_system('s_dglnon3','BlockType','Gain')
ans =
's_dglnon3/Faktorb'
's_dglnon3/Faktorc'
's_dglnon3/invm'
>> 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-.')
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
MATLAB-Übungen
1. Variablen
2. Arithmetische Operationen
3. Elementare Funktionen
4. Grafik-Funktionen
5. IO-Funktionen
6. Symbolics
7. Programmierung
Ü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)
Ü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)
Übung 3.1
1. Standardskalarprodukt der Vektoren
r r
x = (1 2 0,5 − 3 − 1) y = (2 0 − 3 1 / 3 2)
⎛ − 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 ⎠
Lösen Sie die Aufgabe mit dem (:) Operator und der Funktion
reshape
Ü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 )
⎛ 1 2 3 4 10 ⎞
⎜ ⎟
⎜ − 22 1 11 − 12 4 ⎟
A=⎜
8 1 6 − 11 5 ⎟
⎜ ⎟
⎜ 18 1 11 6 4 ⎟⎠
⎝
Ü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?
Ü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
Ü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])
Ü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
Ü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
Ü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)
Ü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
Ü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
Übung 10
1. Symbolische Bestimmung des Taylor-Polynoms 3. Ordnung
der Funktion g(x) = sin(5x - 2)
Ü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.
Ü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
Ü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) )
Ü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