[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 -Matrizen A, B und C erzeugt, bei denen rund 10%, 20% bzw. 30% der Elemente von 0 verschieden sind. Das nachfolgende Bild zeigt die mittels
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 bytesVerknü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 |