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