稀疏矩阵的存储格式 之 CSR/CSC

R是Row,C是Column

以csr为演示

[img]http://zsp.iteye.com/upload/picture/pic/25643/ade3dc1b-a7d9-3b4b-a5d9-1ac4f617ed01.jpg[/img]

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 < M.nc+1; ++i) { w[i] = M.pr[i]; }
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值