Viele Befehle haben als Inputparameter eine Matrix und liefern eine (im Allgemeinen nicht unbedingt gleich große) Matrix zurück. (Zur Erinnerung: Spalten- bzw. Zeilenvektoren werden ebenfalls als Matrizen angesehen).
Beispiele dafür sind das Bilden von Summen oder Produkten, oder das Transponieren und Konjugieren. Im Folgenden wurden dafür einige einfache Beispiele zusammengestellt.
Der numerische Inhalt von Matrizen muss nicht nur aus reellen Zahlen bestehen, sondern kann auch komplexe Werte enthalten. Dafür ist keine spezielle Deklaration notwendig, MATLAB führt diese automatisch beim ersten Auftreten von komplexen Elementen in einer Matrix durch.
Die Variablen i oder auch j werden als imaginäre Einheit verwendet, und sollen daher sonst nicht verwendet werden. MATLAB hat keinen effektiven Schutz vor dem Überschreiben von wichtigen Variablen. Die beiden Befehle i=1 und j=1 legen die Fähigkeit von MATLAB lahm, mit komplexen Zahlen zu rechnen.
MATLAB EXAMPLE: | |
---|---|
Einige Befehle stehen in MATLAB zur Verfügung, um Matrizen zu kippen bzw. zu drehen. Außerdem gibt es noch FLIPDIM(X,DIM), für Kippen entlang der Dimension DIM. | |
X = [1 2 3; 4 5 6] 1 2 3 4 5 6 Y=fliplr(X) 3 2 1 6 5 4 Y=flipud(X) 4 5 6 1 2 3 Y=rot90(X) 3 6 2 5 1 4 |
FLIPLR
Flip matrix in left/right direction.
FLIPLR(X) returns X with row preserved and columns flipped in the left/right direction.
FLIPUD
Flip matrix in up/down direction.
ROT90
Rotate matrix 90 degrees.
|
MATLAB EXAMPLE: | |
---|---|
Drei Befehle stehen in MATLAB zur Verfügung, um transponierte, konjugiert komplex transponierte oder konjugiert komplexe Matrizen zu berechnen. | |
X = [1+i 2+i 3+i; 4+i 5+i 6+i] 1 + i 2 + i 3 + i 4 + i 5 + i 6 + i Y=transpose(X) 1 + i 4 + i 2 + i 5 + i 3 + i 6 + i Y=ctranspose(X) 1 - i 4 - i 2 - i 5 - i 3 - i 6 - i Y=conj(X) 1 - i 2 - i 3 - i 4 - i 5 - i 6 - i |
TRANSPOSE
is the non-conjugate transpose.
Operator form:
X.'
is the transpose of X.
CTRANSPOSE
is the complex conjugate transpose.
Operator form:
X'
is the complex conjugate
transpose of X.
CONJ
is the complex conjugate of X.
|
MATLAB EXAMPLE: | |
---|---|
Summation und kummulative Summation in Matrizen. | |
X = [0 1 2; 3 4 5] 0 1 2 3 4 5 Y=sum(X) 3 5 7 Y=sum(X,2) 3 12 Y=cumsum(X) 0 1 2 3 5 7 Y=cumsum(X,2) 0 1 3 3 7 12 |
SUM
Sum of elements.
For vectors, SUM(X) is the sum of the elements of X. For matrices, SUM(X) is a row vector with the sum over each column. For N-D arrays, SUM(X) operates along the first non-singleton dimension.
SUM(X,DIM)
sums along the dimension DIM.
CUMSUM
Cumulative sum of elements. For vectors,
CUMSUM(X)
is a vector containing the cumulative sum of the
elements of X. For matrices, CUMSUM(X)
is a matrix the same
size as X containing the cumulative sums over each column. For N-D arrays,
CUMSUM(X)
operates along the first non-singleton
dimension.
CUMSUM(X,DIM)
works along the dimension DIM.
The first non-singleton dimension is the first dimension which size is greater than one. |
MATLAB EXAMPLE: | |
---|---|
Multiplikation und kummulative Multiplikation in Matrizen. | |
X = [0 1 2; 3 4 5] 0 1 2 3 4 5 Y=prod(X) 0 4 10 Y=prod(X,2) 0 60 Y=cumprod(X) 0 1 2 0 4 10 Y=cumprod(X,2) 0 0 0 3 12 60 |
PROD
Product of elements.
For vectors, PROD(X) is the product of the elements of X. For matrices, PROD(X) is a row vector with the product over each column. For N-D arrays, PROD(X) operates along the first non-singleton dimension.
PROD(X,DIM)
works along the dimension DIM.
CUMPROD
Cumulative product of elements. For vectors,
CUMPROD(X)
is a vector containing the cumulative product
of the elements of X. For matrices, CUMPROD(X)
is a
matrix the same size as X containing the cumulative product over each
column. For N-D arrays, CUMPROD(X)
operates along the
first
non-singleton dimension.
|
Alle Befehle in Matlab, bei denen die Richtung innerhalb der Matrix von Bedeutung ist, wie z.B. der Befehl sum, folgen folgenden Regeln:
Befehle können in MATLAB beliebig geschachtelt werden, solange die Syntax für jeden einzelnen Befehl korrekt ist. So kann man z.B. die Summe über die Diagonale bzw. die zweite Diagonale (links unten bis rechts oben) einer Matrix mit folgenden Befehlen berechnen:
S_D = sum(diag(X))
S_ND = sum(diag(fliplr(X)))
Die große Vielzahl von verfügbaren Befehlen und die Möglichkeit der Schachtelung führt dazu, dass sehr mächtige Programme in sehr kompakter Form geschrieben werden können.
Winfried Kernbichler 2005-04-26