Arrays bzw. Matrizen können auf vielfältige Weise erzeugt werden:
Die explizite Eingabe einer beliebigen Matrix (hier z.B. eines magisches Quadrats),
A = [16,3,2,13; 5,10,11,8; 9,6,7,12; 4,15,14,1]wobei hier eine Zuweisung der Werte auf eine Variable mit dem Namen
A
erfolgt.
Man muss dabei folgende Regeln beachten:
[]
gestellt.
Op. | Alt. | Befehl | Resultat | Bedingung |
J:K |
J:1:K |
colon(J,K) |
[J, J+1, ..., K] |
K>=J |
J:K |
J:1:K |
colon(J,K) |
[] |
K<J |
J:D:K |
colon(J,D,K) |
[J, J+D, ..., J+m*D] |
K>=J & D>0 | |
J:D:K |
colon(J,D,K) |
[J, J+D, ..., J+m*D] |
K<=J & D<0 | |
J:D:K |
colon(J,D,K) |
[] |
K<J & D>0 | |
J:D:K |
colon(J,D,K) |
[] |
K>J & D<0 | |
J:D:K |
colon(J,D,K) |
[] |
D=0 |
m = fix((K-J)/D)
, Umwandlung in ganze Zahlen durch Abschneiden.
[]
.
&
.
MATLAB EXAMPLE: | |
---|---|
X = 1:5 1 2 3 4 5 X = 1:2:5 1 3 5 X = 1:-2:5 Empty matrix: [] X = 5:-2:1 5 3 1 X = 5:2:1 Empty matrix: [] |
Der Befehl colon
bzw. der
Operator :
Einige gültige und ungültige Beispiele für die Doppelpunkt Notation. |
zeros(m) | Erzeugt eine mm Nullmatrix |
zeros(m,n) | Erzeugt eine mn Nullmatrix |
ones(m) | Erzeugt eine mm Matrix mit lauter Einsen |
ones(m,n) | Erzeugt eine mn Matrix mit lauter Einsen |
eye(m) | Erzeugt eine mm Einheitsmatrix |
eye(m,n) | Erzeugt eine mn Einheitsmatrix |
linspace(a,b,n) | Erzeugt Zeilenvektor mit n äquidistanten Werten von a bis b. |
logspace(a,b,n) | Erzeugt Zeilenvektor mit n Werten von 10 bis 10 mit logarithmisch äquidistantem Abstand. |
rand(m) | Erzeugt eine mm Zufallsmatrix (gleichverteilt aus [0,1]) |
rand(m,n) | Erzeugt eine mn Zufallsmatrix (gleichverteilt aus [0,1]) |
randn(m) | Erzeugt eine mm Zufallsmatrix (normalverteilt) |
randn(m,n) | Erzeugt eine mn Zufallsmatrix (normalverteilt) |
diag(v,k) | v Vektor, k Skalar. Erzeugt eine Matrix mit lauter Nullen, außer auf der k-ten Nebendiagonale, die mit den Werten von v gefüllt wird. k = 0 ist die Hauptdiagonale, k0 darüber, k0 darunter. Für k=0 kann man auch diag(v) schreiben. |
diag(m,k) | m Matrix. Extrahiert die k-te Nebendiagonale. (k siehe oben). |
triu(m) | Extrahiert oberes Dreieck aus der Matrix m. |
triu(m,k) | Extrahiert Dreieck oberhalb der Nebendiagonale k aus der Matrix m. (k siehe oben). |
tril(m) | Extrahiert unteres Dreieck aus der Matrix m. |
tril(m,k) | Extrahiert Dreieck unterhalb der Nebendiagonale k aus der Matrix m. (k siehe oben). |
blkdiag(a,b,) | Erzeugt eine blockdiagonale Matrix. a,b, sind Matrizen. |
repmat(a,m,n) | Erzeugt aus einer Matrix a eine neue Matrix durch Replikation in Zeilenrichtung (m-mal) und Spaltenrichtung (n-mal). |
Mit Hilfe des Befehls [z,s]=meshgrid(v1,v2) ist es sehr leicht zwei gleich große Matrizen zu erzeugen. Sind die beiden Vektoren v1 und v2 z.B. die Vektoren 1:n und 1:m, dann ergeben sich folgende Matrizen:
Die Variablen m und n müssen dabei vorher definiert werden. Analog kann das natürlich mit allen anderen Vektoren ausgeführt werden. Die so erhaltenen Matrizen eignen sich bestens zum Kombinieren.
Mit dem Befehl v = z + 100*s erhält man sofort folgende Matrix:
Die Form des Aufrufs ist D = load('d.dat'), wobei hier 'd.dat' für eine Zeichenkette mit dem Filenamen steht. Das Gegenstück zum Speichern von lesbaren Daten ist save. Dieser Befehl wird in folgender Form verwendet: save('d.dat','D','-ascii')
Eine detailierte Beschreibung von Schreibe- und Leseroutinen folgt in einem späteren Kapitel.
Winfried Kernbichler 2005-04-26