Kompatible Arraygrößen für Basisoperationen
Die meisten binären Operatoren und Funktionen (mit zwei Eingaben) in MATLAB® unterstützen numerische Arrays mit kompatiblen Größen. Die Größen zweier Eingaben sind dann kompatibel, wenn für jede Dimension die Dimensionsgrößen der Eingaben identisch sind oder eine von ihnen 1 ist. In den einfachsten Fällen sind zwei Arraygrößen dann kompatibel, wenn sie exakt identisch sind oder wenn eine Eingabe ein Skalar ist. Im Rahmen der Ausführung der elementweisen Operation oder Funktion erweitert MATLAB Arrays mit kompatiblen Größen implizit auf dieselbe Größe.
Eingaben mit kompatiblen Größen
2D-Eingaben
Im Folgenden finden Sie bestimmte Kombinationen aus Skalaren, Vektoren und Matrizen mit kompatiblen Größen:
Zwei Eingaben, die exakt gleich groß sind.
Eine der Eingaben ist ein Skalar.
Die eine Eingabe ist eine Matrix und die andere Eingabe ist ein Spaltenvektor mit derselben Anzahl von Zeilen.
Die eine Eingabe ist ein Spaltenvektor und die andere Eingabe ist ein Zeilenvektor.
Mehrdimensionale Arrays
Jedes Array in MATLAB hat nachgeordnete Dimensionen der Größe 1. Für mehrdimensionale Arrays bedeutet dies, dass eine 3x4-Matrix dasselbe ist wie eine Matrix der Größe 3x4x1x1x1. Beispiele für mehrdimensionale Arrays mit kompatiblen Größen sind:
Die eine Eingabe ist eine Matrix und die andere Eingabe ist ein 3D-Array mit derselben Anzahl von Zeilen und Spalten.
Die eine Eingabe ist eine Matrix und die andere Eingabe ist ein 3D-Array. Alle Dimensionen sind identisch oder eine von ihnen ist 1.
Leere Arrays
Für leere Arrays oder Arrays mit einer Dimension der Größe null gelten dieselben Regeln. Die Größe der Dimension, die nicht gleich 1 ist, bestimmt die Größe der Ausgabe. Dies bedeutet, dass Dimensionen der Größe null in einem Paar mit einer Dimension der Größe 1 oder 0 im jeweils anderen Array verwendet werden müssen und dass die Ausgabe die Dimensionsgröße 0 hat.
A: 1-by-0 B: 3-by-1 Result: 3-by-0
Eingaben mit inkompatiblen Größen
Inkompatible Eingaben haben Größen, die nicht implizit auf dieselbe Größe erweitert werden können. Beispiel:
Die Dimensionsgrößen sind nicht gleich und keine der beiden ist 1.
A: 3-by-2 B: 4-by-2
Zwei nichtskalare Zeilenvektoren mit Längen, die nicht identisch sind.
A: 1-by-3 B: 1-by-4
Beispiele
Subtrahieren eines Vektors von einer Matrix
Um Vektor-Matrix-Operationen zu vereinfachen, verwenden Sie die implizite Expansion mit Dimensionsfunktionen, wie zum Beispiel sum
, mean
, min
usw.
Zum Beispiel können Sie den Mittelwert jeder Spalte in einer Matrix berechnen und dann den Mittelwert von jedem Element subtrahieren.
A = magic(3)
A = 8 1 6 3 5 7 4 9 2
C = mean(A)
C = 5 5 5
A - C
ans = 3 -4 1 -2 0 2 -1 4 -3
Hinzufügen eines Zeilen- und eines Spaltenvektors
Die Größen von Zeilen- und Spaltenvektoren sind kompatibel, und wenn Sie eine Operation an ihnen ausführen, dann ist das Ergebnis eine Matrix.
Zum Beispiel können Sie einen Zeilen- und einen Spaltenvektor hinzufügen. Das Ergebnis ist mit bsxfun(@plus,a,b)
identisch.
a = [1 2 3 4]
ans = 1 2 3 4
b = [5; 6; 7]
ans = 5 6 7
a + b
ans = 6 7 8 9 7 8 9 10 8 9 10 11