答案 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_col
和set_col
可以更轻松地使用稀疏列,因此您可以考虑首先转置H
,然后执行返回H2.transpose()
的操作。