Sie sind auf Seite 1von 30

MATLAB

Warm-Up
(EWU-1)
MIRA MAIWÖGER, MSC.

© FH Technikum Wien AUGUST 2021 1


Kursinhalt
1. Grundlagen und Einführung: Variablen, elementare Funktionen,
Arrays

2. Skripte, Funktionen, Programmsteuerung

3. Visualisierung von Daten, Grafiken mit MATLAB

4. Datenanalyse, Curve Fitting, toolboxes…

© FH Technikum Wien SOMMERSEMESTER 2021 2


Einführung
MATLAB – Matrix Laboratory

• Softwarepaket für numerische Berechnungen und Datenvisualisierung

• Entwicklung in den 1970er Jahren (Stanford University, Univ. New Mexico)

• Matrizenbasierende numerische Software

© FH Technikum Wien AUGUST 2021 3


Benutzung:

• Anweisungen direkt im Commandfenster

• als Programmiersprache: mehrere Anweisungen werden als .m – file (ASCII


files) abgespeichert und vom MATLAB interpreter als Programm ausgeführt

• toolboxes: Bibliotheken von m-files zur Erweiterung. (symbolic math toolbox,


signal processing toolbox, curve fitting toolbox…)

© FH Technikum Wien AUGUST 2021 4


Hilfe!
help Funktionsname/Anweisung: Kurzbeschreibung
doc Funktionsname/Anweisung: Ausführliche Hilfeseite inkl. Beispielen
docsearch Suchbegriff: Suche auf MATLAB Hilfeseiten

Außerdem:
https://de.mathworks.com/
https://stackoverflow.com/

© FH Technikum Wien AUGUST 2021 5


Fenster
Command Window Arbeitsbereich, Eingabe von Anweisungen, Ausgabe von
Ergebnissen

Workspace Verwendete Variablen

Command History ausgeführte Anweisungen

Current Directory aktuelles Verzeichnis

© FH Technikum Wien AUGUST 2021 6


Anweisungen
Eingabe nach >>, bestätigen mit ENTER
, trennt mehrere Anweisungen in einer Zeile
; unterdrückt Ausgabe
… für Anweisungen über mehrere Zeilen, Zeilenumbruch
% für Kommentare
CRTL+C unterbricht laufende Berechnung/Programm
Beenden von MATLAB durch exit oder quit

© FH Technikum Wien AUGUST 2021 7


Variablen I
Müssen nicht deklariert werden, sondern werden bei der ersten Verwendung
automatisch mit richtigem Typ und Dimension angelegt
Häufige Typen:
•64 bit double (default), zB: 3.76, sqrt(2), …
•16 bit char, zB: ‘Zeit’, ‘abc’, …
MATLAB ist matrizenbasiert - Skalare: 1x1 Matrizen
Erzeugung von Variablen durch Zuordnung eines Wertes zu einem Namen
myNumber1=6.28, myString1=‘almost 2 pi’

© FH Technikum Wien AUGUST 2021 8


Variablen II
Namen: who listet Variablen auf
beginnend mit Buchstabe whos gibt Dimensionen, Typ und Größe aus
nur Buchstaben, Ziffern und _ clear löscht alle Variablen aus Workspace
case sensitive clear –except Var
clear Var löscht Var aus Workspace
Unterstützte Formate: complex, disp(Var) gibt Var im Command Window aus
symbolic, logical, 16-bit und 8-bit
clc löscht Command Window
integers
format legt Ausgabeformat fest (default short)
© FH Technikum Wien AUGUST 2021 9
Spezielle Variablen
ans answer, letzte Ausgabe e ersetzt x10^ bei Eingabe von
Zehnerpotenzen
pi π=3.145…
6.023*10^23=6.023e23,
Inf ∞, infinity 1.055*10^-34=1.055e-34
NaN not a number
eps Maschinengenauigkeit Eulersche Zahl e durch exp(1)
i, j imaginäre Einheit erzeugbar
 i, j als Indizes in loops vermeiden,
besser ii, jj…

© FH Technikum Wien AUGUST 2021 10


Rechenoperationen
• Addition + • Elementare Funktionen (help elfun)
• Subtraktion - y=sqrt(x) Wurzelfunktion (x muss zuvor als
• Multiplikation * numerische Variable definiert werden)

• Division / cos(pi), sin(pi/2)… trigonometrische Funktionen


(Argument im Bogenmaß - 2π=360°)
• Exponenten ^
• Komplexe Zahlen: z1=5+4*j, z2=3-2i
 wie gewohnt bezeichnet und ◦ conj(z), z’ konjugiert komplexe Zahl
verwendet ◦ abs(z) Absolutbetrag, angle(z) Phasenwinkel

© FH Technikum Wien AUGUST 2021 11


Übungsblock 1
ANGABEN @ MOODLE

© FH Technikum Wien AUGUST 2021 12


1. Löschen Sie alle Variablen aus dem r zu erhalten (Tipp: help format),
Workspace geben Sie r erneut aus
2. Definieren Sie folgende Variablen: 8. Setzen Sie die Darstellung wieder auf
a=3.1; b=3*pi; c=sqrt(2); das Standardformat zurück
3. Definieren Sie d=(a+b)/c; 9. Berechnen Sie
4. Berechnen Sie cos(d). a) Den natürlichen Logarithmus
von 3.6
5. Verwenden Sie who oder whos um b) Die Wurzel von 1+3i und den
eine Liste aller Variablen zu erhalten Absolutbetrag von 3-4i.
6. Definieren Sie eine Variable r mit dem
10. Finden Sie heraus, wie man Real- und
Wert 0.7865
Imaginärteil einer komplexen Zahl
7. Verwenden Sie ein geeignetes Format berechnet. Berechnen Sie dann Real-
um eine Bruchdarstellung der Variable und Imaginärteil von z=(1+3i)/(5-2i)
© FH Technikum Wien AUGUST 2021 13
Ordnerstruktur I
• Ordner können über die Benutzeroberfläche oder mkdir erstellt werden
• Die Anweisung pwd gibt das aktuelle Verzeichnis aus, der Inhalt wird mit dir
aufgelistet
• Navigation mit der Anweisung cd
Erstellen Sie einen Ordner Warmup mit Unterordner Tag1 im aktuellen
Verzeichnis. Navigieren Sie in den Unterordner Tag1
• Daten aus dem Workspace werden mit der Anweisung save als .mat file gespeichert
 Speichern Sie die Variablen aus dem Workspace als Uebung1 ab.
• Save Uebung1_short a b speichert nur die Variablen a und b ab

© FH Technikum Wien AUGUST 2021 14


Ordnerstruktur II
• load filename lädt die Daten in den Workspace
• Files werden nur gefunden, wenn
• Sie sich bereits im richtigen Verzeichnis befinden
• Das Verzeichnis in dem sich das file befindet im Matlab Suchpfad enthalten ist
• Ansonsten muss nach load der gesamte Suchpfad angegeben werden.
• path gibt den Suchpfad aus
• addpath fügt ein Verzeichnis dem Suchpfad hinzu

© FH Technikum Wien AUGUST 2021 15


Matrizen und Arrays
2 Arten von Arrays:

• Matrix bestehend aus Zahlen (double, complex, logical)

• Cell array aus Objekten (für komplexere Datenstrukturen)

Zeilenvektoren: row=[1 2 6 8 9]; oder row=[1, 2, 6, 8, 9];

Werte durch Komma oder Leerzeichen getrennt, zwischen eckigen Klammern

Spaltenvektoren: col=[1;3;7;6;4;] - durch Semikolon getrennt

© FH Technikum Wien AUGUST 2021 16


Matrizen und Arrays
Anweisungen size und length geben Dimension bzw Länge (Größe der längsten
Dimension) eines Vektors aus

© FH Technikum Wien AUGUST 2021 17


Matrizen - Erzeugung
• Elementeweise: A=[1 2; 3 4];
1 2
• Durch Verknüpfung von Vektoren: 𝐴=
3 4
• a=[1 2]; b=[3 4]; (Zeilenvekoren) A=[a; b];

• oder a=[1;3]; b=[2;4]; (Spaltenvektoren) A=[a b];

• Operator : x=0:0.2:5; y=10:-1:1; -> Zeilenvektoren (wenn increment nicht definiert


ist by default 1; zB z=1:10=[1 2 … 9 10];)

• linspace(x1,x2,n), logspace(x1,x2,n)
© FH Technikum Wien AUGUST 2021 18
Matrizen - Erzeugung
• [] leere Matrix • rand(n), rand (n,m): Matrix mit
Zufallswerten zwischen 0 und 1
• eye(n), eye(n,m): Einheitsmatrix quadratisch
bzw (n x m) Dimensionen • magic(n): Magisches Viereck für n>2;
(Gleiche Ziffernsumme in Reihen,Spalten
• zeros(n), zeros(n,m): Matrix mit Einträgen 0
und Diagonalen)
• ones(n), ones(n,m): Matrix mit Einträgen 1
• nan(n), nan(n,m): Matrix mit Einträgen
• diag([v1 v2 v3 … ]): Matrix mit v1 v2 v3 … NaN (für nicht initialisierte Variablen)
auf der Hauptdiagonalen

© FH Technikum Wien AUGUST 2021 19


Übungsblock 2
ANGABEN @ MOODLE

© FH Technikum Wien AUGUST 2021 20


Erzeugen Sie die folgenden Variablen 6. Eine (7 x 7) Matrix B, mit den Einträgen
[1 2 3 4 5 6 7] in der Hauptdiagonale.
1. Zeilenvektor a mit den Einträgen 3.16,
5, 7, 19. 7. Eine (10 x 10) Matrix C mit den
Einträgen 1,2…,100, fortlaufend über
2. Spaltenvektor b mit den Einträgen 8,
die Spalten der Matrix. (Verwenden Sie
13.6, 7.8, 5.
reshape)
3. Vektor c mit Einträgen -5, -4.8, …, 4.8, 5.
Speichern Sie die Variablen a b c d A B C
4. Vektor d mit Einrägen 100,100.1, …, unter Warmup/Tag1/Uebung2 ab.
100.9, 101.

5. Eine (8 x 8) Matrix A, in der jeder


Eintrag 3 ist.

© FH Technikum Wien AUGUST 2021 21


Elementweise Matrixoperationen
• Elementare Funktionen wirken elementweise auf Matrizen (im Zweifelsfall doc oder
help befragen)
zB x=[1 4 9]; y=sqrt(x); y=[1 2 3]

• Addition/Subtraktion bzw Multiplikation/Division von Konstanten


zB y=2*x; y=[2 8 18], oder y=x-1; y=[0 3 8]

• A.*B, A./B elementeweise Multiplikation/Division von Matrizen mit gleicher


Dimension

• A.^k Matrix elementeweise potenziert

© FH Technikum Wien AUGUST 2021 22


Matrixoperationen
• A’ transponierte und komplex • det(A) Determinante
konjugierte Matrix
• inv(A) Inverse (falls existent)
• A.’ transponierte Matrix
• eig(A) Eigenwerte
• A+B,A-B: Addition/Subtraktion (gleiche
• A\b (kürzeste) Lösung des
Dimension!)
Gleichungssystems Ax=b.
• A*B, Matrixmultiplikation

• A^k - kte Potenz einer quadratischen


Matrix
© FH Technikum Wien AUGUST 2021 23
Indizierung I
Index in Arrays läuft von 1 bis n!

• A(1,1)=1, A(2,1)=3 usw 1 2


𝐴=
3 4
• A(:) zeigt beliebigen Array als Spaltenvektor an

(Arrays intern als eindimensionaler Vektor gespeichert)

Indexumrechnung mit sub2ind, ind2sub

•: alle Elemente in dieser Dimension A(:,1)=[1;3] oder A(end,:)=[3 4]

© FH Technikum Wien AUGUST 2021 24


Indizierung II
• b=[5 6 7 8 9] b(2)=6

• b([1 3 5]) (=[5 7 9]) Auswahl mehrerer Elemente

• end letzter Index, b(end)=9

© FH Technikum Wien AUGUST 2021 25


Übungsblock 3
ANGABEN @ MOODLE

© FH Technikum Wien AUGUST 2021 26


1. Erzeugen Sie einen Vektor x, der die Einträge a) Einen Vektor xa, der die ersten 4
0,5,…45,50 enthält Elemente von x enthält

2. Wie lang ist dieser Vektor? Definieren Sie b) Einen Vektor xb, der das 1., 3. und 8.
eine Variable xd, die die Länge des Vektors Element von x enthält
ist. c) Einen Vektor xc, der jedes 2. Element
von x enthält.
3. Berechnen Sie den natürlichen Logarithmus
von x, y=ln x. 6. Berechnen Sie p=3x^4+2x-6.

4. Geben Sie den ersten Eintrag des Vektors y Speichern Sie alle Variablen unter
im Commandfenster aus. Warmup/Tag1/Uebung3 ab.

5. Erzeugen Sie folgende Vektoren aus dem


Vektor x mit möglichst kurzen Anweisungen:

© FH Technikum Wien AUGUST 2021 27


Indizierung III
MATLAB Funktionen, die helfen, Ersetzt alle Einträge 3 in vec mit pi…
gewünschte Werte zu finden >>ind=find(vec>2 & vec<5);
>> vec=[ 3 4 5 1 2];
• Vergleichsoperatoren: ==, ~=, <, <=, >,
• Minimum/Maximum des Vektors und >=
dazugehöriger Index: min / max
• Logical Indexing ist, wenn möglich
>> [minVal,minInd]=min(vec); schneller als find
• Indizes spezifischer Werte finden: find >> vec(vec==3)=pi;
>>ind=find(vec==3); vec(ind)=pi; >> vec(vec<2)=0;

© FH Technikum Wien AUGUST 2021 28


Übungsblock 4
ANGABEN @ MOODLE

© FH Technikum Wien AUGUST 2021 29


1. Erzeugen Sie eine (3x3) Zufallsmatrix A mit Werten zwischen 0 und 10

2. Erzeugen Sie ein Array B aus der Matrix A, das alle Werte <5 enthält

3. Welche Dimension hat B?

4. Erzeugen Sie eine Matrix C=A. Setzen Sie alle Werte von C, die kleiner 5 sind = 0.

5. Erzeugen Sie einen String s=‘MATLAB’

6. Ersetzen Sie alle ‘A’ durch ‘U’ durch möglichst kompakte Anweisung.

7. Welche Dimension hat s? Was ist s(5)?

© FH Technikum Wien AUGUST 2021 30

Das könnte Ihnen auch gefallen