一、matlab稀疏矩陣使用的數據結構
Matlab中的稀疏矩陣(sparse matrix)使用的是壓縮列(Compressed Column)存儲方式,也叫CCS存儲方式,它是一種緊湊的存儲方式,適用于存儲大規模的稀疏矩陣。
CCS存儲方式是按照列來存儲非零元素的值和它們對應的行下標的一種方式。具體來說,CCS存儲方式使用三個數組來表示一個稀疏矩陣:
非零元素值數組(Values array):按照列的順序存儲所有非零元素的值。行下標數組(Row index array):按照列的順序存儲所有非零元素的行下標。列偏移數組(Column offset array):按照列的順序存儲所有非零元素值和行下標數組的起始位置,它的長度比列數多1。在CCS存儲方式中,一個稀疏矩陣的大小為 $m\times n$,非零元素的個數為 $p$,則Values數組和Row index數組的長度為$p$,Column offset數組的長度為$n+1$。對于一個稀疏矩陣中的第 $j$ 列,非零元素的值和行下標存儲在Values數組和Row index數組的 $k$ 和 $k+1$ 位置上,其中$k$為Column offset數組中第 $j$ 列的位置。
CCS存儲方式的優點是在存儲稀疏矩陣時可以充分利用非零元素的位置信息,使得存儲空間和計算時間大大降低,適用于大規模的稀疏矩陣計算。在Matlab中,當一個矩陣中非零元素的比例小于0.05時,該矩陣會被認為是稀疏矩陣,并使用CCS存儲方式來存儲。