eigen :: rowvectorxf的不同初始化是什么? 我正在阅读一些文档,并通过eigen :: rowvectorxf找到了两个不同的初始化和用法。我找不到通过文档的区别,甚至是t ...

问题描述 投票:0回答:1
这里是第二个版本:

Eigen::RowVectorXf
我在文档中找不到对此的任何参考,我不认为它们应该与众不同 - 这只是不弃用的访问功能吗?如果有人可以概述两种情况下要发生的事情,并让我知道两者是否只是创建了一个带有5列的1D矢量,并填充它,我真的很感激。谢谢!

yes,
std::vector<Eigen::RowVectorXf*> V;
std::vector<float> data = {0,1,2,3,4};


V.push_back(new Eigen::RowVectorXf(5));

for (int i = 0; i<5; i++)
     V[0]->coeffRef(1, i) = data[i];

std::vector<Eigen::RowVectorXf*> V; std::vector<float> data = {0,1,2,3,4}; V.push_back(new Eigen::RowVectorXf(1, 5)); for (int i = 0; i<5; i++) V[0]->coeffRef(i) = data[i];

都声明了1x5行矢量。
构造函数均未被弃用。为了澄清,
Eigen::RowVectorXf(5)

只是一个用于

Eigen::RowVectorXf(1, 5)
c++ linear-algebra eigen eigen3
1个回答
1
投票
eigen :: matrixdocument

,矩阵(因此,rowvectorxf)中列出了多个构造函数:


构建器制作大小的行或列向量。调用此构造函数是一个编译错误,该构造函数的矩阵类型在编译时不知道以具有一行或一列。

RowVectorXf
构建器制作一个大小的矩阵
Matrix<float, 1, Dynamic>Matrix(Index dim)

,对于任何矩阵类型,包括rowVectorxf。如您所料,在运行时有一个断言,如果为Rowvectorxf.调用此形式的构造函数。
  • yyes,

    dim

    构造器对RowVectorxf更有用。但是,可以始终使用两个arg构造函数的通用代码中方便。
        
    基于我在
    Matrix(Index rows, Index cols)

    中看到的内容,
  • rows
  • 是矩阵的别名

    cols

    where
    rows
    Matrix(Index dim)
    (f后缀),第二维为
    Martix.h

    在两种情况下,您都在创建同一件事。因为该矢量只是矩阵的一个别名,所以使用2个ARG构造函数,您希望矩阵具有2。我相信,如果您将其他任何内容作为第一个ARG进行的任何其他内容,则会收到一个运行时错误(矩阵构造函数调用
  • RowVectorXf
,没有挖掘此错误,但这似乎是一个运行时参数验证器)。

总结:这两种情况似乎都在做同样的事情,但是我以分析为基础的源代码 - 我对Eigen文档没有很好的经验。

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.