Datenstrukturen

Werbung
Datenstrukturen
6. Thema:
Arbeiten mit Feldern
Was sind Felder?
• Ein Feld ist eine Datenstruktur, deren
Elemente alle von derselben skalaren
Datenart sind
• Elemente sind ein- oder mehrdimensional
angeordnet
• Anordnung in einer Dimension wird durch
einen Index beschrieben
Eigenschaften von Feldern:
• gleichwertige Elemente
• Länge einer Dimension ist unabhängig
vom Wert der Indices in den anderen
Dimensionen (keine Lücken)
Unterteilung:
Felder
(arrays)
Matrizen
Skalare
(1*1-Matrizen)
Vektoren
(Zeilen- und Spaltenvektoren)
Mehrdimensionale Felder
n*m-Matrizen
Anlegen von Feldern (per Hand):
• Matrizen
A = [a11 a12 a13; a21 a22 a23]
• Vektoren
- Zeilenvektoren:
- b = [a11 a12 a13]
- Spaltenvektoren
- d = [a11; a21; a31]
Anlegen von Feldern (per Hand):
• mehrdimensionale Felder
Matrix A
Matrix B
____________
C(:, :, 1) = A
C(:, :, 2) = B
Besondere Funktionen zum
Anlegen von Zeilenvektoren
• c = [Start: Schrittweite: Ende]
• linspace
linspace(-2,+3,50)
liefert einen Vektor mit 50 zwischen -2
und +3 äquidistant verteilten Werten.
• logspace
logspace(-2,+2,2000)
liefert einen Vektor mit 2000 Werten,
die auf einer logarithmisch skalierten
Strecke zwischen 1.0e-2 und 1.0e+2
äquidistant verteilt sind.
Besondere Funktionen zum
Anlegen von Matrizen
• Magisches Quadrat
A = magic(Länge)
• Einheitsmatrizen
B = eye(Länge (, Länge) )
• ones - liefert Felder beliebiger Gestalt, bei
denen alle Elemente den Wert 1 haben.
• zeros - liefert Felder beliebiger Gestalt,
bei denen alle Elemente den Wert 0
haben.
Besondere Funktionen zum Anlegen
von mehrdimensionalen Feldern
• Die Matlab-Funktion rand liefert Felder,
deren Elemente gleichverteilte
Zufallszahlen im Intervall(0,1) sind.
•
•
•
•
•
rand(1,n) liefert einen Zeilenvektor der Länge n
rand(n,1) liefert eine Spaltenvektor der Länge n
rand(n) liefert eine quadratische n*n Matrix
rand(n,m) liefert eine n*m Matrix
rand(n,m,p) liefert ein n*m*p Feld
Besondere Funktionen zum Anlegen
von mehrdimensionalen Feldern
• randn liefert Felder beliebiger Gestalt, bei
denen die Elementwerte normalverteilt mit
Mittelwert 0 und Standardabweichung 1
sind.
Zugriff auf Feldbereiche
• Vektoren
- a(Index_D1)
• Matrizen und mehrdimensionale Felder
- Elemente:
B(Index_D1, Index_D2)
- Bereiche:
B(Index_D1, b23: b25)
- Zeilen:
B(Index_D1, :)
- Spalten:
B(:, Index_D2)
Rechenoperation auf Felder
•
•
•
•
•
•
•
•
•
•
•
•
•
Matrizen transponieren: A‘
Matrizen mit Matrizen oder Vektoren multiplizieren
-B*C
-D*e
Komponentenweise Berechnung
-t.*t
Inverse einer Matrix: inv(A)
Rang
rank(A)
Determinante
det(A)
Summe (Differenz) A + B (A - B)
p-te Potenz
A^p
Skalarprodukt zweier Vektoren
x‘ * y
Äußeres Produkt zweier Vektoren x * y'
Multiplikation mit Skalar c
c*x
Matrix-Vektor Produkt
A*x
Eine Besonderheit in MATLAB stellt die Matrix-Division dar. Hierbei gilt:
•
•
•
•
•
X=A\B ist Lösung der Gleichung A*X=B
X=B/A ist Lösung der Gleichung X*A=B
Wenn bei der Matrix-Division anstelle der Matrix B ein Vektor b verwendet wird, so stell x=A\b
gerade die Lösung des linearen Gleichungssystems A*x=b dar; bei der Lösung wird der Gaußsche Algorithmus
verwendet.
Eigenwerte und Eigenvektoren einer Matrix A können folgendermaßen berechnet werden:
•
•
Vektor x der Eigenwerte: x=eig(A)
Matrix X der Eigenvektoren, Diagonalmatrix D der Eigenwerte: [X,D]=eig(A)
Rechenoperation auf Felder
• sum(Feld) – Addition aller Spalten
• sum(Feld‘) – Addition aller Zeilen
• sum(sum(Feld)) – Addition aller Feld
Feldelemente, is auch mit dem Platzhalter
‘:‘ kombinierbar
Rechenoperation auf Felder
• Cat – Mit Hilfe dieser Funktion kann man aus Feldern
solche mit höheren Dimension aufbauen.
• Bsp.:
cat(3, 2.0, 2.2, 2.4)
ans(:,:,1) =
2
ans(:,:,2) =
2.2000
ans(:,:,3) =
2.4000
Herunterladen