HOWTO · MATLAB

MATLAB norm()-Funktion

Mit `norm()` in MATLAB lässt sich bei einem Vektor die euklidische Norm berechnen; die Frobeniusnorm wird für eine Matrix ausdrücklich mit der Option `"fro"` angefordert.

Auf dieser Seite

MATLAB norm() berechnet die Größe eines Vektors oder einer Matrix. Der Standard hängt von der Eingabe ab: Bei einem Vektor wird die 2-Norm verwendet, bei einer Matrix die Matrix-2-Norm, auch Spektralnorm genannt. Wählen Sie eine bestimmte Ordnung oder Option, wenn Sie ein anderes Maß benötigen. Für Normen einzelner Zeilen oder Spalten verwenden Sie vecnorm().

MATLAB norm(): Syntax und Standardverhalten

Verwenden Sie n = norm(X) für den Standardwert, n = norm(X,p) zur Auswahl einer Ordnung oder n = norm(X,"fro"), um die Frobeniusnorm einer Matrix anzufordern. X ist der Eingabevektor oder die Eingabematrix. Die Bedeutung von p hängt davon ab, ob X ein Vektor oder eine Matrix ist. Dieselbe Ordnung bezeichnet daher nicht immer dieselbe Berechnung.

Für einen Vektor entspricht norm(v) dem Aufruf norm(v,2). Für eine Matrix entspricht norm(A) dem Aufruf norm(A,2): Das Ergebnis ist der größte Singulärwert und nicht die Frobeniusnorm. Die Frobeniusnorm wird ausdrücklich mit "fro" ausgewählt.

Eine Vektornorm auswählen

Für einen Vektor v ist die p-Norm bei positivem, endlichem p die p-te Wurzel aus der Summe der Beträge seiner Elemente, jeweils potenziert mit p. Häufige Optionen sind norm(v,1), die Summe der Beträge; norm(v,2), die euklidische Länge; und norm(v,Inf), der größte Elementbetrag. Wird p weggelassen, wird die 2-Norm verwendet.

Verwenden Sie die 1-Norm, wenn die gesamte absolute Größe relevant ist, die 2-Norm für die euklidische Länge oder die Unendlichkeitsnorm, wenn die größte Komponente den Maßstab bestimmt. Diese Normen fassen denselben Vektor unterschiedlich zusammen. Wählen Sie daher die Norm passend zu Ihrer Berechnung. Ein Vektor mit den Komponenten 3 und 4 hat beispielsweise die 1-Norm 7, die 2-Norm 5 und die Unendlichkeitsnorm 4.

Eine Matrixnorm auswählen

Für eine Matrix A unterstützt MATLAB mit norm(A,p) die 1-, 2- und Unendlichkeitsnorm; ihre Definitionen unterscheiden sich von denen für Vektoren. Die Matrix-1-Norm ist die maximale absolute Spaltensumme. Die Matrix-2-Norm ist der größte Singulärwert und der Standardwert. Die Matrix-Unendlichkeitsnorm ist die maximale absolute Zeilensumme. Verwenden Sie norm(A,"fro") für die Frobeniusnorm, also die Quadratwurzel aus der Summe der quadrierten Beträge aller Matrixelemente.

Für A = [1 2; 3 4] beträgt die 1-Norm beispielsweise 6 und die Unendlichkeitsnorm 7. Die Frobeniusnorm ist die Quadratwurzel aus 30, während die 2-Norm dem größten Singulärwert entspricht (ungefähr 5.465). Leiten Sie die Frobeniusnorm einer Matrix nicht aus norm(A) ab, sondern fordern Sie sie mit "fro" an.

Ein Beispiel ausführen und die Ergebnisse lesen

Führen Sie dieses Beispiel aus:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

v = [3 4];
A = [1 2; 3 4];
fprintf('vector 2-norm: %.1f\n', norm(v));
fprintf('matrix default (2-norm): %.4f\n', norm(A));
fprintf('matrix 1-norm: %.1f\n', norm(A, 1));
fprintf('matrix infinity-norm: %.1f\n', norm(A, Inf));
fprintf('matrix Frobenius norm: %.4f\n', norm(A, "fro"));
vector 2-norm: 5.0
matrix default (2-norm): 5.4650
matrix 1-norm: 6.0
matrix infinity-norm: 7.0
matrix Frobenius norm: 5.4772

Das Vektorergebnis ist seine euklidische Länge. Bei der Matrix liefern der Standardaufruf und die ausdrücklich angegebene Ordnung 2 beide die Spektralnorm. Die übrigen Zeilen zeigen die maximale Spaltensumme, die maximale Zeilensumme und die ausdrücklich angeforderte Frobeniusnorm. An den Werten lässt sich erkennen, welche Definition eine Berechnung verwendet.

Normen entlang von Zeilen oder Spalten mit vecnorm() berechnen

norm() liefert eine Norm für die gesamte Eingabe. Um eine eigene Norm für jede Spalte oder Zeile zu erhalten, verwenden Sie vecnorm(X,p,dim). Das Argument dim gibt die Dimension an, entlang derer die Berechnung erfolgt. Bei einer zweidimensionalen Matrix verarbeitet Dimension 1 jede Spalte von oben nach unten und liefert einen Wert pro Spalte; Dimension 2 verarbeitet jede Zeile und liefert einen Wert pro Zeile. Wird vecnorm() ohne dim aufgerufen, verwendet die Funktion die erste Dimension mit mehr als einem Element. Bei einer gewöhnlichen Matrix sind das die Spalten.

Verwenden Sie zum Beispiel vecnorm(A,2,1) für die 2-Norm jeder Spalte und vecnorm(A,2,2) für die 2-Norm jeder Zeile. Für die Berechnung entlang einer Dimension ist diese Funktion vorgesehen; ein Dimensionsargument an norm() anzuhängen, fordert keine zeilen- oder spaltenweisen Normen an. Wählen Sie norm() für ein einzelnes Maß des gesamten Vektors oder der gesamten Matrix und vecnorm(), wenn das Ergebnis eine Norm für jeden Ausschnitt entlang einer Dimension enthalten soll.