`
zuroc
  • 浏览: 1289968 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

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

阅读更多
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 < M.nc+1; ++i) { w[i] = M.pr[i]; }
  }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics