首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在itpp中向稀疏矩阵添加行

如何在itpp中向稀疏矩阵添加行
EN

Stack Overflow用户
提问于 2015-02-02 16:06:11
回答 1查看 61关注 0票数 0

在matlab中,我们写道:

代码语言:javascript
复制
H2= H(p==1,:)

其中H2和H是稀疏双矩阵,p是逻辑向量。

我如何用itpp编写它

EN

回答 1

Stack Overflow用户

发布于 2015-02-02 17:41:03

不是100%熟悉itpp,但我会尝试如下所示

代码语言:javascript
复制
int h = 0, w = H.cols();
// count number of set elements in p to get number of rows of H2
for ( int i = 0 ; i < p.length() ; i++ ) {
    h += (p[i] == 1);
}
// alocate H2
H2 = Sparse_Mat( h, w, H.nnz() ); // estimate number of nonzeros in H2
// copy the relevant elements
for ( int i = 0, i2 = 0 ; i < p.length() && i2 < h  ; i++ ) {
    if ( p[i] != 1 ) {
       continue;
    }
    H2.set_submatrix( i2, 0, H.get_submatrix( i, i+1, 0, w ).full() );
    i2++;
}

显然,使用get_colset_col处理稀疏列要容易得多,因此可以考虑先转置H,然后再执行返回H2.transpose()的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28273362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档