gpt4 book ai didi

c++ - 如何在 Eigen 中获取系数矩阵?

转载 作者:行者123 更新时间:2023-11-30 02:36:32 25 4
gpt4 key购买 nike

好的,所以我想在 Eigen 中执行此操作:

float StartMatrix[7][7] = { { 1, 4, 6, 9, 3, 5, 8 }, { 2, 5, 3, 7, 4, 8, 2 }, { 3, 6, 6, 7, 0, 2, 4 }, 
{ 2, 4, 3, 7, 4, 8, 2 }, { 2, 3, 3, 11, 4, 8, 1 }, { 2, 12, 3, 7, 0, 8, 2 },
{ 2, 2, 3, 4, 4, 11, 2 } };

float TotalMatrix[7] = { 22, 15, 13, 26, 27, 33, 19 };

float CoMatrix[7][7] = { { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0 } };

for (int row = 0; row < 7; row++) {
for (int col = 0; col < 7; col++) {
CoMatrix[row][col] = StartMatrix[row][col] / TotalMatrix[col];
}

}

将每一行仅除以 TotalMatrix 中的列。然后我想从 Eigen 中的 CoMatrix 中减去单位矩阵并得到它的逆矩阵(只是想知道我为什么要这样做)。

问题是,我如何使用 Eigen 执行此操作,或者以某种方式将 CoMatrix 数组放入 Eigen 中的矩阵中,以便我可以用它做一些事情(比如求逆等)。

谢谢!

最佳答案

您在 Eigen 中的代码看起来像这样(导入 Eigen 命名空间后,using namespace Eigen;):

MatrixXd StartMatrix(7, 7);
StartMatrix <<
1, 4, 6, 9, 3, 5, 8, 2, 5, 3, 7, 4, 8, 2, 3, 6, 6, 7, 0, 2, 4,
2, 4, 3, 7, 4, 8, 2, 2, 3, 3, 11, 4, 8, 1, 2, 12, 3, 7, 0, 8, 2,
2, 2, 3, 4, 4, 11, 2;

VectorXd TotalMatrix(7);
TotalMatrix << 22, 15, 13, 26, 27, 33, 19;

MatrixXd CoMatrix = MatrixXd::Zero(StartMatrix.rows(), StartMatrix.cols());

CoMatrix = StartMatrix.array() / (TotalMatrix.replicate(1,StartMatrix.cols())).array();

您可以继续减去单位矩阵

CoMatrix -= MatrixXd::Identity(CoMatrix.rows(), CoMatrix.cols());

或将其与前面的表达式组合为:

CoMatrix = (StartMatrix.array() / (TotalMatrix.replicate(1, StartMatrix.cols())).array()).matrix()
- MatrixXd::Identity(CoMatrix.rows(), CoMatrix.cols());

关于c++ - 如何在 Eigen 中获取系数矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32545309/

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