0

Obwohl ich C verwende, sind die Programmiersprache und der Code irrelevant.Wie kann ich eine symmetrische Matrix im CSR-Format darstellen?

Ich möchte eine symmetrische Matrix im CSR-Format für schnelle Matrix-Vektor-Produkt darstellen.

Der Eingangsstrom, von dem ich gelesen habe, gibt nur den oberen dreieckigen Teil der Matrix an, Zahl für Zahl, von links nach rechts, Reihe für Reihe.

Beispiel:

0 2 3 5 
2 0 1 4 
3 1 0 9 
5 4 9 0 

Eingangsstrom:

0 2 3 5 0 1 4 0 9 0 

Wenn ich von einer regulären Matrix aufzubauen waren, sagen wir, zweidimensionalen Anordnung, wäre es einfach sein. Alles, was ich brauche, sind die Daten, die ich bekomme. Dies ist bei einer CSR-Darstellung nicht der Fall.

+0

Eine Idee, die ich habe, ist die Transponierung der oberen Dreiecksmatrix zu erstellen. Ich würde keine Effizienz verlieren, während ich das Matrix-Vektor-Produkt mache. –

Antwort

0

Alles, was ich tun musste, war die Matrix in CSR zu transponieren. Auf diese Weise ist das Matrix-Vektor-Produkt immer noch effizient und einfach zu implementieren.

Der Aufbau der Transponierung kostet viel Zeit und verdoppelt auch die Speichernutzung.

Das ist die beste Idee, die ich haben könnte. Ich schätze andere.

Verwandte Themen