C++ 特征库:将SparseMatrix*行*中的所有非零元素设置为零
对于MATLAB中的矩阵a和行“i”,我将执行以下操作:C++ 特征库:将SparseMatrix*行*中的所有非零元素设置为零,c++,matlab,matrix,sparse-matrix,eigen,C++,Matlab,Matrix,Sparse Matrix,Eigen,对于MATLAB中的矩阵a和行“i”,我将执行以下操作: A(i,:) = zeros(size(A(i,:)); 一个愚蠢的方法是遍历整行并将非零值设置为零。这是不合适的,因为我在这里处理的是200000多个巨大的矩阵列 有没有一种简单快捷的方法可以做到这一点?我在Eigen中使用SparseMatrix类。我还知道每行最多有3个非零值。我不知道在哪里 我需要它来用新值编辑矩阵中的几行。我的想法是,首先将整行设为零,然后将值分配给同一行上的某些元素 下面关于StackOverflow的内容是
A(i,:) = zeros(size(A(i,:));
一个愚蠢的方法是遍历整行并将非零值设置为零。这是不合适的,因为我在这里处理的是200000多个巨大的矩阵列
有没有一种简单快捷的方法可以做到这一点?我在Eigen中使用SparseMatrix类。我还知道每行最多有3个非零值。我不知道在哪里
我需要它来用新值编辑矩阵中的几行。我的想法是,首先将整行设为零,然后将值分配给同一行上的某些元素
下面关于StackOverflow的内容是相关的,但不幸的是没有答案。可以使用setZero函数实现上述Matlab代码的等价物,如下所示:
A.row(i).setZero();
请注意,这适用于密集矩阵,而不是稀疏矩阵。如果您希望大小是动态的,建议使用MatrixXd类。我不清楚您想要的是什么。matlab代码是密集的,而不是稀疏的。如果您知道每行最多有3个非零,是否要准备一个稀疏矩阵以避免以后的插入成本?