Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 特征库:将SparseMatrix*行*中的所有非零元素设置为零_C++_Matlab_Matrix_Sparse Matrix_Eigen - Fatal编程技术网

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

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的内容是

对于MATLAB中的矩阵a和行“i”,我将执行以下操作:

A(i,:) = zeros(size(A(i,:));
一个愚蠢的方法是遍历整行并将非零值设置为零。这是不合适的,因为我在这里处理的是200000多个巨大的矩阵列

有没有一种简单快捷的方法可以做到这一点?我在Eigen中使用SparseMatrix类。我还知道每行最多有3个非零值。我不知道在哪里

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


下面关于StackOverflow的内容是相关的,但不幸的是没有答案。

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

A.row(i).setZero();

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

我不清楚您想要的是什么。matlab代码是密集的,而不是稀疏的。如果您知道每行最多有3个非零,是否要准备一个稀疏矩阵以避免以后的插入成本?