matlab – kurzskript

Werbung
MATLAB – KURZSKRIPT
FHD Fachbereich MN
1. Allgemeines, Entwicklungsumgebung, Variablenkonzept
MatLab (= Matrix Laboratory) ist eine Sprache zur direkten oder programmierten Bearbeitung mathematischer
Probleme.
Matlab ist Matrix-orientiert und ermöglicht deshalb unter anderem, Probleme der Linearen Algebra in kompakter
Form zu formulieren und zu lösen.
Ähnliche Programme:
O-Matrix (www.omatrix.com)
Octave (www.octave.org)
Was kann Matlab?
Taschenrechnerfunktion
Programme und Funktionen wie in jeder Programmiersprache
Matlab ist beliebig erweiterbar. Es gibt mehrere Internetseiten, wo Programme zu bestimmten Problemlösungen
zum Herunterladen bereit stehen. Die Einbindung ist denkbar einfach.
Matlab besteht aus einem Grundpaket und verschiedenen sogenannten Toolboxen für die verschiedensten
Anwendungsgebiete. Bei uns installiert sind die Symbolic Math-, Spline- sowie Partial-Differential-EquationToolbox.
Umgebung
Command Window (Eingabefenster)
Workspace (alle verwendeten Variablen werden angezeigt mit Größenangaben)
Command History
Current Directory
Path Browser (wichtig für Programmaufruf) (Datei -> Set Path)
Arbeiten mit dem Command Window
Matlab-Programme bestehen aus einer Folge von Anweisungen. Diese können z.B. interaktiv eingegeben werden.
Matlab stellt dazu nach dem Aufruf ein spezielles Fenster, das sogenannte Command Window zur Verfügung, in
das man über die Tastatur Anweisungen eingibt. (=Taschenrechnerfunktion)
Matlab liefert in der Regel zu jeder Eingabe eine Antwort, was man durch ein Semikolon am Ende der Eingabe
verhindern kann. Sobald Matlab wieder bereit ist, eine Eingabe anzunehmen, zeigt es dies durch Ausgabe eines
speziellen Zeichens » an (Eingabeprompt).
Variable ans (vordefiniert)
smart recall mit ↑ -Taste
Befehl clear löscht alle Variablen
Befehl clc löscht Command Window
Befehl help # liefert Informationen zum Befehl #
Befehl format (compact, loose, long ...) bestimmt das Ausgabeformat (intern double-precision) (Reelle
Werte werden in der Regel gerundet dargestellt! Dies gilt unabhängig vom Ausgabeformat und trifft
insbesondere auch auf die interne Darstellung der Werte zu.)
Befehl whos x zeigt Informationen über die Variable x an
Üblicherweise gibt man jede Anweisung in einer eigenen Eingabezeile ein. Wenn dies nicht möglich ist, zeigt man
durch drei Punkte am Zeilenende an, daß die Anweisung in der nächsten Zeile fortgesetzt wird.
-
Neben dem Matlab Command Window erscheint in der Benutzeroberfläche standardmäßig ein Fenster Current
Directory (zeigt Dateien im aktuellen Verzeichnis an) / Workspace (zeigt alle aktuell verwendeten Variablen an)
sowie ein Fenster Command History (zeigt alle zuletzt verwendeten Befehle an, die auch per Drag & Drop ins
Command Window verschoben oder durch Doppelklick ausgeführt werden können).
Variablendefinition
19 signifikante Stellen
Variable muss mit einem Buchstaben beginnen (Klein/Großbuchstaben werden unterschieden)
Zugelassen sind Buchstaben A-Z, Zahlen 0,..,9 sowie der Unterstrich (_), keine Umlaute (ü, ö,...) und
Sonderzeichen sowie Schlüsselworte (Funktionsnamen, vordefinierte Variablen).
vordefinierte Variablen, z. B. pi, eps
Daten werden in Matlab in Form von Zahlen oder Zeichenketten verarbeitet. Variablentypen double und
char (automatische Zuweisung)
-1-
MATLAB – KURZSKRIPT
Operatoren
Operator
+
*
/
^
( )
Funktion
Addition
Subtraktion
Multiplikation
Division
Potenz
Klammer
FHD Fachbereich MN
Priorität
niedrig
niedrig
mittel
mittel
hoch
sehr hoch
Zusätzliche Matrix-Operatoren
.* , ./ , .\ , .^ elementweise Operatoren
\
Matrix-links-Division
Arithm. Vergleichsausdrücke
Relationsoperatoren:
< , <= kleiner, kleiner gleich
> , >= größer, größer gleich
== , ~=
gleich, ungleich
Verknüpfung logischer Ausdrücke:
|
logisches ODER
&
logisches UND
~
logische Negation
Zeichenketten-Konstanten
Zeichenketten-Konstanten werden durch Apostrophstriche begrenzt
Beispiel: a = 'Name'
Den Apostrophstrich als Teil einer Zeichenkette erhält man durch zwei Apostrophzeichen
Beispiel: b = ' it''s'
Funktionen
Matlab stellt viele mathematische Funktionen bereit. Unterstützung bietet der Matlab Help Browser. Unter
Contents – MATLAB – Functions – By Category – Mathematics können Sie sich einen Überblick verschaffen.
Eine alphabetische Liste mit allen Funktionen ist ebenfalls vorhanden Contents – MATLAB – Functions –
Alphabetical List.
Elementare Funtionen (elementary math)
Trigonometrische Funktionen
(sin, asin, sinh, cos, acos, cosh, tan, tanh, atan)
Exponentialfunktionen
exp
Exponentialfunktion ex
pow2
Exponentialfunktion 2x
log
natürlicher Logarithmus
log2
Logarithmus zur Basis 2
sonstige Funktionen
abs
Betrag
gcd
größter gemeinsamer Teiler
Funktionen für Polynome (polynomials)
polyfit
polyval
Sucht passende Polynomkoeffizienten
Berechnet Werte eines Polynoms
Der Programmcode zum Befehl * kann in der entsprechenden Datei (*.m) eingesehen werden.
Erklärungen ausführlich in der Matlab-Hilfe (Help Browser) - nur in Englisch
oder mit help *
-2-
MATLAB – KURZSKRIPT
FHD Fachbereich MN
2. Vektoren und Matrizen
Matlab speichert Daten in der Regel als "array", d.h. als Matrix. Damit sind Vektoren als einzeilige Matrix und
Skalare als einkomponentige Vektoren (1x1-Matrix) lediglich Spezialfälle. Dieses Konzept hat für den Benutzer den
Vorteil der einfacheren Handhabung von mehrkomponentigen Daten, ohne daß dadurch der Umgang mit skalaren
Größen erschwert wird.
Im Fenster Workspace kann man die Dimension einer Variable überprüfen (oder mit dem Befehl whos
Variablenname).
2.1 Darstellung
x = 1 hat also eine Zeile und eine Spalte.
Index beginnt immer bei 1!
Zeilenvektoren
v = [1,2,3,4] oder v = [1 2 3 4] siehe whos
Spaltenvektoren
v = [1;2;3;4] Semikolon bedeutet „neue Zeile“
Transponieren
v = v’ (Apostroph auf #-Taste)
Länge eines Vektors
length(v)
colon operator (Spaltenoperator) siehe help colon
v = 1:n füllt Vektor v mit Zahlen von 1 bis n mit Schrittweite 1
v = 1:x:n füllt Vektor v mit Zahlen von 1 bis n mit Schrittweite x
n x m-Matrix
A = [1,2,3;4,5,6] oder
A = [1 2 3;4,5,6]
vgl. Workspace
Teile einer Matrix ansprechen:
A(i,j) bezeichnet die i-te Zeile und die j-te Spalte
A(i,:) bezeichnet die gesamte i-te Zeile
A(:,j) bezeichnet die gesamte j-te Spalte
A(i,n:m) bezeichnet die Elemente der n-ten bis zur m-ten Spalte der i-ten Zeile
A(:) bezeichnet alle Elemente der Matrix A
Bsp.: A(:)= 1 setzt alle Elemente der Matrix A auf 1
z = A(:) übergibt an z alle Werte der Matrix A in einer einzelnen Spalte
Spezielle Matrizen
ones(n) ergibt eine nxn-Matrix aus lauter Einsen
ones(n,m) ergibt eine nxm-Matrix aus lauter Einsen
ones(size(A)) ergibt eine Matrix derselben Größe wie die Matrix A aus lauter Einsen
analog zeros(...) = lauter Nullen
eye(n) nxn-Einheitsmatrix
hilb(n) ergibt eine nxn-Hilbertmatrix
Größe einer Matrix
size(A) gibt 2-elementigen Vektor zurück, der die Zeilen- und Spaltenanzahl von A angibt
2.2 Rechnen mit Matrizen
Operatoren
+ Addition
- Subtraktion
* Matrixmultiplikation
/ Matrixdivision - also ist B/A dasselbe wie (A' \ B')'
wenn A und B quadratische Matrizen sind gilt B/A =B*A-1
-3-
MATLAB – KURZSKRIPT
FHD Fachbereich MN
\ linksseitige Matrixdivision
X = A\B ist die Lösung der Gleichung AX = B
A-1=A\E
wenn A und B quadratische Matrizen sind gilt A\B = A-1 *B
A^b b-fache Matrixmultiplikation
Punktoperator
.* ./ .\ .^ bezeichnen die elementweisen Operationen
Determinante
det(A) liefert Wert der Determinante der quadratischen Matrix A
Inverse
inv(A) = A-1
Eigenwerte, Eigenvektor
eig(A) liefert Vektor mit Eigenwerten der quadratischen Matrix A
Lösung eines linearen Gleichungssystems
Ein lineares Gleichungssystem M*x = r wird durch die drei folgenden Anweisungen formuliert und gelöst:
M = [3 2 1; 1 3 2; 1 2 3];
r = [1;1;1];
x = M \ r;
Matrix aus Vektoren zusammensetzen
Wenn x und y Spaltenvektoren derselben Länge sind, erhält man mit dem Befehl
A=[x,y] oder A=[x y]
eine Matrix mit 2 Spalten, die x und y sind.
Wenn x und y Zeilenvektoren derselben Länge sind, erhält man mit dem Befehl
A=[x;y]
eine Matrix mit 2 Zeilen, die x und y sind.
3. M-Files, Programmelemente
Für umfangreiche und öfter benutzte Befehlsfolgen ist eine interaktive Eingabe im allgemeinen nicht sinnvoll. Man
kann solche Befehlsfolgen in eine Datei schreiben und mit der Endung *.m speichern, sowie im Command Window
unter Angabe des Namens * aufrufen.
Matlab stellt einen Editor zur Verfügung, den M-File Editor, der über Start → Programme ... verfügbar ist. Man
kann auch in der Matlab-Umgebung über den Menü-Punkt
File→New→M-file
direkt ein neues m-File im Editor schreiben.
Ruft man im Matlab-Command Window den Dateinamen (ohne Endung .m) auf, prüft Matlab der Reihe nach, ob
dieser Name:
- zu einer Variablen,
- zu einer Standard Funktion (built in function),
- zu einem m-File im aktuellen Arbeitsverzeichnis,
- zu einem m-File in einem Verzeichnis des Matlab Suchpfades
gehört. Das erste Objekt, auf das dies zutrifft, wird genommen und von Matlab ausgeführt.
3.1 Aktuelles Arbeitsverzeichnis
Die Bedeutung des aktuellen Verzeichnisses wird in Matlab vor allem durch die Tatsache bestimmt, dass Matlab
dort nach m-Files sucht. Das momentane, aktuelle Verzeichnis kann man im Feld Current Directory in der
Benutzeroberfläche erkennen und abändern. Im darunterliegenden Fenster werden alle verfügbaren m-Files
angegeben.
Stellen Sie das aktuelle Verzeichnis auf Ihr Verzeichnis um, in dem Sie Ihre m-Files speichern.
Verwenden Sie dieses Verzeichnis häufig, empfiehlt es sich, es als Suchpfad in die Suchpfadliste von Matlab mit
aufzunehmen.
Dazu öffnen sie im Menü
File→Set Path ...
den Knopf Add Folder, wählen Ihr Verzeichnis aus und speichern diese Einstellung ab mit Save.
-4-
MATLAB – KURZSKRIPT
FHD Fachbereich MN
3.2 Skripte
Ein Skript-File (auch script m-file - kurz Skript) ist eine Aneinanderreihung von Matlab-Befehlen, die in den
Texteditor eingegeben und mit der Endung *.m abgespeichert werden.
Wird der Dateiname (ohne die Endung .m) im Command Window aufgerufen, so werden die Befehle nacheinander
ausgeführt, als ob man sie einzeln eingegeben hätte. (Man kann auch im M-file-Editor auf das Symbol
klicken.)
Bei seinem Aufruf stehen dem Skript alle im Workspace gespeicherten (globalen) Variablen zur Verfügung.
Umgekehrt sind alle Variablen, die im Skript vorkommen, nach der Ausführung auch im Workspace, also auch
global.
Schreibt man in die ersten Zeilen des Skripts *.m einen Kommentar mit %, erscheint dieser als Hilfe mit help *
(wie bei den schon in Matlab vorhandenen M-files).
3.3 Functions
m-Functions sind Erweiterungen des Matlab Funktionsvorrates. Sie haben meist die folgende Struktur:
function [out1,out2,...,outN]=Name(in1,in2,...,inM)
% Programmbeschreibung für online-Hilfe
ausführbare Anweisungen ...
in1 ... inM bezeichnen stellvertretend die M Übergabeparameter, die beim Funktionsaufruf in Klammern hinter
dem Programmnamen angegeben werden müssen.
Stimmt die Zahl der Parameter im Funktionsaufruf nicht mit der geforderten Zahl überein, erfolgt eine
Fehlermeldung.
out1 ... outN bezeichnen stellvertretend die N Rückgabewerte, die in den Anweisungen berechnet werden
müssen.
Wird nur ein Wert zurückgegeben, können die eckigen Klammern [ ]weggelassen werden. Soll kein Wert
zurückgegeben werden, kann auch das Gleichheitszeichen = weggelassen werden.
Beispiel 1: r2d.m
function d = r2d(x)
% r2d(x) rechnet einen Winkel x von Bogenmaß in Grad um
d=x*180/pi;
Aufruf z.B. mit
>> r2d(3) oder
>> z=r2d(3)
Beispiel 2: Funk1.m
function [y1,y2] = Funk1(a,x)
% Berechnet die Funktionswerte von f(x)=a*x^2
% und deren Ableitung
y1 = a.*x.^2;
y2 = 2.*a.*x;
Aufruf z.B. mit
>> [a b]=Funk1(2,1)
a =
2
b =
4
WICHTIG!
Alle in der Funktion definierten Variablen sind lokale Variablen! D.h., sie stehen nach Aufruf der Funktion im
Workspace nicht zur Verfügung.
Der Name einer Funktion muss mit dem Namen des M-files übereinstimmen!
-5-
MATLAB – KURZSKRIPT
FHD Fachbereich MN
ACHTUNG! Ist ein M-file mit dem gleichen Namen schon vorhanden, gibt es keine Fehlermeldung!
Um zu überprüfen, ob ein M-file mit dem gewünschten Namen * schon vorhanden ist, testen Sie mit dem Befehl
help * im Command Window. Ist der Name noch nicht vergeben, erscheint hier dann eine Fehlermeldung.
3.4 Ablaufstrukturen
MatLab stellt die üblichen Formen der Ablaufsteuerung eines Programms zur Verfügung.
Solange man nur mit skalaren Größen arbeitet, unterscheiden sich die in Matlab verfügbaren Sprachelemente zur
Ablaufsteuerung nicht von denen anderer Programmiersprachen.
Verzweigungen können mit
if, elseif, else und end
switch, case, otherwise und end
gebildet werden.
Schleifen können mit
For und end
while und end
gebildet werden.
Blöcke mit einer solchen Ablaufsteuerung nennt man auch Verbundanweisungen.
3.4.1 Bedingte Anweisungsblöcke und Verzweigungen
Ein bedingter Anweisungsblock hat in Matlab die Form:
if Bedingung
bedingter Anweisungsblock
end
Der Anweisungsblock wird nur dann ausgeführt, wenn die Bedingung wahr ist. Der Anweisungsblock kann beliebig
viele Anweisungen, auch Verbundanweisungen enthalten. Verbundanweisungen können also geschachtelt werden.
Geschweifte Klammern wie in C++ werden dabei nicht benötigt.
Bedingungen können als beliebiger skalarer logischer Ausdruck angegeben werden.
(Falls der Ausdruck keinen skalaren Wert liefert, berechnet Matlab automatisch nach vorgegebenen Regeln einen
skalaren Wert. Falls der Wert des Ausdruckes zwar skalar, aber verschieden von 0 (falsch) oder 1 (wahr) ist, ordnet
Matlab ihm einen logischen Wert nach bestimmten Regeln zu.)
Zwei alternativ auszuführende Anweisungsblöcke werden in Matlab mit Hilfe von else formuliert:
if Bedingung
bedingter Anweisungsblock
else
alternativer Anweisungsblock
end
Wenn die Bedingung erfüllt ist, wird der bedingte Anweisungsblock ausgeführt, anderenfalls der alternative
Anweisungsblock. Man kann auch mehrere Bedingungen abprüfen lassen und jeder Bedingung einen
Anweisungsblock zuordnen. Die Reihenfolge, in der die Bedingungen aufgelistet werden, ist dabei von Bedeutung.
Sie bestimmt die Reihenfolge in der sie geprüft werden. Sobald eine wahre Bedingung gefunden wird, wird der
zugehöhrige Anweisungsblock durchlaufen und die gesamte Verbundanweisung ist damit abgearbeitet. Man
formuliert zusätzliche Bedingungen in Matlab mit Hilfe von elseif.
elseif-Konstruktionen können mit einer else-Konstruktion abgeschlossen werden, müssen dies aber nicht.
if x >= 4
a=a+1;
elseif x >= 1
a=a-b;
elseif x >= 0
a=0;
else
x
end
-6-
MATLAB – KURZSKRIPT
FHD Fachbereich MN
3.4.2 Fallunterscheidungen.
Fallunterscheidungen stellen eine besondere Form der Verzweigung dar, bei der die Anweisungsblöcke einzelnen
Werten eines einzigen Ausdruckes zugeordnet werden. Dieser Ausdruck kann einen skalaren numerischen Wert
haben, er kann aber auch eine Zeichenkette als Wert haben.
» Jahr=1939;
» switch Jahr
case 1914
'Beginn des 1. Weltkriegs'
case 1918
' Ende des 1. Weltkriegs '
case 1939
' Beginn des 2. Weltkriegs '
case 1945
' Ende des 2. Weltkriegs '
end
ans =
Beginn des 2. Weltkriegs
3.4.3 Zähl-Schleifen
Bei for- oder Zähl-Schleifen wird ein Schleifenblock mehrmals durchlaufen. Jedem Schleifendurchlauf wird mit
Hilfe einer Schleifenvariablen ein bestimmter Wert, der Schleifenindex zugeordnet, der in der Schleife abgefragt
werden kann.
for-Schleifen haben in Matlab die Form:
for Schleifenvariable=Bereichsangabe
Schleifenblock
end
» sum=0;
» n=10;
» for ind=1:n; sum=sum+ind^2; end
» sum
sum =
385
Matlab läßt auch vektorwertige Schleifenvariablen und allgemeinere Angaben des Laufbereiches zu.
Im Standardfall verwendet man skalarwertige Laufvariablen und die Angabe des Laufbereiches in der Form
Anfangswert : Schrittweite : Endwert (wobei alle drei Angaben in Form skalarwertiger Ausdrücke auftreten
können). Bei positiver Schrittweite ist der letzte angenommene Wert der Laufvariablen kleiner oder gleich, bei
negativer Schrittweite größer oder gleich dem Endwert.
Wird die Schrittweite nicht angegeben, erfolgt also die Angabe des Laufbereichs in der Form
Anfangswert:Endwert, so wird die Schrittweite 1.0 verwendet.
» for ind = 0:2/3:5/4
ind
end
ind =
0
ind =
0.6667
» for ind=-1/2:-1/3:-1
ind
end
ind =
-0.5000
ind =
-0.8333
-7-
MATLAB – KURZSKRIPT
FHD Fachbereich MN
Die Ausdrücke, mit denen Anfangs-, Endwert und Schrittweite angegeben werden, müssen vor dem ersten
Schleifendurchlauf schon definierte Werte aufweisen.
3.4.4 while-Schleifen
Bei einer while-Schleife muß nicht von Anfang an feststehen, wie oft eine Schleife durchlaufen wird. Vor jedem
Durchlauf wird eine logische Schleifenbedingung abgeprüft. Ist diese wahr, so wird die Schleife ein weiteres Mal
durchlaufen, anderenfalls wird sie abgebrochen. Im Schleifenkörper muss der Wert der Schleifenbedingung
beeinflußt werden, da sie anderenfalls unendlich oft durchlaufen würde.
While-Schleifen haben in Matlab die Form:
while Schleifenbedingung
Schleifenkörper
end
Bei einer einfachen Schleife wiederholt sich der Ablauf:
• Schleifenbedingung prüfen
• Schleifenkörper abarbeiten
solange, bis die Schleifenbedingung nicht mehr erfüllt ist.
Zusätzliche Abbruchkriterien kann man in einer Schleife mittels if-Abfrage und der break-Anweisung formulieren.
Die break-Anweisung beendet die Abarbeitung des Schleifenkörpers der innersten Schleife.
» n=1; m=1;
» while n < 5
while m < 5
m=m+1
if m==3
break
end
end
'in der aeusseren Schleife'
n=n+1;
end
m =
2
m =
3
ans =
in der aeusseren Schleife
m =
4
m =
5
ans =
in der aeusseren Schleife
ans =
in der aeusseren Schleife
ans =
in der aeusseren Schleife
-8-
MATLAB – KURZSKRIPT
FHD Fachbereich MN
4 Ein- und Ausgabe
Die Ausgabe im Command Window können Sie mit dem Befehl format verändern, oder durch
Einstellungsänderung unter FILE/Preferences/Command Window. Ändern Sie hier unter Text display die
Einstellung Numeric Format, um die Darstellung von Zahlen zu variieren
Möglichkeiten in Auswahl:
short vordefinierte Einstellung
long, short e, long
bzw. Numeric display, um zwischen zwei Zeilen die Leerzeile zu entfernen oder zu erzeugen.
Möglichkeiten
loose (mit Leerzeilen)
compact (ohne Leerzeilen)
Ein Semikolon (;) hinter einer Anweisung unterdrückt die Ausgabe.
4.1 Formatierte Ausgabe
Mit dem Befehl fprintf in der Form count = fprintf(fid,format,A,...) wird eine formatierte
Ausgabe erzeugt.
fid
format
A,..
count
Variable, die die Nummer der Ausgabedatei enthält (fid=1: Ausgabe im Command Window Standard .- und muss daher nicht explizit angegeben werden.
String, der Ausgabetext und Ausgabeformate (als Platzhalter sozusagen) sowie Steuerungszeichen
enthalten kann
Ausgabevariablen, deren Inhalt ausgegeben werden soll
in der Variablen count wird die Anzahl der ausgegebenen Bytes gespeichert (kann auch weggelassen
werden)
Steuerungszeichen
\b
\f
\n
\r
\t
\\
\'' or ''
%%
Backspace
Form feed
New line
Carriage return
Horizontal tab
Backslash
(two single quotes) Single quotation mark
Percent character
Ausgabeformate
%c
Single character
%d
Decimal notation (signed)
%e
Exponential notation (using a lowercase e as in 3.1415e+00)
%E
Exponential notation (using an uppercase E as in 3.1415E+00)
%f
Fixed-point notation
%g
The more compact of %e or %f. Insignificant zeros do not print.
%G
Same as %g, but using an uppercase E
%i
Decimal notation (signed)
%o
Octal notation (unsigned)
%s
String of characters
%u
Decimal notation (unsigned)
%x
Hexadecimal notation (using lowercase letters a-f)
%X
Hexadecimal notation (using uppercase letters A-F)
Ein Zahl nach dem %-Zeichen gibt die Gesamtzahl der Ausgabestellen an. Die Anzahl der Nachkommastellen wird
– durch Punkt getrennt – anschließend angegeben. %20.8f bedeutet 20 Stellen insgesamt, 8 Nachkommastellen,der
Rest wird mit Leerzeichen aufgefüllt, Festpunktformat. (wichtig für Tabellenausgaben).
-9-
MATLAB – KURZSKRIPT
FHD Fachbereich MN
4.1.1 Formatierte Bildschirmausgabe
Die Variable fid ist standardmäßig auf 1 gesetzt und muss nicht angegeben werden
Beispiel:
a=pi;
fprintf ('\npi = %15.4f ',a) ergäbe die Ausgabe:
pi =
3.1416
(neue Zeile,Text (pi = ) Einsetzen von a in den „Platzhalter“ %15.4f)
4.1.2 Formatierte Ausgabe in Datei
Zum Schreiben in eine Datei muss erst eine fid-Nummer erzeugt werden mit dem Befehl fopen und zum
Schreiben freigegeben werden.
Bsp.:
a=[1,3,5,7];
Dateikennung = fopen('L:\MatLabKurs\daten1.csv','w');
Mit fprintf (Dateikennung,'%8.4f',a); wird die Variable in die Datei daten1.csv geschrieben
und die Datei anschließend mit fclose(Dateikennung); geschlossen. Mit einem Editor können sie die Datei
lesen. Näheres in der Hilfe.
4.3 Eingabe vom Bildschirm
Mit dem Befehl input können Sie Text ausgeben und Variablen einlesen.
Bsp.: a=input(‘Geben Sie bitte a ein: ‘);
Der Variablen a wird die Eingabewert vom Keyboard zugewiesen.
5. Grafik in Matlab
5.1 2D-Grafik
plot(x,y)
erzeugt einen 2D-Plot aus den Punktepaaren (xi,yi). x und y sind Vektoren.
Punkte werden in der Regel linear verbunden. Für einen Kurvenplot sind dann sehr viele
Punkte nötig, die Vektoren entsprechend groß. x und y müssen natürlich gleich viele
Elemente besitzen.
plot(x,y,s)
s ist ein String und enthält Angaben über Form und Farbe der Linien
siehe Befehl LineSpec (Linienspezifikation).
Bsp: plot(x,y,'ro');
zeichnet die Punkte (xi,yi) in rot (r) als kleine Kreise (o)
Wechsel des Markers (in Auswahl):
+
plus sign
o
circle
*
asterisk
.
point
x
cross
Wechsel des Linientyps:
solid line (default)
-- dashed line
:
dotted line
-. dash-dot line
Wechsel der Zeichenfarbe:
r
red
g
green
b
blue
c
cyan
m
magenta
y
yellow
k
black
w
white
Mehrere Kurven in einer Grafik
plot(x1,y1,x2,y2,x3,y3) drei 2D-Plots werden in eine Grafikausgabefenster gezeichnet.
Alternativ
plot (x1,y1)
Anhalten des Ausgabefensters nach dem Plot-Befehl und
hold on;
Wiederaufheben (nicht vergessen)
plot (x2,y2); plot (x3,y3);
hold off;
Bsp.:
x1 = -pi/2+0.1 : 2*pi/100 : pi/2-.1;
y1 = sin(x1); y2=cos(x1); y3=tan(x1);
plot(x1,y1,'r',x1,y2,'g',x1,y3,'--b');
- 10 -
MATLAB – KURZSKRIPT
FHD Fachbereich MN
Das Erscheinungsbild der Grafik kann u. a. mit folgenden Befehlen beeinflusst werden (nach plot-Befehl
eingeben):
axis([xmin,xmax,ymin,ymax]) setzt den Sichtbereich
axis equal
setzt x und y-Achse auf gleiche Einheiten
text(x,y,'string')
fügt den Text string am Punkt (x,y) ein
title('string')
versieht die Grafik mit der Überschrift string
xlabel ('string')
beschriftet die x-Achse mit dem Text string
ylabel ('string')
beschriftet die y-Achse mit dem Text string
Beispiel:x = -pi:0.01:pi; y = sin(x); plot(x,y);
axis([-pi/2,pi/2,-1,1]); grid on; title('Sinus-Funktion');
xlabel('x-Achse'); ylabel('y-Achse')
axis equal;
Funktionsplots
fplot('fname', limit)
zeichnet die Funktion(en), die im String fname angegeben sind,
im Druckbereich limit
(Bsp. fplot('sin(x)',[-pi,pi]))
Es können auch mehrere Funktionen gleichzeitig gezeichnet werden.
Bsp:
fplot ('[sin(x), cos(x)]',[-pi,pi])
subplot(m,n,i)
Bsp:
Mit dem Befehl subplot kann das Grafikfenster in eine mxn-Matrix aufgeteilt und in
jedes Feld i (zeilenweise gezählt) eine eigene Grafik ausgegeben werden.
x=-pi:0.01:pi; subplot(2,1,1); plot(x,sin(x));
subplot(2,1,2); plot(x,sin(x));
Allgemeine Grafikbefehle
erzeugt ein leeres Grafikfenster
schließt das Grafikfenster
löscht Inhalt des Grafikfensters
Inhalt des Grafikfensters für die nächste Grafik behalten/ausschalten
Gitternetz erzeugen
figure
close
clf
hold on/off
grid on
5.2 3D-Grafik
Für viele der 3D-Grafikfunktionen muss zunächst ein Gitternetz erzeugt werden.
[X,Y] = meshgrid(x,y)
erzeugt aus den Vektoren x und y ein Gitternetz, das durch
die Matrizen X und Y beschrieben wird
plot3(X,Y,Z)
mesh(X,Y,Z)
surf(X,Y,Z)
surfl(X,Y,Z)
zeichnet eine 3D-Liniengrafik
zeichnet ein Gitternetz
zeichnet eine (farbige) Oberfläche
zeichnet eine (farbige) Oberfläche mit Lichteinfall (light)
Weitere Grafikbefehle in der Hilfe.
Beispiele:
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z=X .* exp(-X.^2 - Y.^2);
mesh(X,Y,Z)
t = 0:pi/50:10*pi
plot3(sin(t),cos(t),t);
- 11 -
Herunterladen