Professional Documents
Culture Documents
2007
Einführung in Matlab - II
Beispiele:
>> x = 1:2:9
x =
1 3 5 7 9
>> x = 1:9
x =
1 2 3 4 5 6 7 8 9
>> linspace(1,9,6)
ans =
1.0000 2.6000 4.2000 5.8000 7.4000 9.0000
>> y = linspace(0.1,0.1,3)
y =
0.1000 0.1000 0.1000
>> logspace(2,5,4)
ans =
100 1000 10000 100000
>> x = 9:-2:1
x =
9 7 5 3 1
>> y = 0:pi/4:pi
y =
0 0.7854 1.5708 2.3562 3.1416
A(n1:n2, m1:m2) Teilmatrix von A mit den Zeilen n1 bis n2 und den
Spalten m1 bis m2
A(:,i) i-te Spalte von A. Ein Doppelpunkt alleine
bezeichnet den ganzen Bereich
A(:,[i j]) i-te und j-te Spalte von A
A(:, [2 5 10]) = B(:,1:3) 2., 5. und 10. Spalte von A werden durch die ersten
3 Spalten von B ersetzt
(Voraussetzung: A und B haben gleiche Anzahl von
Zeilen!)
A(i ,:) i-te Zeile von A. Ein Doppelpunkt alleine
bezeichnet den ganzen Bereich
A(end:-1:1, :) kehrt Reihenfolge der Zeilen von A um
A(:,end:-1:1) kehrt Reihenfolge der Spalten von A um
Zuweisungen
Regel:
steht links von der Zuweisung eine Variable (Skalar, Vektor oder
Matrix), und rechts ein Skalar, Vektor, Matrix oder ein Teilfeld so
nimmt die linke Seite den Typ und die Größe an, die die rechte
Seite vorgibt!
steht dagegen links ein Teilfeld (eines Vektors oder einer Matrix),
muss die rechte Seite der Zuordnung die gleiche Dimension haben!
Ausnahme: auf den rechten Seite steht ein Skalarausdruck
dann:
jedem ausgewählten Element des Teilfeldes wird der Skalar-
ausdruck zugewiesen
Beispiele:
>> A = [ 0.2 0.8; 0.6 1.1];
>> x = [ 1 2 3 4 5 6 7];
>> B = x;
>> A(1,1) = x(3);
>> C = x(1:3);
>> A(2,:) = x
??? Subscripted assignment dimension mismatch.
Zuweisungen
Beispiele:
>> A = [1 2 3 4 5 6; 7 8 9 10 11 12];
>> A(1,1) = 6
A =
6 2 3 4 5 6
7 8 9 10 11 12
>> A(:,1) = [3; 3] % 1. Spalte oder A(:,1) = 3
A =
3 2 3 4 5 6
3 8 9 10 11 12
>> A(:, 1:2:6) = 9 % alle Elemente in ungeraden
% Spalten erhalten den Wert 9
A =
9 2 9 4 9 6
9 8 9 10 9 12
>> A(find(A > 8)) = 0 % alle Elem. > 8 werden auf 0
% gesetzt
A =
0 2 0 4 0 6
0 8 0 0 0 0
>> A(2,:) = [] % 2. Zeile wird gelöscht
A =
0 2 0 4 0 6
Zuweisungen
Seien L ein "logischer" Vektor, der nur 0 oder 1 als Element hat, und
A eine nxm-Matrix:
A(L, :) Matrix, die aus den Zeilen von A besteht, die
durch Einsen in L bestimmt werden.
v = (x<=3*std(x)) v enthält dort eine 1, wo der Vergleich richtig ist,
sonst eine 0
x = x(v) x wird zu einem Vektor zusammengeschoben, der
nur Elemente enthält, die kleiner als 3*std(x) sind
x = x(x<=3*std(x)) die beiden obigen Anweisungen zusammgefaßt
L = A(:,3) > 100 L ist ein Spaltenvektor mit 1 in der Zeile, in der A
eine Zahl größer als 100 in der 3. Spalte hat
A = A(L,:) entfernt die Zeilen aus A, an denen L eine 0 hat
x = [] leere 0x0 Matrix
A(:,[2 4]) 2. und 4. Spalte von A
A(:,[2 4]) = [] Löschen der 2. und 4. Spalte von A
Zuweisungen
1 2 1 3
A A'
3 4 2 4
1 4 1 1
A.^2 ones
9 16 1 1
Ausgabeformate
Zahlen werden in Matlab im IEEE-Standard dargestellt. Mit dem
Kommando format kann man verschiedene Ausgabeformate
festlegen:
format short 5 Ziffern, Festkomma
format long 15 Ziffern, Festkomma
format short e 5 Ziffern, Gleitkomma
format long e 15 Ziffern, Gleitkomma
format short g beste Darstellung von short oder short e
format long g beste Darstellung von long oder long e
format hex hexadezimale Darstellung
format bank auf 2 Dezimalstellen gerundet
format rat Darstellung als rationale Zahl
format + + für positive, für negative Zahlen und ein Blank für 0
format compact Ausgabe mit weniger Leerzeilen
format loose Ausgabe aufgelockerter (Standard)
Ausgabeformate
Konstanten
In MATLAB gibt es Variablen, die eine vorgegebene Bedeutung oder
einen speziellen Zahlenwert haben:
ans letztes Ergebnis einer interaktiven Berechnung
eps relative Maschinengenauigkeit (IEEE: 2-52)
realmin kleinste positive darstellbare Gleitkommazahl
realmax größte Gleitkommazahl
pi Wert von = 3.141592653589793...
i, j komplexe Einheit: 1
Inf symbolische Konstante für
-Inf symbolische Konstante für
NaN symb. Konstante für "not a number" z.B. 0/0
clock, date Uhrzeit, Datum
computer Computertyp (Tabelle: help computer)
version Matlab Version
format loose Ausgabe aufgelockerter
Warnung: Konstanten können überschrieben werden!
Komplexe Zahlen
Eine komplexe Zahl hat in Matlab folgenden Darstellungen:
(1) z = a + b * i
(2) z = a + b * j
(3) z = a + bi
(4) z = a + bj
conj(z) konjugiert komplexe Zahl von z a-bi
real(z) Realteil von z a
imag(z) Imaginärteil von z b
angle(z) Winkel in der Polardarstellung atan(b/a)
abs(z) Absolutbetrag a2 b2
(5) z = abs(z) * exp(i*angle(z))
Warnung: i kann überschrieben werden, z.B. als Index!
Vorschlag: ii = sqrt(-1); z = a + b*ii
Polynome
Da ein Polynom durch seine Nullstellen nur bis auf ein Vielfaches "ein-
deutig" bestimmt ist, wählt MATLAB das Polynom mit Koeffizient 1 im
höchsten Monom.
Einführung in MATLAB - II - 14 - (Hans Josef Schummer)
19.06.2007
Polynome
Beispiel:
>> p = [1 2 1];
>> r = roots(p)
r =
-1
-1
>> poly(r)
ans =
1 2 1
Polynome
Polynome
Beispiele:
>> p1 = [1 2 -3]; p2 = [2 -1 3 -4];
>> p3 = conv(p1,p2) % Multiplikation
p3 =
2 3 -5 5 -17 12
>> p4 = [-1 3 -4];
>> p5 = p1 + p4 % Addition gleich Laenge
p5 =
0 5 -7
p6 = [0 p1] + p2 % Addition ungleicher Laenge
p6 =
2 0 5 -7
>> [q,r] = deconv(p2,p1) % Division
q =
2 -5
r =
0 0 19 -19 % Restpolynom
>> dp2 = polyder(p2) % Ableitung
dp2 =
6 -2 3
Polynome
Beispiele:
>> p = [1 -3 -6 8]; Ergebnis:
>> r = roots(p)
r =
4.0000
-2.0000
1.0000
>> x = -3:0.1:8;
>> y = polyval(p,x);
>> plot(x,y)
>> grid
>> xlabel('x')
>> ylabel('y')
>> title('y=x^3-3x^2-6x+8')
2D-Grafik
Das Kommando plot erzeugt einen xy-Plot .
Argumente: Vektoren gleicher Länge, deren Komponenten
paarweise zu einem Datenpunkt kombiniert werden.
Optional: Linientyp und eine Farbe
plot(x,y,'format')
Mehrere Kurven können in einem Diagramm dargestellt werden durch
Angabe von mehreren Argumentspaaren:
plot(x,y)
plot(x1,y1,x2,y2)
plot(x1,y1,'c+',x2,y2)
Beim verschiedenen Skalen wird eine gemeinsame gewählt, in
der beide Kurven dargestellt werden können.
Ist nur ein Argument vorhanden, plot(y), werden die Kompo-
nenten gegen den Index gezeichnet.
2D-Grafik
Formatierungen für plot:
Symbol Farbe Symbol Marker Symbol Linienart
b blau . Punkt - durchgezogen
g grün o Kreis : punktiert
r rot x Kreuz -. strich-punktiert
c cyan + Plus -- strichliert
m magenta * Stern
y gelb s Quadrat
k schwarz d Diamant
w weiß v Dreieck (unten)
^ Dreieck (oben)
< Dreieck (links)
> Dreieck (rechts)
p Pentagramm
h Hexagramm
2D-Grafik
2
Die Funktionen y = 1/ (1 +x ) und y = sin x sollen im Intervall [-5,5]
geplottet werden:
>> x = linspace(-5,5,100);
>> y1 = 1./(1+x.^2);
>> y2 = sin(x);
>> plot(x,y1,'c+',x,y2)
2D-Grafik
Plotkommandos:
loglog Darstellung mit logarithmischer x- und y-Achse
semilogx logarithmische x-Achse
semilogy logarithmische y-Achse
2D-Grafik
2
Die Funktion y = 1/ (1 + x ) wird im Intervall [-5,5] und y = sin x im
Intervall [-pi,pi] geplottet:
>> x1 = linspace(-5,5,100);
>> y1 = 1./(1+x1.^2);
>> plot(x1,y1);
>> hold
Current plot held
>> x2 = -pi:0.1:pi;
>> y2 = sin(x2);
>> plot(x2,y2,'r');
>> grid
>> legend('1/(1+x1^2)','sin(x)');
>> xlabel('x');
>> ylabel('y');
>> title('Beispiel');
>> text(2,-0.4,'TEXT');
2D-Grafik
2
Die Funktion y = 1/ (1 +x ) wird im Intervall [-5,5] und y = sin x im
Intervall [-pi,pi] geplottet:
>> x1 = linspace(-5,5,100);
>> y1 = 1./(1+x1.^2);
>> plot(x1,y1);
>> hold
Current plot held
>> x2 = -pi:0.1:pi;
>> y2 = sin(x2);
>> plot(x2,y2,'r');
>> grid
>> axis([-5.2 5.2 -1.2 1.2])
>> xlabel('x');
>> ylabel('y');
>> title('Beispiel');
>> text(2,-0.4,'TEXT');
>> legend('1/(1+x1^2)', 'sin(x)',2);
Histogramm
Sei y ein Vektor; dann wird mit hist(y) ein Histogramm erzeugt, in
dem die Komponenten der Größe nach sortiert werden und 10 Balken
ausgegeben werden.
hist(y, n) erzeugt ein Histogramm mit n Balken:
>> y=randn(3000,1);
>> hist(y,100);
>> text(-3.5,113,'3000 normalverteilte Zufallszahlen')
Diagramme
Beispiel:
>> fplot('sin(x)/x',[-5*pi, 5*pi], 'o-');
>> title('sinx/x');
>> axis([-5*pi 5*pi -0.4 1.2])
3D Grafik
Linienplots:
Seien x, y, z drei Vektoren gleicher Länge. Dann stellt
plot3(x,y,z)
eine Kurve im dreidimensionalen Raum dar.
>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t);
>> grid
3D Grafik
Netzgrafik:
Darstellung von z-Koordinaten oberhalb eines Punktes eines rechte-
ckigen Gitters in der xy-Ebene, z.B eine Funktion z = f(x,y)
Seien x und y zwei Vektoren der Länge m bzw. n, die Werte entlang
der x- bzw. y-Achse enthalten. Dann:
[X,Y] = meshgrid(x,y)
erzeugt zwei Matrizen X und Y der Größe mxn. Die Zeilen von X be-
stehen aus Kopien des Vektors x und die Spalten von Y aus Kopien
von y.
Matrix
Z = f(X,Y)
Eine Netzgrafik wird erzeugt mit:
mesh(X,Y,Z)
Bei mesh(Z) werden die Vektorindizes als x- und y-Werte genom-
men.
3D Grafik
Beispiel:
>> x = [-2:0.1:2]; y=x;
>> [X,Y] = meshgrid(x,y);
>> Z = X.^2 - Y.^2;
>> mesh(X,Y,Z)
3D Grafik
Die Funktion surf verhält sich wie mesh, verbindet jedoch
benachbarte Z-punkte durch Flächenstücke:
>> x = [-2:0.1:2]; y=x;
>> [X,Y] = meshgrid(x,y);
>> Z = X.^2 - Y.^2;
>> surf(X,Y,Z)
3D Grafik
Kontourplots:
contour(x,y,Z,n) Kontourplots mit n "Höhenschichtlinien" (Default: 5)
contour3(x,y,Z,n) 3D Kontourplots
>> [x,y,z] = peaks;
>> contour(x,y,z,20)
>> contour3(x,y,z,20)
Farbpaletten
3 Werte für die Anteile der Farben Rot, Grün und Blau, im abge-
schlossenen Intervall von 0 bis 1
Farbpaletten:
hsv, hot, gray, bone, copper, pink, white, flag,
jet, prism, cool, lines, colorcube, summer, autumn,
winter, spring
Achsenskalierung
Kommando axis:
axis([xmin xmax ymin ymax]) Skalierung der x- und y-Achsen
axis([xmin xmax ymin ymax zmin zmax]) Skalierung der x-, y- und z-Achsen
axis('auto') automatische Skalierung
axis(axis) Einfrieren der aktuellel Skalierung
axis('ij') Skalierung im Matrixkoordinatensystem
axis('xy') Skalierung nach Matrixwerten
axis('square') Plotbereich ist quadratisch
axis('equal') Skalenfaktoren und Strichabstand sind gleich
axis('off') schaltet Achsen aus
axis('on') schaltet Achsen ein
Farbskalierung:
üblich: komplettes Wertespektrum wird auf der Farbtabelle abgebildet
Abbildung von Teilbereichen:
caxis([cmin,cmax])
mit cmin,cmax Grenzen des Wertbereichs
Verschiedenes
Verdeckungen (des Gitters)
hidden on Standard
hidden off
Mehrere Fenster:
figure(n) aktiviert das n-te Fenster (falls es nicht existiert,
wird es erzeugt)
Subplots:
subplot(m,n,i) teilt das aktive Fenster in eine mxn-Matrix von
Fenstern, wobei das i-te Fenster aktiviert wird
Hardcopies:
print plot -ddriver
Das aktive Fenster wird in eine Datei plot.ext geschrieben. Als dri-
ver kann man ein Grafikformat oder einem Devicetreiber angeben. Da-
von hängt auch die Namenserweiterung ab. Mehr dazu mit:
help print