六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 74|回复: 0

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

[复制链接]

升级  2.8%

158

主题

158

主题

158

主题

进士

Rank: 4

积分
514
 楼主| 发表于 2013-1-27 04:40:40 | 显示全部楼层 |阅读模式
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 = M.jc + config::base_index(); }
    if (out.remaining()) {
      w = out.pop().create_iarray_h(unsigned(nz));
      for (unsigned i=0; i < nz; ++i)
    { w = M.ir + 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 = M.pr; }
  }
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表