欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Eigen新手指南:基础操作 - 矩阵加减与数乘实例演示

最编程 2024-02-08 20:26:32
...
/*
 * @File: basic_arithmetic.cpp
 * @Brief: eigen course
 * @Description: 展示Eigen::Matrix矩阵基本运算
 * @Version: 0.0.1
 * @Author: MuYv
 */
#include <iostream>
#include <Eigen/Dense>



int main(int argc, char** argv){
    // Eigen::Matrix为模板类,可*定义不同维度的矩阵,
    // 此处仅展示较为常用的几种数据类型,其它定制化需求类型的使用,可以此类推;

    // 自定义创建4x4的矩阵,模板参数依次为:数据类型,行数,列数;
    Eigen::Matrix<float, 4, 4> matrix_4f;
    // 使用常数值进行初始化填充;
    matrix_4f = Eigen::Matrix<float,4,4>::Constant(1.0f);
    std::cout<<"matrix_4f constant init:\n"<<matrix_4f<<std::endl;

    Eigen::Matrix4f matrix_4f_tmp = Eigen::Matrix4f::Constant(2.0);
    std::cout<<"matrix_4f_tmp:\n"<<matrix_4f_tmp<<std::endl<<std::endl;
    
    // 与等大小矩阵
    // 加法
    std::cout<<"matrix_4f + matrix_4f_tmp:\n"<<(matrix_4f + matrix_4f_tmp)<<std::endl<<std::endl;
    // 减法
    std::cout<<"matrix_4f - matrix_4f_tmp:\n"<<(matrix_4f - matrix_4f_tmp)<<std::endl<<std::endl;
    // 乘法
    std::cout<<"matrix_4f * matrix_4f_tmp:\n"<<(matrix_4f * matrix_4f_tmp)<<std::endl<<std::endl;

    // 与数值
    std::cout<<"matrix_4f * 9:\n"<<(matrix_4f * 9)<<std::endl<<std::endl;
    std::cout<<"matrix_4f / 2:\n"<<(matrix_4f / 2)<<std::endl<<std::endl;

    // 3x1 列向量
    Eigen::Vector3f vector_3f(1.0f, 2.0f, 3.0f);
    std::cout<<"vector_3f:\n"<<vector_3f<<std::endl;

    Eigen::Vector3f vector_3f_tmp = Eigen::Vector3f::Constant(4.0f);
    std::cout<<"vector_3f_tmp:\n"<<vector_3f_tmp<<std::endl<<std::endl;

    // 与等大小向量
    // 加法
    std::cout<<"vector_3f + vector_3f_tmp:\n"<<(vector_3f + vector_3f_tmp)<<std::endl<<std::endl;
    // 减法
    std::cout<<"vector_3f - vector_3f_tmp:\n"<<(vector_3f - vector_3f_tmp)<<std::endl<<std::endl;

    // 与数值
    std::cout<<"vector_3f * 9:\n"<<(vector_3f * 9)<<std::endl<<std::endl;
    std::cout<<"vector_3f / 2:\n"<<(vector_3f / 2)<<std::endl<<std::endl;

    return 0;
}