gpt4 book ai didi

c++ - Eigen:如何制作矩阵的深层拷贝?

转载 作者:行者123 更新时间:2023-12-01 14:28:28 24 4
gpt4 key购买 nike

使用 Eigen C++ 库,如何制作矩阵的深层拷贝?例如,如果我有:

Eigen::Matrix4f A;
Eigen::Matrix4f B = A;

然后我修改 A ,它也会修改 B .但我要 B原版元素的拷贝 A .我怎样才能得到这个?

最佳答案

请勿使用 auto初始化矩阵时,因为它会使 A = B一个浅拷贝。 auto还会造成其他意想不到的结果 .使用 MatrixXd反而。

#include <iostream>
#include "Eigen/Dense"

using namespace Eigen;

typedef Matrix<double,Dynamic,Dynamic,RowMajor> MyMatrix;

int main()
{
double a[] = {1,2,3,4};
auto M = Map<MyMatrix>(a, 2, 2);
auto G = M;
MatrixXd g = M;
G(0,0) = 0;
std::cout << M << "\n" << std::endl;
std::cout << G << "\n" << std::endl;
std::cout << g << "\n" << std::endl;
}

代码将输出:
0 2
3 4

0 2
3 4

1 2
3 4

关于c++ - Eigen:如何制作矩阵的深层拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231798/

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