小编Ree*_*ood的帖子

使用 Eigen::Map<Eigen::MatrixXd> 作为 Eigen::MatrixXd 类型的函数参数

简而言之,问题是如何通过

Eigen::Map<Eigen::MatrixXd>
Run Code Online (Sandbox Code Playgroud)

一个函数的对象,它期望一个

Eigen::MatrixXd
Run Code Online (Sandbox Code Playgroud)

目的。


更长的故事:

我有这个 C++ 函数声明

void npMatrix(const Eigen::MatrixXd &data, Eigen::MatrixXd &result);
Run Code Online (Sandbox Code Playgroud)

连同这个实现

void npMatrix(const Eigen::MatrixXd &data, Eigen::MatrixXd &result)
{
//Just do s.th. with arguments
std::cout << data << std::endl;

result(1,1) = -5;
std::cout << result << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我想使用 numpy.array 作为参数从 python 调用这个函数。为此,我使用了一个用 c++ 编写的包装函数

void pyMatrix(const double* p_data, const int dimData[],
                              double* p_result, const int dimResult[]);
Run Code Online (Sandbox Code Playgroud)

它需要一个指向数据的指针、数据数组的大小、一个指向结果的指针以及结果数组的大小。数据指针指向内存的常量补丁,因为当为结果保留的内存补丁可写时,数据不会被更改。函数的实现

void pyMatrix(const double *p_data, const int dimData[], double *p_result, const int dimResult[])
{
Eigen::Map<const Eigen::MatrixXd> dataMap(p_data, dimData[0], dimData[1]); …
Run Code Online (Sandbox Code Playgroud)

c++ numpy eigen3

10
推荐指数
1
解决办法
8369
查看次数

标签 统计

c++ ×1

eigen3 ×1

numpy ×1