Eigen 入门 VectorXcd MatrixXcd LDL SVD
参考: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相关推荐
- Eigen入门系列 —— Eigen::Matrix矩阵点乘、叉乘、转置、求逆、求和、行列式、迹、数乘
Eigen入门系列 -- Eigen::Matrix矩阵点乘.叉乘.转置.求逆.求和.行列式.迹.数乘 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D ...
- Eigen入门之密集矩阵 10 - 矩阵的行优先及列优先存储
简介 本篇介绍Eigen中矩阵及二维数组的系数存储顺序–行优先及列优先,已经如何指定优先顺序. 行优先(row-majoe). 列优先(column-majoe) 矩阵的系数条目组成了一个二维的结构, ...
- Eigen入门之密集矩阵 9 - 别名混乱Aliasing
简介 别名混乱Aliasing是指在赋值表达式中,一个Eigen对象(矩阵.数组.向量)同时出现在左值和右值表达式中,比如v = v*2; m = m.transpose();; 别名混乱会引起错误, ...
- Eigen入门之密集矩阵 8 - resharp slicing切片
简介 Eigen还没有提供resharp或者slicing的处理函数,但是,可以使用Map 类来实现这些功能. 实现resharp 操作Resharp及修改Matrix的维度大小,而其系数保持不变.R ...
- Eigen入门之密集矩阵 7 - Map class:连接Eigen与C++的数据
简介 本文介绍一下Dense Matrix如何与c/C++的数组进行交互操作,这在引入其他的库中的vector向量和矩阵到Eigen中时要使用到的技术. 有时,你有一些定义好的数据,可能是数组,你需要 ...
- Eigen入门之密集矩阵 6 - Reductions, visitors and broadcasting
简介 本文介绍一下Dense Matrix的3中操作: reduction, visitor, broadcasting. 归约计算reduction. Eigen的归约计算是这样的一类计算,它是对矩 ...
- Eigen入门之密集矩阵 5 - 再谈Matrix初始化
简介 这里将讨论一下高级些的矩阵初始化方法. comma-initializer 逗号初始化器 comma-initializer方法很简单,可以一下把矩阵/向量的系数全部设置完.语法很简单,使用逗号 ...
- Eigen入门之密集矩阵 4 - 块操作
简介 Eigen 中Matrix/Array提供了.block()来进行block区块操作,这是面向系数提供的操作功能. 语法 Eigen中提供了2种语法,针对产生的结果是一致的.但存在性能上的不同, ...
- Eigen入门之密集矩阵 3 - Array操作
简介 在Eigen内,有Matrix,vector进行线性代数的相关运算,但也需要执行对矩阵内的系数的相关操作时,这是正常的功能需求.Eigen中的Array类就是满足此需求的. Array 定义 和 ...
最新文章
- ImportError: No module named tensorflow.compat.v1 忽略已经安装的某个包版本 忽略已安装版本...
- [转]推荐国外SQL Server学习网站
- leetcode算法题--骑士在棋盘上的概率★
- Notice of the completion of the blog migration
- NAS——在VMware 15虚拟机中安装黑群晖DSM解决方案
- Python基础之:函数
- 1年工作经验8月份大厂面试全记录
- css-样式的权重-圆角-rgba
- border:0 none,border:none;,border:0;三者之间的区别
- PostgreSQL在Linux上的RPM和源码安装
- “抱大腿”的正确姿势
- HSV颜色空间转RGB(C语言代码),ESP32使用RMT驱动WS2812B,七彩流光灯光效果
- 隐私问题不想用自己手机收验证码怎么办?
- 关于DIPS的MVC 4.0项目发布与在IIS 7.0上的部署的方法
- eNsp 多区域OSPF配置
- 干货 | 携程平台化常态化数据治理之路
- 简要分析VB6.0和VB.NET区别
- 【Mathematica】 函数的积分
- 电驴怎么显示服务器列表,(转)如何更新电驴服务器列表(eMule Server List)
- UltraEdit 文本代码程序编辑器免费版下载安装教程