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 m |
| zeros(m,n) | Erzeugt eine m |
| ones(m) | Erzeugt eine m |
| ones(m,n) | Erzeugt eine m |
| eye(m) | Erzeugt eine m |
| eye(m,n) | Erzeugt eine m |
| 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 |
| rand(m) | Erzeugt eine m |
| rand(m,n) | Erzeugt eine m |
| randn(m) | Erzeugt eine m |
| randn(m,n) | Erzeugt eine m |
| diag(v,k) | v 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, k Für k=0 kann man auch diag(v) schreiben. |
| diag(m,k) | m |
| 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, |
| 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