MATLAB: Mehrdimensionale und spezielle Arrays meistern
In MATLAB sind alle Variablen aller Datentypen mehrdimensionale Arrays. Ein Vektor ist ein eindimensionales Array, eine Matrix ein zweidimensionales Array.
Vektoren und Matrizen wurden bereits besprochen. In diesem Kapitel geht es um mehrdimensionale Arrays. Zunächst werden jedoch einige spezielle Array-Typen vorgestellt.
Spezielle Arrays in MATLAB
In diesem Abschnitt werden Funktionen vorgestellt, die spezielle Arrays erzeugen. Bei allen diesen Funktionen erzeugt ein einzelnes Argument ein quadratisches Array, zwei Argumente ein rechteckiges Array.
Die Funktion zeros() erstellt ein Array, das nur Nullen enthält:
Beispiel:
Live Demozeros(5)
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Die Funktion ones() erstellt ein Array, das nur Einsen enthält:
Beispiel:
Live Demoones(4,3)
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
ans = 1 1 1 1 1 1 1 1 1 1 1 1
Die Funktion eye() erstellt eine Einheitsmatrix.
Beispiel:
Live Demoeye(4)
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
Die Funktion rand() erstellt ein Array mit gleichverteilten Zufallszahlen im Intervall (0,1):
Beispiel:
Live Demorand(3, 5)
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.6324 0.5469 0.1576 0.4854 0.1270 0.0975 0.9575 0.9706 0.8003
Magische Quadrate
Ein magisches Quadrat ist eine quadratische Matrix, bei der die Summe der Elemente in jeder Zeile, jeder Spalte und auf beiden Diagonalen gleich ist.
Die Funktion magic() erstellt ein magisches Quadrat. Sie erwartet ein einzelnes Argument, das die Größe des Quadrats angibt. Das Argument muss ein Skalar ≥ 3 sein.
Live Demomagic(4)
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
Mehrdimensionale Arrays
Ein Array mit mehr als zwei Dimensionen wird in MATLAB als mehrdimensionales Array bezeichnet. Mehrdimensionale Arrays sind eine Erweiterung der normalen zweidimensionalen Matrix.
Um ein mehrdimensionales Array zu erzeugen, erstellt man zunächst ein zweidimensionales Array und erweitert es dann.
Beispiel: Zuerst wird ein zweidimensionales Array a erstellt.
Live Demoa = [7 9 5; 6 1 9; 4 3 2]
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
a = 7 9 5 6 1 9 4 3 2
Das Array a ist ein 3x3-Array. Wir können eine dritte Dimension hinzufügen, indem wir Werte wie folgt angeben:
Live Demoa(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
a = ans(:,:,1) = 0 0 0 0 0 0 0 0 0 ans(:,:,2) = 1 2 3 4 5 6 7 8 9
Mehrdimensionale Arrays lassen sich auch mit den Funktionen ones(), zeros() oder rand() erstellen.
Beispiel:
Live Demob = rand(4,3,2)
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
b(:,:,1) = 0.0344 0.7952 0.6463 0.4387 0.1869 0.7094 0.3816 0.4898 0.7547 0.7655 0.4456 0.2760 b(:,:,2) = 0.6797 0.4984 0.2238 0.6551 0.9597 0.7513 0.1626 0.3404 0.2551 0.1190 0.5853 0.5060
Auch die Funktion cat() kann zum Erstellen mehrdimensionaler Arrays verwendet werden. Sie verkettet eine Liste von Arrays entlang einer angegebenen Dimension:
Syntax der cat()-Funktion:
B = cat(dim, A1, A2...)
Dabei ist:
B das neu erstellte Array
A1, A2, ... die zu verkettenen Arrays
dim die Dimension, entlang der die Arrays verkettet werden
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie folgenden Code ein:
Live Demoa = [9 8 7; 6 5 4; 3 2 1]; b = [1 2 3; 4 5 6; 7 8 9]; c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
Beim Ausführen der Datei wird folgendes angezeigt:
c(:,:,1) = 9 8 7 6 5 4 3 2 1 c(:,:,2) = 1 2 3 4 5 6 7 8 9 c(:,:,3) = 2 3 1 4 7 8 3 9 0
Array-Funktionen
MATLAB bietet folgende Funktionen zum Sortieren, Drehen, Permutieren, Umformen oder Verschieben von Array-Inhalten:
| Funktion | Zweck |
|---|---|
| length | Länge eines Vektors oder größte Array-Dimension |
| ndims | Anzahl der Array-Dimensionen |
| numel | Anzahl der Array-Elemente |
| size | Array-Dimensionen |
| iscolumn | Prüft, ob Eingabe ein Spaltenvektor ist |
| isempty | Prüft, ob Array leer ist |
| ismatrix | Prüft, ob Eingabe eine Matrix ist |
| isrow | Prüft, ob Eingabe ein Zeilenvektor ist |
| isscalar | Prüft, ob Eingabe ein Skalar ist |
| isvector | Prüft, ob Eingabe ein Vektor ist |
| blkdiag | Erstellt Blockdiagonalmatrix aus Eingabeargumenten |
| circshift | Verschiebt Array zirkulär |
| ctranspose | Komplex-konjugiert transponieren |
| diag | Diagonalmatrizen und Diagonalen einer Matrix |
| flipdim | Spiegelt Array entlang angegebener Dimension |
| fliplr | Spiegelt Matrix von links nach rechts |
| flipud | Spiegelt Matrix von oben nach unten |
| ipermute | Kehrt Permutation der Dimensionen eines N-D-Arrays um |
| permute | Ändert Reihenfolge der Dimensionen eines N-D-Arrays |
| repmat | Repliziert und kachelt Array |
| reshape | Formt Array um |
| rot90 | Dreht Matrix um 90 Grad |
| shiftdim | Verschiebt Dimensionen |
| issorted | Prüft, ob Elemente sortiert sind |
| sort | Sortiert Array-Elemente aufsteigend oder absteigend |
| sortrows | Sortiert Zeilen aufsteigend |
| squeeze | Entfernt Singleton-Dimensionen |
| transpose | Transponiert |
| vectorize | Vektorisieren eines Ausdrucks |
Beispiele
Die folgenden Beispiele veranschaulichen einige der oben genannten Funktionen.
Länge, Dimension und Anzahl der Elemente:
Erstellen Sie eine Skriptdatei und geben Sie folgenden Code ein:
Live Demox = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % Länge des Vektors x y = rand(3, 4, 5, 2); ndims(y) % Anzahl der Dimensionen im Array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % Anzahl der Elemente in s
Beim Ausführen der Datei wird folgendes Ergebnis angezeigt:
ans = 8 ans = 4 ans = 23
Zirkuläres Verschieben von Array-Elementen:
Erstellen Sie eine Skriptdatei und geben Sie folgenden Code ein:
Live Demoa = [1 2 3; 4 5 6; 7 8 9] % das ursprüngliche Array a b = circshift(a,1) % zirkuläres Verschieben der ersten Dimension um 1 nach unten c = circshift(a,[1 -1]) % zirkuläres Verschieben der ersten Dimension um 1 nach unten % und der zweiten Dimension um 1 nach links
Beim Ausführen der Datei wird folgendes Ergebnis angezeigt:
a = 1 2 3 4 5 6 7 8 9 b = 7 8 9 1 2 3 4 5 6 c = 8 9 7 2 3 1 5 6 4
Arrays sortieren
Erstellen Sie eine Skriptdatei und geben Sie folgenden Code ein:
Live Demov = [ 23 45 12 9 5 0 19 17] % horizontaler Vektor sort(v) % Sortieren von v m = [2 6 4; 5 3 9; 2 0 1] % zweidimensionales Array sort(m, 1) % Sortieren von m entlang der Zeilen sort(m, 2) % Sortieren von m entlang der Spalten
Beim Ausführen der Datei wird folgendes Ergebnis angezeigt:
v = 23 45 12 9 5 0 19 17 ans = 0 5 9 12 17 19 23 45 m = 2 6 4 5 3 9 2 0 1 ans = 2 0 1 2 3 4 5 6 9 ans = 2 4 6 3 5 9 0 1 2
Zell-Arrays
Zell-Arrays sind Arrays von indizierten Zellen, wobei jede Zelle ein Array unterschiedlicher Dimensionen und Datentypen speichern kann.
Die Funktion cell wird zum Erstellen eines Zell-Arrays verwendet. Syntax der cell-Funktion:
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
Wobei:
C ist das Zell-Array;
dim ist ein ganzzahliger Skalar oder Vektor von ganzen Zahlen, der die Dimensionen des Zell-Arrays C angibt;
dim1, ... , dimN sind ganzzahlige Skalare, die die Dimensionen von C angeben;
obj ist eines der folgenden Objekte:
- Java-Array oder -Objekt
- .NET-Array vom Typ System.String oder System.Object
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie folgenden Code ein:
Live Demo c = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Beim Ausführen der Datei wird folgendes Ergebnis angezeigt:
c = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 [1,3] = Green [2,3] = 3 [1,4] = Yellow [2,4] = 4 [1,5] = White [2,5] = 5 }
Zugriff auf Daten in Zell-Arrays
Es gibt zwei Möglichkeiten, auf Elemente eines Zell-Arrays zuzugreifen:
- Einschließen der Indizes in runde Klammern (), um auf Zellgruppen zuzugreifen
- Einschließen der Indizes in geschweifte Klammern {}, um auf die Daten innerhalb einzelner Zellen zuzugreifen
Wenn Sie die Indizes in runde Klammern einschließen, beziehen Sie sich auf die Menge der Zellen.
Zell-Array-Indizes in runden Klammern beziehen sich auf Zellmengen.
Beispiel:
Live Demo c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c(1:2,1:2)
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
ans = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 }
Sie können auch auf den Inhalt von Zellen zugreifen, indem Sie mit geschweiften Klammern indizieren.
Beispiel:
Live Demo c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c{1, 2:4}
MATLAB führt die Anweisung aus und liefert folgendes Ergebnis:
ans = Blue ans = Green ans = Yellow
MATLAB
- C# Arrays meistern: Deklaration, Initialisierung und Operationen
- C# Jagged Arrays meistern: Deklaration, Initialisierung und Zugriff
- Java Array-Kopiertechniken: Umfassender Leitfaden
- C++ Arrays verstehen: Deklaration, Initialisierung und Pointer‑Techniken
- C++ Dynamische Array‑Allokation: Praktischer Leitfaden mit Code‑Beispielen
- MATLAB: Umfassender Überblick über die führende numerische Computing-Umgebung
- Variablen in MATLAB verstehen: Grundlagen & Beispiele
- Wichtige MATLAB-Befehle für effizientes Computing
- MATLAB Matrizen Grundlagen: Erstellen, Referenzieren, Manipulieren
- MATLAB – Zahlen: Typen, Speicherung und Konvertierung