Hauptinhalt

Erstellen, Verknüpfen und Erweitern von Matrizen

Die grundlegendste MATLAB®-Datenstruktur ist die Matrix. Eine Matrix ist eine zweidimensionale, rechteckige Anordnung von Datenelementen, die in Zeilen und Spalten gegliedert sind. Bei den Elementen kann es sich um Zahlen, logische Werte (true oder false), Datums- und Zeitangaben, Zeichenfolgen, categorical-Werte oder andere MATLAB-Datentypen handeln.

Selbst eine einzelne Zahl wird als Matrix gespeichert. Zum Beispiel wird eine Variable mit dem Wert 100 als 1×1-Matrix vom Typ double gespeichert.

A = 100;
whos A
  Name      Size            Bytes  Class     Attributes

  A         1x1                 8  double              

Erstellen einer Matrix aus Daten

Wenn Sie einen bestimmten Datensatz haben, können Sie mit eckigen Klammern seine Elemente in einer Matrix anordnen. Zwischen den Elementen einer einzelnen Datenzeile stehen Leerzeichen oder Kommas, und ein Semikolon trennt die Zeilen. Erstellen Sie zum Beispiel eine einzelne Zeile mit vier numerischen Elementen. Die Größe der resultierenden Matrix ist 1×4, da sie eine Zeile und vier Spalten besitzt. Eine Matrix dieser Form wird oft als Zeilenvektor bezeichnet.

A = [12 62 93 -8]
A = 1×4

    12    62    93    -8

sz = size(A)
sz = 1×2

     1     4

Erstellen Sie nun eine Matrix mit denselben Zahlen, aber ordnen Sie sie in zwei Zeilen an. Diese Matrix besitzt zwei Zeilen und zwei Spalten.

A = [12 62; 93 -8]
A = 2×2

    12    62
    93    -8

sz = size(A)
sz = 1×2

     2     2

Spezialisierte Matrixfunktionen

MATLAB verfügt über viele Funktionen, mit denen Sie Matrizen mit bestimmten Werten oder einer bestimmten Struktur erstellen können. Die Funktionen zeros und ones erzeugen zum Beispiel Matrizen mit nur Nullen oder nur Einsen. Das erste und zweite Argument dieser Funktionen sind die Anzahl der Zeilen bzw. die Anzahl der Spalten der Matrix.

A = zeros(3,2)
A = 3×2

     0     0
     0     0
     0     0

B = ones(2,4)
B = 2×4

     1     1     1     1
     1     1     1     1

Die Funktion diag setzt die Eingabeelemente auf die Diagonale einer Matrix. Erstellen Sie zum Beispiel einen Zeilenvektor A mit vier Elementen. Erstellen Sie dann eine 4×4-Matrix, deren Diagonalelemente die Elemente von A sind.

A = [12 62 93 -8];
B = diag(A)
B = 4×4

    12     0     0     0
     0    62     0     0
     0     0    93     0
     0     0     0    -8

Die Funktion createArray (seit R2024a) kann Arrays von fast jedem MATLAB-Datentyp zurückgeben. Die Funktion verwendet dieselbe Syntax wie zeros und ones, um die Größe des Arrays zu definieren, aber sie bietet auch mehrere Optionen, um den Inhalt des Arrays zu spezifizieren. Sie können zum Beispiel den Auffüllwert angeben.

C = createArray(2,3,FillValue=duration(1,15,0))
C = 2×3 duration
   01:15:00   01:15:00   01:15:00
   01:15:00   01:15:00   01:15:00

Verknüpfen von Matrizen

Sie können auch eckige Klammern verwenden, um bestehende Matrizen anzuhängen. Diese Art der Matrixerstellung wird als Verknüpfung bezeichnet. Verknüpfen Sie zum Beispiel zwei Zeilenvektoren, um einen noch längeren Zeilenvektor zu erhalten.

A = ones(1,4);
B = zeros(1,4);
C = [A B]
C = 1×8

     1     1     1     1     0     0     0     0

Verwenden Sie das Semikolon, um A und B als zwei Zeilen einer Matrix anzuordnen.

D = [A; B]
D = 2×4

     1     1     1     1
     0     0     0     0

Um mehrere Matrizen zu verknüpfen, muss ihre Größe kompatibel sein. Mit anderen Worten: Wenn Sie Matrizen horizontal verknüpfen, müssen sie die gleiche Anzahl von Zeilen haben. Wenn Sie sie vertikal verknüpfen, müssen sie die gleiche Anzahl von Spalten haben.

Erstellen Sie zum Beispiel zwei Matrizen, die beide zwei Zeilen haben. Hängen Sie die zweite Matrix mithilfe eckiger Klammern horizontal an die erste an.

A = ones(2,3)
A = 2×3

     1     1     1
     1     1     1

B = zeros(2,2)
B = 2×2

     0     0
     0     0

C = [A B]
C = 2×5

     1     1     1     0     0
     1     1     1     0     0

Eine andere Möglichkeit der Verknüpfung kompatibler Matrizen ist die Verwendung von Verknüpfungsfunktionen wie horzcat, vertcat und cat. Hängen Sie mit horzcat die zweite Matrix horizontal an die erste an.

D = horzcat(A,B)
D = 2×5

     1     1     1     0     0
     1     1     1     0     0

Erzeugen einer numerischen Zahlenfolge

colon ist eine praktische Methode, um Matrizen zu erstellen, deren Elemente aufeinander folgen und gleichmäßig verteilt sind. Erstellen Sie zum Beispiel einen Zeilenvektor, dessen Elemente die ganzen Zahlen von 1 bis 10 sind.

A = 1:10
A = 1×10

     1     2     3     4     5     6     7     8     9    10

Sie können den Doppelpunkt-Operator verwenden, um eine Folge von Zahlen innerhalb eines beliebigen Bereichs zu erstellen, die um eins erhöht werden.

A = -2.5:2.5
A = 1×6

   -2.5000   -1.5000   -0.5000    0.5000    1.5000    2.5000

Geben Sie zur Änderung der Schrittweite der Zahlenfolge den Inkrementwert getrennt durch Doppelpunkte zwischen den Anfangs- und Endwerten des Bereichs an.

A = 0:2:10
A = 1×6

     0     2     4     6     8    10

Verwenden Sie eine negative Zahl, wenn die Folge absteigend sein soll.

A = 6:-1:0
A = 1×7

     6     5     4     3     2     1     0

Das Inkrement kann auch einen nicht-ganzzahligen Wert haben. Wenn ein Inkrementwert den angegebenen Bereich nicht gleichmäßig aufteilt, beendet MATLAB die Folge automatisch beim letzten Wert, der noch innerhalb des Bereiches liegt.

A = 1:0.2:2.1
A = 1×6

    1.0000    1.2000    1.4000    1.6000    1.8000    2.0000

Erweitern einer Matrix

Sie können ein oder mehrere Elemente zu einer Matrix hinzufügen, indem Sie sie außerhalb der bestehenden Zeilen- und Spaltenindexgrenzen platzieren. MATLAB füllt die Matrix automatisch mit Nullen auf, damit sie rechteckig bleibt. Erstellen Sie zum Beispiel eine 2×3-Matrix und fügen Sie eine zusätzliche Zeile und Spalte hinzu, indem Sie ein Element an der Position (3,4) einfügen.

A = [10  20  30; 60  70  80]
A = 2×3

    10    20    30
    60    70    80

A(3,4) = 1 
A = 3×4

    10    20    30     0
    60    70    80     0
     0     0     0     1

Sie können die Größe auch erhöhen, indem Sie eine neue Matrix außerhalb der bestehenden Indexbereiche einfügen.

A(4:5,5:6) = [2 3; 4 5]
A = 5×6

    10    20    30     0     0     0
    60    70    80     0     0     0
     0     0     0     1     0     0
     0     0     0     0     2     3
     0     0     0     0     4     5

Wenn Sie die Größe einer Matrix wiederholt erweitern möchten, z. B. innerhalb einer for-Schleife, empfiehlt es sich, Platz für die größte Matrix vorzubelegen, die Sie voraussichtlich erstellen werden. Ohne Vorbelegung muss MATLAB jedes Mal, wenn die Größe zunimmt, Speicher zuweisen, was die Abläufe verlangsamt. Belegen Sie beispielsweise eine Matrix mit bis zu 10.000 Zeilen und 10.000 Spalten vor, indem Sie ihre Elemente mit null initialisieren.

A = zeros(10000,10000);

Wenn Sie später zusätzliche Elemente vorbelegen müssen, können Sie die Matrix erweitern, indem Sie sie außerhalb der Matrix-Indexbereiche zuweisen oder eine andere bereits vorbelegte Matrix mit A verknüpfen.

Leere Arrays

Ein leeres Array in MATLAB ist ein Array mit mindestens einer Dimension, deren Länge gleich null ist. Leere Arrays sind nützlich, um das Konzept des „Nichts“ programmatisch darzustellen. Nehmen wir zum Beispiel an, Sie möchten alle Elemente eines Vektors finden, die kleiner als 0 sind, aber es gibt keine. Die Funktion find gibt einen leeren Vektor von Indizes zurück und zeigt damit an, dass sie keine Elemente kleiner als 0 gefunden hat.

A = [1 2 3 4];
ind = find(A<0)
ind =

  1×0 empty double row vector

Viele Algorithmen enthalten Funktionsaufrufe, die leere Arrays zurückgeben können. Es ist oft sinnvoll, leere Arrays als Funktionsargumente durch diese Algorithmen fließen zu lassen, anstatt sie als Sonderfall zu behandeln. Wenn Sie die Handhabung leerer Arrays anpassen müssen, können Sie diese mit der Funktion isempty überprüfen.

TF = isempty(ind)
TF = logical
   1

Siehe auch

Themen