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