MATLAB Grundlagen - EAL Lehrstuhl für Elektrische

Transcription

MATLAB Grundlagen - EAL Lehrstuhl für Elektrische
MATLAB Grundlagen
MATLAB
Grundlagen
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
MATLAB Grundlagen
Was ist MATLAB?
• Softwarepaket zur numerischen Mathematik
• Speziell für Vektoren & Matrizen: MATrix LABoratory
• Basismodul für allgemeine Mathematik, Ein/Ausgabe,
Programmablaufsteuerung
• Erweiterungsmodule als sog. Toolboxen
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
1
MATLAB Grundlagen
Was ist Simulink?
• Graphische Oberfläche zur Modellierung von physikalischen Systemen mittels Signalflußgraphen
• Ergänzungspaket zu MATLAB (Toolbox)
• Simulink–Erweiterung: Blocksets (SimPowerSystems)
Sine Wave
−1
Clock
Product1
80
Gain
Product3
eu
Math
Function
Product2
−1
Mux
gedaempfte
Sinusschwingung
Gain1
Constant
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
2
MATLAB Grundlagen
Was ist Stateflow?
• Grafische Erweiterung zu Simulink
• Modellierung von Zustandsautomaten
• Vollständige Integration in Simulink und Real-TimeWorkshop
schaltung/Chart
1
Gang
G1/
entry:gang=1;
G3/
entry:gang=3;
H03
H01
N21
H12
N10
G2/
entry:gang=2;
N30
Leerlauf/
H05
N20
H02
G5/
entry:gang=5;
N50
H04
N40
G4/
entry:gang=4;
Printed 10−Oct−2004 16:41:01
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
3
MATLAB Grundlagen
Toolboxen I
MATLAB Products
Design Automation Products
MATLAB
MATLAB Compiler &
C/C++ Math Library
MATLAB C/C++ Graphics Library
Database Toolbox
Data Acquisition Toolbox
Excel Link
MATLAB Report Generator
MATLAB Runtime Server
MATLAB Web Server
MatrixVB
Simulink
Embedded Target Infineon C166
Embedded Target Motorola HC12
Embedded Target Motorola MPC555
Embedded Target TI C2000(TM) DSP
Embedded Target TI C6000(TM) DSP
Real-Time Windows TargetReal-Time
Workshop
Real-Time Workshop Embedded Coder
SimDriveline
SimMechanics
SimPowerSystems
Simulink Accelerator
Simulink Control Design
Simulink Report Generator
Simulink Response Optimization
Simulink Verification and Validation
Stateflow und Stateflow Coder
xPC Target
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
4
MATLAB Grundlagen
Toolboxen II
Application Toolboxes
Signal & Image Processing
Signal Processing
Image Processing
Wavelet
Higher-Order Spectral Analysis
Quantized Filtering
Control Design
Control System
Fuzzy Logic
Robust Control
Nonlinear Control Design Blockset
System Identification
µ-Analysis and Synthesis
LMI Control
Model Predictive Control
QFT Control Design
General
Optimization
Statistics
Neural Network
Symbolic/Extended Symbolic Math
Partial Differential Equation
Financial
Financial Derivatives
Financial Time Series
GARCH
Mapping
Spline
Datafeed
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
5
MATLAB Grundlagen
Inhalt der Vorlesung
MATLAB
1.
2.
3.
4.
Grundlagen
Eingabe und Ausgabe
Regelungstechnische Funktionen: Control System TB
Signalverarbeitung: Signal Processing TB
Simulink
5.
6.
7.
8.
9.
Grundlagen
Lineare und nichtlineare Systeme
Abtastsysteme
Regelkreise
Stateflow
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
6
MATLAB Grundlagen
Command Desktop
Integrierte Entwicklungsumgebung:
• Command Window
• Editor
• Command History
• Workspace Browser
• Profiler
• Current Directory Browser
• Shortcut-Leiste
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
7
MATLAB Grundlagen
Online–Hilfe
• Zu allen Befehlen existiert eine Online–Hilfe
• Aufruf der Hilfe zu einem Befehl:
• Eigener Hilfe-Browser:
help [bef ehl]
helpwin [bef ehl]
doc [bef ehl]
• Suche nach Ausdruck suchstring:
lookfor suchstring
• Handbücher als PDF-Dateien vom Helpdesk aus
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
8
MATLAB Grundlagen
Variablen
• Namen:
– Maximal 63 Zeichen
– Buchstaben, Unterstrich “ “ und Zahlen
– Erstes Zeichen muss Buchstabe sein
– Unterscheidung von Groß- und Kleinschreibung
• Zuweisung von Werten an Variable:
variable 1 = 25
• Standardergebnisvariable ans
• Variablen global im Workspace definiert
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
9
MATLAB Grundlagen
Variablen-Typen
• Variablen-Typen:
logical
char
single
double
intX
uintX
struct
cell
Logische Werte 0 oder 1
Character (Buchstaben, Zeichen)
Fließkomma 32 Bit
Fließkomma 64 Bit
Festkomma X = 8, 16, 32
Festkomma ohne Vorzeichen X = 8, 16, 32
Zusammenfassung von Daten
Programmierung großer Systeme
• double und char am meisten verwendet
• Speicherplatz über full und sparse einstellbar
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
10
MATLAB Grundlagen
Ausgeben, Grundrechenarten und Konstanten
• Komma oder Leerzeichen nach der Operation lassen
die Ausgabe zu, der Strichpunkt unterdrückt sie
• Rechnung:
• Konstanten:
+ Addition
* Multiplikation
^ Potenzieren
Kreiszahl Pi
Fließkomma–Genauigkeit
Unendlich
Not–a–Number
pi
eps
inf
NaN
• Komplexe Zahlen:
- Subtraktion
/ Division
i, j
√
Imaginäre Einheit −1
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
11
MATLAB Grundlagen
Vektoren und Matrizen
• Vektoren: Trennung der Elemente durch Komma oder
Leerzeichen:
vektor = [ 1 2 3 ]
• Matrizen: Trennung der Zeilen durch Strichpunkt:
matrix = [ 1 2 3 ; 5 6 7 ]
• Erstes Element hat Index 1
• Doppelpunkt für Zeile/Spalte:
• Zusammensetzen:
• Letztes Element:
zeile 1 = matrix(1,:)
matrix = [ vektor ; 5 6 7 ]
matrix(:,end)
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
12
MATLAB Grundlagen
Spezielle Vektoren und Matrizen
• Elemente mit gleicher Schrittweite:
fort = (1:2:100)
• Bestimmte Anzahl anzahl von Elementen innerhalb eines Intervalls mit Grenzen start und ziel:
Linear:
linspace(start,ziel,anzahl)
Logarithmisch:
logspace(start,ziel,anzahl)
• Spezielle Matrizen(m Zeilen, n Spalten):
Einheitsmatrix:
eye(m)
Einsermatrix:
ones(m,n)
Nullmatrix:
zeros(m,n)
Zufallswertmatrix:
rand(m,n)
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
13
MATLAB Grundlagen
Mathematische Funktionen
• Viele mathematische & trigonometrische Funktionen
sqrt(x)
exp(x)
log(x)
log10(x)
Quadratwurzel
Exponentialfunktion
Natürlicher Logarithmus
Zehner–Logarithmus
rem(x, y)
round(x)
ceil (x)
floor(x)
Rest nach Division x/y
Runden
Rundet nach oben
Runden nach unten
abs(x)
sign(x)
real(x)
imag(x)
angle(x)
Betrag
Signum (Vorzeichen)
Realteil
Imaginärteil
Phase einer komplexen Zahl
sum(v)
prod(v)
min(v)
max(v)
mean(v)
Summe der Vektorelemente
Produkt der Vektorelemente
kleinstes Vektorelement
größtes Vektorelement
Arithmetisches Mittel
sin(x)
cos(x)
tan(x)
Sinus
Cosinus
Tangens
atan(x)
Arcus–Tangens ±90◦
atan2(x,y) Arcus–Tangens ±180◦
sinc(x)
Spaltfunktion sin(πx)/(πx)
• Online–Hilfe mit help elfun und help datafun
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
14
MATLAB Grundlagen
Rechnen mit Vektoren und Matrizen
• Viele Operationen können auf Vektoren und Matrizen
angewendet werden
• Elementeweises Ausführen mit dem Punktoperator “.“
• Spezielle Vektoren- und Matrixfunktionen:
.’
Transposition
det(x)
Determinante
’
Transposition kk
rank(x)
Rang
inv(x)
Inversion
eig(x)
Eigenwerte
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
15
MATLAB Grundlagen
Strukturen und Cell Arrays
• Strukturen zum Verwalten von Daten verschiedenen
Typs: Skalare, Matrizen, Strings, etc.
• Felder einer Struktur enthalten einen Wert:
str = struct (’name 1’,wert 1,’name 2’,wert 2,...)
• Zugriff auf Werte mit dem “.“–Befehl:
str.name
• Cell Arrays: Multidimensionale Strukturen
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
16
MATLAB Grundlagen
Verwalten von Variablen
• Dimension:
– eines Vektors:
length(vektor)
– einer Matrix:
size(matrix)
• Anzeigen:
– who [variable]:
Nur Namen
– whos [variable]:
Namen, Größe, Bytes und Klasse
• Löschen:
– einer Variablen:
clear variable
– aller Variablen:
clear, clear all
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
17
MATLAB Grundlagen
Vergleichsoperatoren
• Vergleichsoperatoren:
==, ~=, <, <=, >, >=,
• Test auf Existenz einer Variable x:
exist(’x’)
• Vergleichsoperatoren können auf Skalare, Vektoren
und Matrizen angewendet werden.
• Werte: Null (logisch falsch) bei Nichterfüllung der
Operation, andernfalls Eins (logisch wahr)
• Auswerte–Reihenfolge:
1.
2.
Mathematische Ausdrücke
Vergleichsoperatoren von links nach rechts
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
18
MATLAB Grundlagen
Logische Operatoren
• Logische Operatoren: ~ NOT, & AND, | OR, xor XOR
• Logische Operatoren können auf Skalare, Vektoren und
Matrizen angewendet werden.
• Werte: Null ist logisch falsch, alle anderen Werte sind
logisch wahr. Ergebnisse immer 0 oder 1.
• Auswerte–Reihenfolge:
1.
2.
3.
Mathematische Ausdrücke
NOT
UND und ODER von links nach rechts
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
19
MATLAB Grundlagen
Weitere Operatoren und Logical Indexing
• “Shortcut“-Operatoren:
&& (AND) und || (OR)
Abbruch bei eindeutigem Ergebnis:
(1 || ausdruck)
ausdruck wird nicht ausgewertet
• Ein Elemente wahr:
any(vektor)
• Jedes Elemente wahr:
• Indizes wahrer Elemente:
• Logical Indexing:
all(vektor)
find(vektor)
a(a<0) = 1
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
20
MATLAB Grundlagen
Ablaufsteuerung: Verzweigungen
IF–Verzweigung
SWITCH–Verzweigung
if ausdruck
bef ehle
elseif ausdruck
bef ehle
else
bef ehle
end
switch ausdruck
case ausdruck
bef ehle
case ausdruck ausdruck ...
bef ehle
otherwise
bef ehle
end
• Trennen der Ausdrücke und Befehle sinnvoll (“,“, “;“)
• Verschachtelungen von if und switch möglich
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
21
MATLAB Grundlagen
Ablaufsteuerung: Schleifen
• FOR:
for variable = ausdruck
for n = 1:1:10 ,
bef ehle
f = n^2,
end
end
• WHILE: while ausdruck
while w > 1 ,
bef ehle
w = w + 1 ;
end
• Schleife:
end
– Überspringen:
continue
– Abbrechen:
break
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
22
MATLAB Grundlagen
MATLAB–Skripts
• M–File:
Befehle in ASCII–Datei mit Endung .m
• Kommentar: %
Kommentarzeile
%{ ... %} Mehrzeiliger Kommentar
%%
Kommentar als Cell-Divider
• Umbruch innerhalb eines Befehls:
...
• Anzeigen der Befehle und Kommentare:
• Seitenweise Ausgabe:
• Anzeigen der Datei:
echo on
more on
type datei
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
23
MATLAB Grundlagen
MATLAB–Funktionen I
• Sonderform der M–Files: – Übergabe von Parametern
– Rückgabe von Werten
– Lokale Variablen
• Definition:
function [var] = functionname (par)
• Interne Hilfsgrößen:
nargin, nargout
• Fehlerabbruch mit Hilfe:
error(’info’)
• Geschachtelte Funktionen möglich
• Hilfetext in Funktionen:
% Hilfetext
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
24
MATLAB Grundlagen
MATLAB–Funktionen II
• Lokale Variablen innerhalb der Funktion werden nach
jedem Aufruf der Funktion wieder gelöscht.
• Statische Variable:
persistent var
Bleiben nach Funktionsaufruf mit ihrem Wert erhalten.
• Globale Variablen:
global var
Müssen in der Funktion und Workspace als global definiert werden und sind von überall aus sichtbar!
Löschen mit:
clear global
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
25
MATLAB Grundlagen
MATLAB–Funktionen III
• Function Handle:
Informationen:
Aufruf:
f handle = @funktion
functions(f handle)
[y1, ..., ym] = feval (f handle, x1, ..., xn)
• Inline Functions:
• Pseudo-Code:
f = inline (f unktion,var)
pcode (f unktion)
• Entfernen aller Funktionen:
clear functions
Lehrstuhl für Elektrische Antriebssysteme und Leistungseelektronik
Simulation mit Matlab/Simulink
26