|
[Home] [Lexikon] [Aufgaben] [Tests] [Kurse] [Begleitmaterial] [Hinweise] [Mitwirkende] [Publikationen] |
|
Mathematik-Online-Kurs: MATLAB - Weitere Datentypen | |
Dünn besetzte Matrizen |
| [vorangehende Seite] [nachfolgende Seite] | [Gesamtverzeichnis][Seitenübersicht] |
Beispiel einer dünn besetzten
-Matrix mit einem Belegungsgrad
von ca. 5%:
>> S=sprand(10,10,.05)
S =
(7,2) 0.8699
(9,4) 0.4442
(5,5) 0.1472
(1,9) 0.9566
(8,9) 0.7694
>> whos S
Name Size Bytes Class
S 10x10 104 double array (sparse)
Grand total is 5 elements using 104 bytes
Spezielle Funktionen zur Behandlung dünn besetzter Matrizen sind unter anderem:
Eine Übersicht der für Sparse-Matrizen verfügbaren Befehle kann mittels
Erzeugung/Manipulation von Sparse-Matrizen sparse, full Konvertierung zwischen dünn und voll besetzten Matrizen speye, spdiags Einheits-/Diagonalmatrizen im Sparse-Format sprand, sprandn Sparse-Matrizen mit Pseudo-Zufallszahlen nonzeros, nnz Ausgabe der von 0 verschiedenen Elemente bzw. deren Anzahl spy Grafische Anzeige der Belegungsstruktur Funktionen für Sparse-Matrizen eigs, svds Bestimmung einiger Eigen- bzw. Singulärwerte normest, condest Norm- bzw. Konditionsschätzer pcg, minres Iterative Löser für dünnbesetzte Systeme
matlab/sparfun
angezeigt werden.
Download:
| ( .m, | 579 , | 27.03.2007) |
>> A=sprand(100,100,.1); B=sprand(100,100,.2); C=sprand(100,100,.3); >> spy(B)werden zunächst die drei dünn besetzten
spy(B) dargestellte Belegungsstruktur der Matrix B:
Rechnen mit Sparse-Matrizen:
>> M=(A+B)*C;
>> nnz(M)
ans =
9992
>> F=full(M);
>> whos
Name Size Bytes Class
A 100x100 11900 double array (sparse)
B 100x100 22100 double array (sparse)
C 100x100 31688 double array (sparse)
F 100x100 80000 double array
M 100x100 120404 double array (sparse)
ans 1x1 8 double array
Grand total is 25374 elements using 266100 bytes
Verknüpfungen von Sparse-Matrizen (wie bei der Berechnung von M) ergeben
wiederum Sparse-Matrizen. Dabei ist jedoch darauf zu achten, dass der
Belegungsgrad steigen und die Verwendung des Sparse-Formats damit ggf.
ineffizient sein kann. In dem betrachteten Beispiel ist M aufgrund der
9992 von 0 verschiedenen Elemente nahezu vollbesetzt und benötigt gegenüber
der in F gespeicherten Variante im double array Format rund 50% mehr
Speicherplatz.
Wie das nachfolgende Beispiel zeigt, enstehen bei der Verknüpfung von Matrizen im dünn- und vollbesetzten Format stets vollbesetzte Ergebnismatrizen:
>> X=C-F;
>> whos X
Name Size Bytes Class
X 100x100 80000 double array
Grand total is 10000 elements using 80000 bytes
| [vorangehende Seite] [nachfolgende Seite] | [Gesamtverzeichnis][Seitenübersicht] |
| automatisch erstellt am 5.2.2008 |