Matrici Sparse e loro memorizzazione in MATLAB (CSR, CSC)

Per matrice sparsa si intende una matrice formata da molti elementi nulli. Ne consegue che gli elementi davvero importanti per queste matrici nell’ambito di un’elaborazione numerica sono pochi se raffrontati alle dimensioni della maggior parte dei sistemi in gioco nel mondo reale. Nell’ambito delle matrici sparse distinguiamo sostanzialmente due categorie. Possiamo avere matrici sparse strutturate, ovvero quelle per le quali la disposizione dei relativi elementi non nulli segue delle regole ben precise (matrici tridiagonali, a banda etc.). Simmetricamente è possibile definire matrici sparse non strutturate quelle per le quali la disposizione dei relativi elementi non nulli non segue un criterio preciso. E’ proprio per questa seconda categoria che sono stati introdotti alcuni metodi di memorizzazione particolari che consentono un notevole risparmio di spazio. In particolare se nnz è il numero di elementi non nulli di una matrice sparsa di dimensioni nxn questi metodi consentono di occupare per la memorizzazione della matrice uno spazio di memoria proprio proporzionale a nnz e non al prodotto delle dimensioni. In particolare è possibile distinguere tra formato di memorizzazione CSR, ovvero Compressed Sparse Row Format, e CSC, ovvero Compressed Sparse Column Format. Come si può ben comprendere tali metodi sono duali. Il primo consente di memorizzare gli elementi non nulli per righe, il secondo, invece, per colonne. Il sistema di calcolo MATLAB adopera il metodo CSC per la memorizzazione delle matrici sparse.

Di seguito riporto il link all’archivio contenente gli elaborati prodotti riguardo questo argomento per l’esame di Calcolo Numerico 2 con riferimento alla versione r2007b dell’ambiente di calcolo MATLAB:

[dm]2[/dm]

Leave a Reply