zoukankan      html  css  js  c++  java
  • Eigen中的矩阵及向量运算

    Eigen中的矩阵及向量运算
    1,【+,+=,-,-=2,【*,*=3,【.transpose()】
    4,【.dot(),.cross(),.adjoint()】
    5,针对矩阵元素进行的操作【.sum(),.prod(),.mean(),minCoeff(),.maxCoeff,.trace()】6,【.norm()】向量求模,矩阵范数
    
    注意事项:
    1, Eigen中的矩阵和向量运算不会自动适应行列数,需要在编程的时候保证参与运算的矩阵和向量行列数可以进行运算
    2,头文件<Eigen/Core>   中包含【+,-,*,/,+=,-=,*=,.transpose()…sum(),.prod(),.mean(),minCoeff(),.maxCoeff,.trace()】等运算符
    3,头文件<Eigen/Dense> 中包含【.dot(),.cross(),adjoint()】等运算符
    4,以下讨论的符号约定(假设满足运算的行列数要求)
    矩阵:a,b
    向量:u,v
    常数:c
    
    1,【+,+=,-,-=】
    适用于尺寸相同的矩阵之间、尺寸相同的向量之间的对应元素相加减
    2,【*,*=1,用于矩阵与矩阵:尺寸合适的矩阵的一般矩阵乘法。此时,向量可以看成是矩阵
    2,用于矩阵与标量:矩阵与标量的一般乘法,矩阵每个元素与标量相乘。此时,向量可以看成是矩阵
    3,【.transpose()】
    返回矩阵的转置。此时,向量可以看成是矩阵
    4,【.dot(),.cross(),.adjoint()】
    只用于向量
    
    u.dot(v):u和v的点乘,即对应元素乘积的和,返回一个标量。与v.dot(u),u.transpose()*v,v.transpose()*u相同。
    u.cross(v):u和v的叉积,返回一个向量。与v.cross(u)相差一个负号。
    u.adjoint():返回u的共轭向量,若u为实向量,则返回结果与u相同。
    
    5,针对矩阵元素进行的操作【.sum(),.prod(),.mean(),minCoeff(),.maxCoeff,.trace()】
    本部分所有操作都可对矩阵和向量进行,将向量看做矩阵即可
    a.sum():        返回矩阵a中所有元素的和
    a.prod():        返回矩阵a中所有元素的积
    a.mean():        返回矩阵a中所有有元素的平均值
    a.trace():        返回矩阵的迹,即返回主对角线上元素的和。如果不是方阵或者为向量,仍返回对角线元素的和。
    a.minCoeff():    返回矩阵中最小的元素
    a.maxCoeff():    返回矩阵中最大的元素
    
    另外,对于.minCoeff(),.maxCoeff(),有以下用法:
    int i,j;//或std::ptrdiff_t i, j
    auto min = a.minCoeff(i,j);返回a的最小元素赋值给min,并将最小元素所在行号、列号赋值给i、j。
    auto max = a.maxCoeff(p,q);返回a的最大元素赋值给max,并将最大元素所在行号、列号赋值给q、p。
    
    6,【.norm()】向量求模,矩阵范数
    a.norm();//返回矩阵的Frobenius范数,即元素平方的和的平方根
    u.norm();//返回向量的模
  • 相关阅读:
    ROS工业机器人 ROSI Kinetic培训课程
    伺服电机电流、速度、位置环控制
    人工智能入门书单
    更新 Ubuntu 系统,避免报错「校验和不符」
    arduino+16路舵机驱动板连接测试
    Visual SLAM算法:2010年至2016年的回顾
    roslink
    java——自动装箱拆箱
    java_四大流
    Java反射
  • 原文地址:https://www.cnblogs.com/lovebay/p/11230022.html
Copyright © 2011-2022 走看看