Eigen: 实现 meshgrid

这段代码展示了如何使用Eigen库在C++中实现meshgrid函数,该函数将一维数组x和y转换为二维网格坐标xx和yy。输入是一维数组x和y的引用,输出是二维数组xx和yy的引用。在测试代码中,创建了两个一维数组X和Y,并调用meshgrid函数生成二维网格,输出结果为XX和YY的值。
摘要由CSDN通过智能技术生成

eigen 实现 meshgrid

void meshgrid(const Eigen::ArrayXd & x, const Eigen::ArrayXd & y, Eigen::ArrayXXd &xx, Eigen::ArrayXXd &yy)
{
    Eigen::MatrixXd m_x = x.matrix();
    Eigen::MatrixXd m_y = y.matrix();
    int Nx = m_x.rows();
    int Ny = m_y.rows();
    m_x.transposeInPlace();
    Eigen::MatrixXd m_xx = m_x.replicate(Ny, 1);
    Eigen::MatrixXd m_yy = m_y.replicate(1, Nx);
    xx = m_xx.array();
    yy = m_yy.array();
}

测试代码:

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

void meshgrid(const Eigen::ArrayXd & x, const Eigen::ArrayXd & y, Eigen::ArrayXXd &xx, Eigen::ArrayXXd &yy)
{
    Eigen::MatrixXd m_x = x.matrix();
    Eigen::MatrixXd m_y = y.matrix();
    int Nx = m_x.rows();
    int Ny = m_y.rows();
    m_x.transposeInPlace();
    Eigen::MatrixXd m_xx = m_x.replicate(Ny, 1);
    Eigen::MatrixXd m_yy = m_y.replicate(1, Nx);
    xx = m_xx.array();
    yy = m_yy.array();
}

int main()
{
    Eigen::ArrayXd X(3);
    Eigen::ArrayXd Y(2);
    X << 0, 1, 2;
    Y << 3, 4;
    Eigen::ArrayXXd XX, YY;
    meshgrid(X, Y, XX, YY);
    std::cout << "XX = \n" << XX << std::endl;
    std::cout << "YY = \n" << YY << std::endl;

    return 0;
}

输出结果:

XX = 
0 1 2
0 1 2
YY = 
3 3 3
4 4 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wreng我是002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值