Eigen Matrix<double, Eigen::Dynamic, Eigen::Dynamic>如何简写
时间: 2023-07-13 17:35:05 浏览: 66
可以使用Eigen中的typedef或using来简化Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>的定义。以下是两种常用的简化方式:
1. 使用typedef
```
#include <Eigen/Dense>
typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> MatrixXd;
```
这样,以后就可以用MatrixXd来代替Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>了。
2. 使用using
```
#include <Eigen/Dense>
using MatrixXd = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>;
```
这样,也可以用MatrixXd来代替Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>。
无论是使用typedef还是using方式,都可以大大简化代码,提高可读性。
相关问题
Matrix<float, Eigen::Dynamic, Eigen::Dynamic> aa = Map<Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>(H,num,num);
这段代码使用Eigen库中的Matrix类创建了一个名为"aa"的矩阵对象。
Matrix<float, Eigen::Dynamic, Eigen::Dynamic>表示一个动态大小的浮点数矩阵,其中Eigen::Dynamic用于指示矩阵的行数和列数可以在运行时确定。
Map<Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>是Eigen库中的一种特殊映射方式,它允许将现有的内存块映射为Eigen矩阵。在这里,它用于将二维数组H映射为矩阵"aa"。
H是一个二维数组,它包含了相似性矩阵的值。num是相似性矩阵的维度,它表示矩阵的行数和列数。
通过Map映射,将H的值传递给aa,从而创建了一个与H具有相同元素的Eigen矩阵对象aa。
需要注意的是,映射时使用了Eigen::RowMajor参数,这表示矩阵元素按行存储。这样做是为了与C/C++中的二维数组H的存储方式保持一致。
最终,矩阵aa将被用于进行后续的计算和操作。
std::pair<double, Eigen::Isometry3d>存入vector的定义代码
可以使用以下代码将 `std::pair<double, Eigen::Isometry3d>` 存入 `std::vector`:
```
#include <vector>
#include <utility>
#include <Eigen/Geometry>
int main()
{
std::vector<std::pair<double, Eigen::Isometry3d>> myVector;
// 添加元素
double d = 1.23;
Eigen::Isometry3d iso = Eigen::Isometry3d::Identity();
myVector.push_back(std::make_pair(d, iso));
return 0;
}
```
在这个例子中,我们首先 `#include` 了必要的头文件,然后声明了一个 `std::vector`,其中元素类型为 `std::pair<double, Eigen::Isometry3d>`。我们在向向量中添加元素时使用 `std::make_pair` 函数来创建一个 `std::pair` 对象,并通过 `push_back` 函数将其添加到向量中。