• 1.6Eigen中系数运算Reductions, visitors and broadcasting


     1 Eigen::Matrix2d mat;
     2 mat<<1,2,
     3            3,4;
     4 cout<<"矩阵所有系数之和:"<<mat.sum();//1+2+3+4=10
     5 cout<<"矩阵系数的乘积:"<<mat.prod();//1*2*3*4=24
     6 cout<<"矩阵系数的平均数:"<<mat.mean();//(1+2+3+4)/10=2.5
     7 cout<<"矩阵最小的系数:"<<mat.minCoeff();//1
     8 cout<<"矩阵最大的系数:"<<mat.maxCoeff();//4
     9 cout<<"矩阵的迹:"<<mat.trace();//1+4=5
    10 VectorXf v(2);
    11 MatrixXf m(2,2),n(2,2);
    12 v<<-1,2;
    13 m<<1,-2,
    14        -3,4;
    15 cout<<"向量v的系数平方和:"<<v.squaredNorm();//(-1)^2+2^2=5
    16 cout<<"向量v的系数平方和开方:"<<v.norm();//((-1)^2+2^2)^0.5=2.23607
    17 cout<<"向量v的p次方和:"<<v.lpNorm<1>();//模板函数,1为一次方和,3为三次方和, 结果xiang为3
    18 cout<<"向量v系数绝对值最大值:"<<v.lpNorm<Infinity>();//2
    19 cout<<"矩阵m系数平方和:"<<m.squareNorm();//30
    20 cout<<"矩阵m系数平方和再开方:"<<m.norm();//5.47723
    21 cout<<"矩阵m的p次方和:"<<m.lpNorm<1>();//模板函数,1为矩阵系数绝对值之后,其他为N次方之和
    22 cout<<"矩阵m系数绝对值最大值:"<<m.lpNorm<Infinity>();//4
    23 Eigen::Matrix2d mat;
    24 mat<<1,-2,
    25           -3,4;
    26 cout<<"矩阵系数取绝对值:"<<mat.cwiseAbs();//mat=(1,2,3,4)
    27 ArrayXXf a(2,2);
    28 mat<<1,2,
    29           3,4;
    30 cout<<"如果数组所有系数大于0,返回true,否则返回false"<<(a>0).all();//true
    31 cout<<"如果数组存在一个系数大于0,返回true,否则返回false"<<(a>0).any();//true
    32 cout<<"返回数组大于0的系数的个数"<<(a>0).count();//4
    33 cout<<"如果数组所有系数大于2,返回true,否则返回false"<<(a>2).all();//0
    34 cout<<"如果数组存在一个系数大于2,返回true,否则返回false"<<(a>2).any();//true
    35 cout<<"返回数组大于2的系数的个数"<<(a>2).count();//2
    36 Eigen::MatrixXf m(2,2);
    37 m<<1,2,
    38         3,4;
    39 MatrixXf::Index maxRow,maxCol,minRow,minCol;
    40 float max=m.maxCoeff(&maxRow,&maxCol);
    41 float min=m.minCoeff(&minRow,&minCol);
    42 cout<<"矩阵中最大元素所在位置:("<<maxRow<<","<<maxCol<<")";//(1,1)
    43 cout<<"矩阵中最小元素所在位置:("<<minRow<<","<<minCol<<")";//(0,0)
    44 Eigen::MatrixXf m(2,4);
    45 m<<1,2,6,9,
    46         3,1,7,2;
    47 cout<<"输出每一列的最大值:"<<m.colwise().maxCoeff();//3,2,7,9
    48 cout<<"输出每一行的最大值:"<<m.rowwise().maxCoeff();//9,7
    49 Eigen::MatrixXf m(2,4);
    50 m<<1,2,6,9,
    51        3,1,7,2;
    52 MatrixXf::Index maxindex;
    53 float max=m.colwise().sum().maxCoeff(&maxindex);
    54 cout<<"矩阵每列系数和,然后每一列和的最大值的列数"<<maxindex;//第3列,即2
    55 cout<<"输出第三列"<<m.col(maxindex);//6,7
    56 cout<<"输出最大的和:"<<max;//13
    57 Eigen::MatrixXf m(2,4),n(2,4);
    58 Eigen::VectorXf v(2);
    59 Eigen::RowVectorXf u(4);
    60 m<<1,2,6,9,
    61         3,1,7,2;
    62 v<<0,1;
    63 n<<0,1,2,3;
    64 m.colwise()+=v;//m中每一列加向量v
    65 n=m;
    66 n.rowwise()+=u;
    67 cout<<"矩阵每一列加向量v:"<<m;//1,2,6,9,4,2,8,3
    68 cout<<"矩阵每一行加向量u:"<<n;//1,3,8,12,3,2,9,5
    69 Eigen::MatrixXf m(2,4);
    70 Eigen::VectorXf v(2);
    71 m<<1,23,6,9,
    72         3,11,7,2;
    73 v<<2,3;
    74 MatrixXf::Index index;
    75 (m.colwise()-v).colwise().squareNorm().minCoeff(&index);
    76 cout<<"求矩阵m每列距离向量V最小距离的一列"<<index;//0
    77 cout<<"输出距离向量V最小的列向量:"<<m.col(index);//1,3
  • 相关阅读:
    RecyclerView的坑
    Edittext默认无焦点
    EditText光标位置
    录音功能暂停的实现思路
    Java clone()方法使用说明
    Android systemserver分析ThrottleService 介绍
    php 输出函数常用类型转换符
    Android BitmapDrawable()的使用
    java equal和==的比较,尤其注意基本类型和基本类型的包装类型的比较
    android HeaderViewListAdapter的介绍
  • 原文地址:https://www.cnblogs.com/excellentlhw/p/10629545.html
Copyright © 2020-2023  润新知