参考:http://www.cnblogs.com/python27/p/EigenQuickRef.html

另外增加啦以下内容!!!

关于VectorXcd  MatrixXcd的用法甚少 官网也没找到

// EigenTest.cpp : 定义控制台应用程序的入口点。
//

#include <iostream>

#include <Eigen\Dense>

using namespace std;
using namespace Eigen;

int main()
{
    int flag = 0;
    MatrixXd Mat(2,2);//病态矩阵
    VectorXd myVect(2);
    Mat << 1,1,
        1,1.001;
    myVect << 2,2;
    cout<<"Original Matrix:"<<endl<<Mat<<endl<<endl;
//特征值 特征向量
    EigenSolver<MatrixXd> eig(Mat);
    VectorXcd  eigValue = eig.eigenvalues();//复数特征值向量
    MatrixXcd eigVector = eig.eigenvectors();//复数特征向量矩阵

cout<<"Eig Values:"<<endl<<eigValue.real()<<endl;//输出复数向量的实数部分
    cout<<"Eig Vector:"<<endl<<eigVector.real()<<endl;//输出复数矩阵的实数部分
    
    VectorXd eigXV = eigValue.real();
    MatrixXd eigXM = eigVector.real();
//复数向量赋值
    VectorXcd x1;
    MatrixXcd mat1;
    x1.resize(2,1);
    mat1.resize(2,2);
    x1.setZero();
    mat1.setZero();
    mat1.Random(2,2);
    x1[0]._Val[0] = 1;
    x1[1]._Val[0] = 2;
    mat1(0,1)._Val[1] = 999.0;
    cout<<"Complex Vector:"<<endl<<x1<<endl;//输出复数向量的实数部分
    cout<<"Complex Vector:"<<endl<<mat1<<endl;//输出复数矩阵的实数部分

//改变矩阵一行
    //cout<< "2nd row:"<<Mat.row(0);
    //Mat.row(0) = myVect;
    //cout<<"Change Row Matrix:"<<endl<<Mat<<endl;

//LDL分解
     LDLT<MatrixXd> ldlt(Mat);//A = LDL
     LLT<MatrixXd> llt(Mat);//A = L*L'
     MatrixXd L,D,LL;
     VectorXd dD;
     L = ldlt.matrixL();
     dD = ldlt.vectorD();
     D = dD.asDiagonal();
     LL = llt.matrixL();
     cout<<"Matrix L:"<<endl<<L<<endl;
     cout<<"Matrix D:"<<endl<<D<<endl;
     cout<<"Matrix LL:"<<endl<<LL<<endl;
     cout<<"Matrix L*D*L':"<<endl<<L*D*L<<endl;
     cout<<"Matrix LL*LL:"<<endl<<LL*LL.transpose()<<endl;

//SVD分解
    JacobiSVD<MatrixXd> svd(Mat,ComputeThinU|ComputeThinV);
    MatrixXd U,S,V;
    VectorXd vS;
    U = svd.matrixU();
    V = svd.matrixV();
    cout<<"MatriX U:"<<endl<<U<<endl<<endl;
    vS = svd.singularValues();//返回对角线的向量
    S = vS.asDiagonal();
    cout<<"MatriX S:"<<endl<<S<<endl<<endl;
    cout<<"MatriX V:"<<endl<<V<<endl<<endl;

cout<<"Reverse Matrix U*S*V:"<<endl<<U*S*V<<endl<<endl;

cin>>flag;
    return 0;
}

Eigen 入门 VectorXcd MatrixXcd LDL SVD相关推荐

  1. Eigen入门系列 —— Eigen::Matrix矩阵点乘、叉乘、转置、求逆、求和、行列式、迹、数乘

    Eigen入门系列 -- Eigen::Matrix矩阵点乘.叉乘.转置.求逆.求和.行列式.迹.数乘 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D ...

  2. Eigen入门之密集矩阵 10 - 矩阵的行优先及列优先存储

    简介 本篇介绍Eigen中矩阵及二维数组的系数存储顺序–行优先及列优先,已经如何指定优先顺序. 行优先(row-majoe). 列优先(column-majoe) 矩阵的系数条目组成了一个二维的结构, ...

  3. Eigen入门之密集矩阵 9 - 别名混乱Aliasing

    简介 别名混乱Aliasing是指在赋值表达式中,一个Eigen对象(矩阵.数组.向量)同时出现在左值和右值表达式中,比如v = v*2; m = m.transpose();; 别名混乱会引起错误, ...

  4. Eigen入门之密集矩阵 8 - resharp slicing切片

    简介 Eigen还没有提供resharp或者slicing的处理函数,但是,可以使用Map 类来实现这些功能. 实现resharp 操作Resharp及修改Matrix的维度大小,而其系数保持不变.R ...

  5. Eigen入门之密集矩阵 7 - Map class:连接Eigen与C++的数据

    简介 本文介绍一下Dense Matrix如何与c/C++的数组进行交互操作,这在引入其他的库中的vector向量和矩阵到Eigen中时要使用到的技术. 有时,你有一些定义好的数据,可能是数组,你需要 ...

  6. Eigen入门之密集矩阵 6 - Reductions, visitors and broadcasting

    简介 本文介绍一下Dense Matrix的3中操作: reduction, visitor, broadcasting. 归约计算reduction. Eigen的归约计算是这样的一类计算,它是对矩 ...

  7. Eigen入门之密集矩阵 5 - 再谈Matrix初始化

    简介 这里将讨论一下高级些的矩阵初始化方法. comma-initializer 逗号初始化器 comma-initializer方法很简单,可以一下把矩阵/向量的系数全部设置完.语法很简单,使用逗号 ...

  8. Eigen入门之密集矩阵 4 - 块操作

    简介 Eigen 中Matrix/Array提供了.block()来进行block区块操作,这是面向系数提供的操作功能. 语法 Eigen中提供了2种语法,针对产生的结果是一致的.但存在性能上的不同, ...

  9. Eigen入门之密集矩阵 3 - Array操作

    简介 在Eigen内,有Matrix,vector进行线性代数的相关运算,但也需要执行对矩阵内的系数的相关操作时,这是正常的功能需求.Eigen中的Array类就是满足此需求的. Array 定义 和 ...

最新文章

  1. ImportError: No module named tensorflow.compat.v1 忽略已经安装的某个包版本 忽略已安装版本...
  2. [转]推荐国外SQL Server学习网站
  3. leetcode算法题--骑士在棋盘上的概率★
  4. Notice of the completion of the blog migration
  5. NAS——在VMware 15虚拟机中安装黑群晖DSM解决方案
  6. Python基础之:函数
  7. 1年工作经验8月份大厂面试全记录
  8. css-样式的权重-圆角-rgba
  9. border:0 none,border:none;,border:0;三者之间的区别
  10. PostgreSQL在Linux上的RPM和源码安装
  11. “抱大腿”的正确姿势
  12. HSV颜色空间转RGB(C语言代码),ESP32使用RMT驱动WS2812B,七彩流光灯光效果
  13. 隐私问题不想用自己手机收验证码怎么办?
  14. 关于DIPS的MVC 4.0项目发布与在IIS 7.0上的部署的方法
  15. eNsp 多区域OSPF配置
  16. 干货 | 携程平台化常态化数据治理之路
  17. 简要分析VB6.0和VB.NET区别
  18. 【Mathematica】 函数的积分
  19. 电驴怎么显示服务器列表,(转)如何更新电驴服务器列表(eMule Server List)
  20. UltraEdit 文本代码程序编辑器免费版下载安装教程

热门文章

  1. MacBookPro 自动化连接网络
  2. 开源项目-学生成绩查询分析管理系统
  3. python实现图片旋转
  4. anasys hpc集群_ANSYS高性能计算(HPC)
  5. Python学习第三课-基本数据类型
  6. 双音多频技术介绍及应用——识别电话号码
  7. 5000字学习C语言错误处理的四种方式。
  8. 加速智能边缘应用落地,英特尔携生态伙伴展示AI计算盒参考设计最新成果
  9. B1043 输出PATest (散列)
  10. jQuery动态加载瀑布流