稀疏矩阵的存储格式 之 CSR/CSC - 张沈鹏,在路上... - ITeye技术网站
R是Row,C是Column
以csr为演示
I中每一个元素代表一行,其数值代表该行从J中哪个元素开始.J是列号了
空间 2*nnz+n(因为I==行数,J==2*nnz),nnz是非0元素个数
http://www.cs.utk.edu/~dongarra/etemplates/node373.html
然后可以看看下面的代码有什么bug,我还没有高兴看:)但是一定是有bug的...
template <typename T> static void
gf_spmat_get_data(gmm::csc_matrix_ref<const T*, const unsigned int *, const unsigned int *> M,
getfemint::mexargs_out& out, int which) {
size_type nz = M.jc[M.nc];
if (which == 0) {
iarray w = out.pop().create_iarray_h(unsigned(M.nc+1));
for (unsigned i=0; i < M.nc+1; ++i)
{ w[i] = M.jc[i] + config::base_index(); }
if (out.remaining()) {
w = out.pop().create_iarray_h(unsigned(nz));
for (unsigned i=0; i < nz; ++i)
{ w[i] = M.ir[i] + config::base_index(); }
}
} else {
garray<T> w = out.pop().create_array_h(unsigned(nz), T());
for (unsigned i=0; i <