【问题标题】:Eigen initialize from Matrix从矩阵初始化特征
【发布时间】:2016-05-15 06:19:32
【问题描述】:

我目前正在使用 C++ 中的 Eigen,但有一些关于初始化的问题我找不到答案。

是否可以使用另一个相同大小的动态矩阵来初始化动态矩阵:

MyClass::MyClass(Eigen::Matrix<T, Eigen::Dynamic, Eigen Dynamic> sourceMatrix)
{
    Eigen::Matrix<T, Eigen::Dynamic, Eigen Dynamic> destMatrix(sourceMatrix)
}

上面似乎可以编译,但我的项目目前充满了其他编译​​错误,所以我无法测试它,我想在使用它之前确定它会做什么。这会使destMatrix 成为sourceMatrix 的深层副本吗?还是浅拷贝?

和做有什么不同:

MyClass::MyClass(Eigen::Matrix<T, Eigen::Dynamic, Eigen Dynamic> sourceMatrix)
{
    Eigen::Matrix<T, Eigen::Dynamic, Eigen Dynamic> destMatrix(sourceMatrix.data())
}

【问题讨论】:

    标签: c++ matrix eigen


    【解决方案1】:

    它会做一个深拷贝,sourceMatrix 也应该被声明为一个常量引用。如果你想要一个浅拷贝,那么你必须使用 Ref 对象明确地请求它:

    Ref<MatrixXd> dest(source);
    

    有关更多详细信息和示例,请参阅Eigen::Ref 的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多