gpt4 book ai didi

c++ - 如何在使用 Eigen Library c++ 时删除特定行或列

转载 作者:可可西里 更新时间:2023-11-01 16:34:40 25 4
gpt4 key购买 nike

我正在为我的项目使用 Eigen 库。我正在搜索如何从 Eigen 中的给定矩阵中删除特定行或列。我没有成功。

MatrixXd A = X1 X2 X3 X4
Y1 Y2 Y3 Y4
Z1 Z2 Z3 Z4
A1 A2 A3 A4
MatrixXd Atransform = X1 X2 X4
Y1 Y2 Y4
Z1 Z2 Z4
A1 A2 A4
enter code here

除了遍历整个矩阵或对矩阵 A 使用 block 操作。有没有简单的方法。

最佳答案

使用 block 函数更简洁:

void removeRow(Eigen::MatrixXd& matrix, unsigned int rowToRemove)
{
unsigned int numRows = matrix.rows()-1;
unsigned int numCols = matrix.cols();

if( rowToRemove < numRows )
matrix.block(rowToRemove,0,numRows-rowToRemove,numCols) = matrix.block(rowToRemove+1,0,numRows-rowToRemove,numCols);

matrix.conservativeResize(numRows,numCols);
}

void removeColumn(Eigen::MatrixXd& matrix, unsigned int colToRemove)
{
unsigned int numRows = matrix.rows();
unsigned int numCols = matrix.cols()-1;

if( colToRemove < numCols )
matrix.block(0,colToRemove,numRows,numCols-colToRemove) = matrix.block(0,colToRemove+1,numRows,numCols-colToRemove);

matrix.conservativeResize(numRows,numCols);
}

关于c++ - 如何在使用 Eigen Library c++ 时删除特定行或列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13290395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com