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 Mehrdimensionale Felder
Skalare(1*1-Matrizen)
Vektoren(Zeilen- und Spaltenvektoren)
n*m-Matrizen
Anlegen von Feldern (per Hand):
• MatrizenA = [a11 a12 a13; a21 a22 a23]
• Vektoren- Zeilenvektoren:
- b = [a11 a12 a13]- Spaltenvektoren
- d = [a11; a21; a31]
Anlegen von Feldern (per Hand):
• mehrdimensionale FelderMatrix AMatrix B____________C(:, :, 1) = AC(:, :, 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 QuadratA = magic(Länge)
• EinheitsmatrizenB = 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) =
2ans(:,:,2) =
2.2000ans(:,:,3) =
2.4000
Top Related