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

时间:2015-02-02 08:06:11

标签: matlab sparse-matrix

在matlab中我们写道:

H2= H(p==1,:)

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

我如何在itpp中写出来?

1 个答案:

答案 0 :(得分:1)

不是100%熟悉itpp,但我会尝试像

这样的东西
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()的操作。