Matlab Lehrgang08 09 Skript[1]

132
Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink 1 Einführung in MATLAB ® Simulink ® WS 2008/09 Dr.-Ing. Thomas Buch Universität Rostock, Fakultät IEF-NT

Transcript of Matlab Lehrgang08 09 Skript[1]

Page 1: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

1

Einführung in MATLAB ®Simulink®

WS 2008/09

Dr.-Ing. Thomas BuchUniversität Rostock, Fakultät IEF-NT

Page 2: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

2

Gliederung

Universität RostockFB EIT/NTIE

1. Einleitung1.1 Anwendungsgebiet1.2 Produktfamilie

2. MATLAB-System3. Einführung in MATLAB

2.1 Elementare MATLAB-Operationen2.2 Die MATLAB-Hilfe2.3 MATLAB-Programmierung2.4 Symbolische Rechnung

4. Einführung in Simulink3.1 Was ist Simulink?3.2 Funktionsprinzip und Handhabung von Simulink3.3 Vereinfachung von Simulink-Systemen3.3 Interaktion mit MATLAB

Page 3: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

3

Universität RostockFB EIT/NTIE

Grundlage der Anwendung von MATLAB® und Simulink ®

Simulink,Blocksets

MATLABMatrizen,

Optimierung,Grafik,DGL‘susw.

ToolboxenSignalverarbeitung, Identifikation, Reglerentwurf

usw.

MATLAB/Simulink Anwendungsgebiet

Page 4: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

4

Universität RostockFB EIT/NTIE

MATLAB/Simulink Produktfamilie

Page 5: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

5

Universität RostockFB 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

Page 6: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

6

Universität RostockFB EIT/NTIE

MATLAB-System

Bestandteile von MATLAB

• Desktop Tools und Entwicklungsumgebung

Command window, history, workspace, editor, browsers

• MATLAB Bibliothek für Mathematische FunktionenBerechnungsalgorithmen für Elementarmathematik, Matrizenrechnung, Mathematische Funktionen, Schnelle Fourier-Transformation usw.

• MATLAB ProgrammierspracheProgrammsteuerung, objektorientierte Programmierung, Matrizenrechnung

• MATLAB Grafik

• MATLAB Externe Schnittstellen, Programmierinterfaces (API)

• Entwicklung von Anwenderprogrammen mit GUI

Page 7: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

7

Universität RostockFB EIT/NTIE

MATLAB-System - Desktop

MATLAB wird aus Windows heraus durch „Doppelklick“ gestartet.

Es öffnet sich der MATLAB - Desktop

Eingabe von MATLAB-Funktionen

File-Browser

CommandHistory

Variablenworkspace

Page 8: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

8

Universität RostockFB EIT/NTIE

MATLAB-System - Help

MATLAB besitzt eine sehr gute „HELP“

Page 9: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

9

Universität RostockFB 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)]

Page 10: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

10

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

MATLAB-Operationen

• Arithmetische Operationen

• Logische Operationen

• Mathematische Funktionen

• Grafikfunktionen

• I/O-Operationen (Datenaustausch)

Page 11: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

11

Universität RostockFB 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

Page 12: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

12

Universität RostockFB 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)

Page 13: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

13

Universität RostockFB 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'

str =

hallo world

>> str1 = ['hallo'; 'world']

str1 =

hallo

world

>> size(str)

ans =

1 11

>> size(str1)

ans =

2 5

Page 14: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

14

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

Spezielle WerteMATLAB 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

Page 15: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

15

Universität RostockFB 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, whoswho

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

Page 16: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

16

Universität RostockFB 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;

Page 17: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

17

Universität RostockFB 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.

Page 18: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

18

Universität RostockFB 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

Page 19: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

19

Universität RostockFB 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

Page 20: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

20

Universität RostockFB 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

Page 21: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

21

Universität RostockFB 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

Page 22: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

22

Universität RostockFB 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

Page 23: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

23

Universität RostockFB 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)

• ...

Page 24: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

24

Universität RostockFB 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

Page 25: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

25

Universität RostockFB 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)

Page 26: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

26

Universität RostockFB 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.

Page 27: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

27

Universität RostockFB 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.

Page 28: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

28

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

Logische und relationale OperationenLogische 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

Page 29: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

29

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

Mathematische FunktionenMATLAB 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.

Page 30: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

30

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

GrafikfunktionenEine 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)

Page 31: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

31

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

2-D-Grafikfunktionen

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

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1plot(0:5,sin(0:5))

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

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1plot(0:5,sin(0:5), 'mo')

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

Page 32: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

32

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

Grafik beschriftenGrafiken 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])

Page 33: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

33

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

Grafikfunktionen3-D-Plots:

• XYZ-Maschen-Plot.: mesh(X,Y,Z)

• XYZ-Oberflächen-Plot: surf(X,Y,Z)

• XYZ-Kontur-Plot: contour3(X,Y,Z)

Page 34: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

34

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

GrafikfunktionenErzeugung 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)

Page 35: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

35

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

GrafikfunktionenErzeugung eines 3-D-Plots:

X-Matrix

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

-4

-3

-2

-1

0

1

2

3

4

Y-Matrix

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

-4

-3

-2

-1

0

1

2

3

4

-2

-1

0

1

2

-2-1

01

2

0

0.2

0.4

0.6

0.8

1

y-Achsex-Achse

z-A

chse

Page 36: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

36

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

3-D-Grafikfunktionen

-3-2

-10

12

3

-2

0

2

-0.2

0

0.2

0.4

0.6

x-Achsey-Achse

α -

Ach

se

-3-2

-10

12

3

-2

0

2

-0.2

0

0.2

0.4

0.6

x-Achsey-Achse

α -

Ach

se

Page 37: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

37

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

3-D-Volumengrafik, Beispiele

Page 38: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

38

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

3-D-Volumengrafik, Beispiele

Page 39: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

39

Universität RostockFB 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 =TextBei Eingabe von mehreren Zeilen ist zu beachten, dass jede Zeile die gleiche Länge besitzt. Mit Leerzeichen auffüllen>> str = ['neuer';'Text ']str =neuerTextAutomatischer Zeilenausgleich mit Befehl char(‘...‘,‘...‘, ...)

Page 40: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

40

Universität RostockFB 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 11484 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

Page 41: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

41

Universität RostockFB 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-StringAber:cellstr = S(1); % Ergebnis ist ein Cell-Array mit einem Elementstr = char(S(1)); % Ergebnis ist ein char-String wie in Zeile 1Siehe auch help cellstr

Page 42: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

42

Universität RostockFB 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.)

Page 43: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

43

Universität RostockFB 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)

Page 44: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

44

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

Behandlung von Zeichenketten, ASCII-Zeichen, Text

Page 45: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

45

Universität RostockFB 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 - Kommandosave <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-Fileload wsdaten %Alle Variablen von “wsdaten“ laden load(‘wsdaten‘) %äquivatente Funktion

Page 46: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

46

Universität RostockFB EIT/NTIE

Elementare MATLAB-Operationen

I/O-Operationen

Text-Dateien werden mit dem Schalter –ascii erzeugt oder geladensave <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

Page 47: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

47

Universität RostockFB 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,

Page 48: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

48

Universität RostockFB 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

Page 49: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

49

Universität RostockFB 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

Page 50: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

50

Universität RostockFB 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!!!!

Page 51: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

51

Universität RostockFB 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

Page 52: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

52

Universität RostockFB 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.

Page 53: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

53

Universität RostockFB EIT/NTIE

Symbolisches Rechnen, TB Symbolics

Toolbox Symbolics, Beispiel

Ableiten einer Funktion >> 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

)cos()sin(),( 2 vxyxyyxf =

Page 54: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

54

Universität RostockFB 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

Page 55: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

55

Universität RostockFB 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

Page 56: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

56

Universität RostockFB 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

% BerechnungN = 4;for ii=1:N

n(ii) = 1/(1-ii^2);end

!Wichtig! Programme ausführlich kommentieren!

Script-Files werden zeilenweise abgearbeitet

Page 57: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

57

Universität RostockFB 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

Page 58: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

58

Universität RostockFB 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,...)

Page 59: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

59

Universität RostockFB 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;

Page 60: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

60

Universität RostockFB 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

Page 61: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

61

Universität RostockFB 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 Fehlermeldungmult(2)

??? Input argument 'varin2' is undefined.

Error in ==> C:\MATLAB6p5\work\mult.m

On line 2 ==> prod = varin1 * varin2;

Page 62: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

62

Universität RostockFB 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

Page 63: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

63

Universität RostockFB EIT/NTIE

MATLAB-Programmierung

MATLAB-Funktionen, Sprachkonstrukte

MATLAB besitzt alle typischen Konstrukte einer Programmiersprache. Mit help lang (language) werden sie angezeigt. z.B.

Kontrollfluss-Konstrukteif, 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)

Page 64: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

64

Universität RostockFB EIT/NTIE

MATLAB-Programmierung

MATLAB-Funktionen, Sprachkonstrukte(1)

Berechnung, Programm-Ausführung...eval % Ausführung eines Strings als MATLAB-Anweisungfeval % Ausführung einer Funktion, spezifiziert als

% String...

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

Meldungen, Textausgaben...error % Fehlermeldung, Abbruch der Funktion...

Page 65: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

65

Universität RostockFB EIT/NTIE

MATLAB-Programmierung

MATLAB-Funktionen, IF-Anweisung

Programm-Verzweigungif <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

Page 66: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

66

Universität RostockFB EIT/NTIE

MATLAB-Programmierung

MATLAB-Funktionen, FOR-Schleife

Programm-Schleifen für begrenzte Zahl von Durchläufenfor <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);endxmean = xmean/n;

Page 67: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

67

Universität RostockFB EIT/NTIE

MATLAB-Programmierung

MATLAB-Funktionen, WHILE-Schleife

Programm-Schleifen für unbekannte Zahl von Durchläufenwhile <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

Page 68: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

68

Universität RostockFB 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

Vektorisierungy = sin(0:.1:9.9);

Page 69: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

69

Universität RostockFB 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 Argumentezahlfunction 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.

Page 70: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

70

Universität RostockFB 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 = @sinfeval(F,34.5) ist das gleiche wie: sin(34.5)

Feval wird innerhalb von Funktionen verwendet, wobei Funktions- Handle als Eingangsargumente dienen

Page 71: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

71

Universität RostockFB 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

Page 72: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

72

Universität RostockFB 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!

Page 73: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

73

Universität RostockFB 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

Page 74: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

74

Universität RostockFB 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)

Page 75: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

75

Universität RostockFB 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:

))(sin()(..

tlgta α⋅−= ⎟

⎟⎠

⎞⎜⎜⎝

⎛= .

)0(

)0()0(

α

ααr

Page 76: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

76

Universität RostockFB EIT/NTIE

MATLAB-Programmierung

MATLAB-Funktionen ODE (Lsg. Differentialgleichung)(2)Überführung einer Pendelgleichnung in DGL-System 1. Ordnung

))(sin()(

)()(

12.

2.1

tlgta

tta

α

α

⋅−=

=

)()(

)()(.

2

1

tt

tt

αα

αα

=

=

Page 77: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

77

Universität RostockFB 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!

Page 78: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

78

Universität RostockFB 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]);

Page 79: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

79

Universität RostockFB 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

Page 80: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

80

Universität RostockFB 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.

Page 81: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

81

Universität RostockFB 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

Page 82: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

82

Universität RostockFB 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.

Page 83: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

83

Universität RostockFB EIT/NTIE

Handhabung von Simulink

Erstellen von Simulink-Modellen

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

Page 84: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

84

Universität RostockFB 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...)

Page 85: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

85

Universität RostockFB 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

Page 86: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

86

Universität RostockFB 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

Page 87: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

87

Universität RostockFB 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

Page 88: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

88

Universität RostockFB 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.

Page 89: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

89

Universität RostockFB 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

Page 90: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

90

Universität RostockFB EIT/NTIE

Handhabung von Simulink

Beschriften von Simulink-ModellenText 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üeBlöcke lassen sich drehen und kippen, färben und schattieren und der Name lässt sich verbergen.MUX-Linien lassen sich verbreitert dargestellen.

Page 91: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

91

Universität RostockFB EIT/NTIE

Handhabung von Simulink

Simulink-SimulationDer 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.

Page 92: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

92

Universität RostockFB EIT/NTIE

Handhabung von Simulink

Simulink-SimulationFü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.

Page 93: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

93

Universität RostockFB EIT/NTIE

Handhabung von Simulink

Lösen von Differentialgleichungen mit SimulinkEinfached Beispiel: Erzeugung eines COS-Signals

0)0(,1)0()()(==

−=yytyty&&

&& 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.

Page 94: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

94

Universität RostockFB EIT/NTIE

Handhabung von Simulink

Lösen von Differentialgleichungen mit Simulink (2)Einfached Beispiel: Erzeugung eines COS-Signals

Page 95: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

95

Universität RostockFB EIT/NTIE

Vereinfachung von Simulink-Modellen

Vereinfachung von Mathematischen Funktionen – Fcn-BlockMathematische 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

Page 96: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

96

Universität RostockFB EIT/NTIE

Vereinfachung von Simulink-Modellen

Zusammenfassen von Blöcken – Sub-SystemBlö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

Page 97: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

97

Universität RostockFB EIT/NTIE

Vereinfachung von Simulink-Modellen

Zusammenfassen von Blöcken – BeispielLogistische DGL: Berechnung der Population bei gegebener Zuwachs- und Sterberate. (Nichtlineare DGL)

)()()( 2.

tPtPtP ⋅−⋅= τγ

Zusammenfassung der Rückführungsglei- chung mit Fcn- Blocky = g*u - t*u^2

Page 98: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

98

Universität RostockFB EIT/NTIE

Vereinfachung von Simulink-Modellen

Zusammenfassen von Blöcken – Beispiel (2)Logistische DGL: Berechnung der Population bei gegebener Zuwachs- und Sterberate. (Nichtlineare DGL)

)()()( 2.

tPtPtP ⋅−⋅= τγ

Zusammenfassung der Rückführungsglei- chung mit Fcn- Blocky = g*u - t*u^2

Page 99: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

99

Universität RostockFB EIT/NTIE

Vereinfachung von Simulink-Modellen

Zusammenfassen von Blöcken – Beispiel (3)Logistische DGL: Berechnung der Population bei gegebener Zuwachs- und Sterberate. (Nichtlineare DGL)

)()()( 2.

tPtPtP ⋅−⋅= τγ

Zusammenfassung der Rückführungsglei- chung mit Sub-System

Page 100: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

100

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Simulink-Parameter aus Workspace übernehmenParameter 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

Page 101: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

101

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Beispiel: Nichtlineare DGl. Eines Masse-Feder-Systems

Page 102: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

102

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Beispiel: Nichtlineare DGl. Eines Masse-Feder-Systems

Parameter für „Faktor 1/m“ eingeben

Page 103: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

103

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Beispiel: Nichtlineare DGl. Eines Masse-Feder-Systems

Schrittweite eingeben eingeben

Page 104: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

104

Universität RostockFB 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

Page 105: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

105

Universität RostockFB 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]);

Page 106: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

106

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Start eines Simulink-Modelles aus MATLAB heraus

Nach Start der Simulation sind folgende Variablen im Workspace>> whosName Size Bytes Class

dglloesung 10001x1 80008 double arrayt 10001x1 80008 double arrayx 10001x2 160016 double arrayy 0x0 0 double array

Grand total is 40004 elements using 320032 bytes

Da kein Ausgangsblock vorhanden ist, werden für y keine Datenerzeugt!

Page 107: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

107

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Lesen und setzen von Parametern

Mit den MATLAB-Befehlen set_param und get_param lassen sichModell-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.

Page 108: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

108

Universität RostockFB 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!!

Page 109: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

109

Universität RostockFB 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'

Page 110: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

110

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Finden von Blöcken eines Modells

Einen Überblick über Blöcke und Parameter liefert das Modell-File,Wenn es mit einem Texteditor geöffnet wird, z.B.:

>> find_system('s_dglnon3','BlockType','Gain')

ans =

's_dglnon3/Faktorb''s_dglnon3/Faktorc''s_dglnon3/invm'

>> edit s_dglnon3.mdl

Page 111: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

111

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Mehrfach Aufrufen eines ModellsEin Modell kann z.B. innerhalb einer Funktion in einer Schleifeaufgerufen 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-.')

Page 112: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

112

Universität RostockFB EIT/NTIE

Interaktion von Simulink und MATLAB

Mehrfach Aufrufen eines ModellsErgebnis:

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

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1r=3 cmr=20 cmr = 60 cm

Page 113: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

113

MATLAB-Übungen

Universität RostockFB EIT/NTIE

MATLAB-Übungen

1. Variablen2. Arithmetische Operationen3. Elementare Funktionen4. Grafik-Funktionen5. IO-Funktionen6. Symbolics7. Programmierung

Page 114: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

114

Universität RostockFB EIT/NTIE

Übungsaufgaben MATLAB-Variablen

( )

( )5.100...5.225.11

7.1035.17.15.51

5.07

31

75.2

3110001

=

−−−−=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

−−

=

=

⎟⎟⎟

⎜⎜⎜

−+=

y

w

v

k

jjjM

r

r

r

Übung 1

Page 115: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

115

Universität RostockFB EIT/NTIE

Übungsaufgaben MATLAB-Variablen

⎟⎟⎠

⎞⎜⎜⎝

⎛=

MMMM

V

Übung 21. Erweitern der Matrix M zu einer 6 x 6 – Matrix V der Form:

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

Page 116: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

116

Universität RostockFB EIT/NTIE

Übungsaufgaben MATLAB-Operationen

( ) ( )23/1302135,021 −=−−= yx rr

Übung 3.11. Standardskalarprodukt der Vektoren

mit Hilfe der Matrix-Operation und mit Hilfe der Feldoperation2. Produkt der Matrizen

⎟⎟⎟

⎜⎜⎜

⎛−−−

=⎟⎟⎟

⎜⎜⎜

⎛−

−=

11135,15,1101

9,121,13,110

25,31BA

Page 117: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

117

Universität RostockFB 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

Page 118: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

118

Universität RostockFB 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

Page 119: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

119

Universität RostockFB EIT/NTIE

Übungsaufgaben MATLAB-Operationen

( ) ( )21010612121014331 −−=−−= yx rr

Übung 41. Testen der relationalen Operationen der Vektoren

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

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

−−−

=

461111851161841211122

104321

A

Page 120: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

120

Universität RostockFB EIT/NTIE

Übungsaufgaben MATLAB-Operationen

Übung 4.11. Lösung eines linearen Gleichungssystems

A * x = bT

A =1 2 3 42 3 4 13 4 1 24 1 2 3

b =-2 2 2 -2

Welche Bedingung muss erfüllt sein,damit LGS lösbar?

A =2 1 1 01 -1 0 01 5 2 00 2 0 1

Page 121: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

121

Universität RostockFB EIT/NTIE

Übungsaufgaben elementare Funktionen

tettts 1,0)32cos()52sin()( −+ΠΠ=

Übung 51. Berechnung der Funktion für einen Zeitvektor t=[0,10]

im Abstand 0,1

Page 122: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

122

Universität RostockFB EIT/NTIE

Übungsaufgaben Grafik - Funktionen

Übung 61. 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])

Page 123: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

123

Universität RostockFB EIT/NTIE

Übungsaufgaben Grafik - Funktionen

Übung 71. 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 Befehlsbeschreibungsubplot, legend, fft, stem, plot

Page 124: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

124

Universität RostockFB EIT/NTIE

Übungsaufgaben Grafik - Funktionen

Übung 7.11. 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.

• 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 Befehlsbeschreibungsurf, meshgrid, xlabel, title, tex

2 2

( , )x ya bf x y z e

− −= =

Page 125: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

125

Universität RostockFB EIT/NTIE

Übungsaufgaben Grafik - Funktionen

Übung 81. 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 Befehlsbeschreibungsemilgx, semilogy, loglog

Page 126: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

126

Universität RostockFB EIT/NTIE

Übungsaufgaben Grafik - Funktionen

Übung 8.11. Gegeben ist eine Wertetabelle. Die Funktion und eine

Kurvenapproximation ist zu zeichnent = 0 0.3 0.8 1.1 1.6 2.3y = 0 0.82 1.14 1.25 1.35 1.4• Verwenden Sie eine Polynomapproximation 2. Ordnung

y = a1 + a2 t + a3 t2

• Verwenden Sie eine Exponentialapproximation 2. Ordnungy = a1 + a2 e-t + a3 te-t

Plotten Sie die Messwerte und die Approximationen in einDiagramm und beschriften Sie die Achsen und Kurven. Verwenden Sie zur Approximation t = [0:.01:2.5]

Page 127: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

127

Universität RostockFB EIT/NTIE

Übungsaufgaben I/O - Funktionen

Übung 91. Erstellen einer ASCII-Text-Datei mit einem Text-Editor,

bestehend aus 3 Spalten und 4 Zeilen1.2 5.6 37.5+4j0.34 -2.3 2-j22 -34.8 500-89 -10+j 67.9

Laden der Textdatei mit load und Anzeige der Matlab-Variableload -ascii

Page 128: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

128

Universität RostockFB EIT/NTIE

Übungsaufgaben Symbolics

Übung 101. Symbolische Bestimmung des Taylor-Polynoms 3. Ordnung

der Funktion g(x) = sin(5x - 2)

2. Symbolische Lösung der DGL y‘ = xy^2

Page 129: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

129

Universität RostockFB EIT/NTIE

Übungsaufgaben Programmierung

Übung 111. 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.

Page 130: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

130

Universität RostockFB EIT/NTIE

Übungsaufgaben Simulink

Übung 121. DGL einer gedämpften mechanischen Schwingung des

Systems Feder – Stahlplatte unter Berücksichtigung der Newton‘schen Reibungmx‘‘(t) + bx‘(t)^2 + cx(t) = 0 für x‘(t)>0mx‘‘(t) - bx‘(t)^2 + cx(t) = 0 für x‘(t)<0m = 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)

Page 131: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

131

Universität RostockFB EIT/NTIE

Übungsaufgaben Signale und Systeme

Übung 131. Es sind die komplexen Koeffizienten der Fourier-Reihe

folgender Signale zu berechnen und darzustellen.Es ist eine M-Function zur Berechnung der Fourier-Koeffzu entwickeln.Wie groß ist der Klirrfaktor?Signale:X1 (t) = sin(2*pi*f0 t)X2 (t) = arctan(X1 (t) )X3 (t) = abs(X1 (t) )

Page 132: Matlab Lehrgang08 09 Skript[1]

Dr.-Ing. Th. Buch: Einführung MATLAB/Simulink

132

Universität RostockFB EIT/NTIE

Übungsaufgaben Signale und Systeme

Übung 141. 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

U1 U2

Rg

R L C