特征库:将SparseMatrix * Row *中的所有非零元素设置为零

时间:2015-06-24 16:25:06

标签: c++ matlab matrix sparse-matrix eigen

对于MATLAB中的矩阵A和行'i',我将执行以下操作:

A(i,:) = zeros(size(A(i,:));

执行相同操作的一种愚蠢方法是迭代整行并将非零值设置为零。这不合适,因为我在这里使用大型矩阵(200,000+列)。

有一种简单快捷的方法吗?我在Eigen中使用SparseMatrix类。我也知道每行最多有3个非零值。我不知道在哪里。

我需要这个来用新值编辑矩阵中的几个行。我的想法是,我首先将整行设为零,然后将我的值分配给同一行中的某些元素。

StackOverflow上的以下question是相关的,但遗憾的是没有答案。

1 个答案:

答案 0 :(得分:0)

上面的Matlab代码的等价物可以使用setZero函数实现,如下所示:

A.row(i).setZero();

请注意,这适用于密集矩阵,而不是稀疏矩阵。如果您希望大小是动态的,建议使用MatrixXd类。