C++矩阵库Eigen的仿Matlab矩阵运算
来源:互联网 发布:cdn加速 知乎 编辑:程序博客网 时间:2024/05/14 14:03
与其他矩阵库相比,Eigen(Visit)相比,Eigen只需要拷贝所有include文件到指定位置,无需编译即可使用;此外,用法上模仿Matlab矩阵操作;
上述特点,使其具有很好的实用性。
附上测试代码,以便学习和使用。
//http://eigen.tuxfamily.org/dox/group__QuickRefPage.html#include <iostream>#include <Eigen/Dense>using namespace std;using namespace Eigen;typedef Matrix<float, 1, 3> RVector;int main(){int cnt = 0;//定义一个矩阵并赋值MatrixXd m(2,2);m(0,0) = 3;m(1,0) = 2.5;m(0,1) = -1;m(1,1) = m(1,0) + m(0,1);cout << '[' << cnt++ << "] " << ": " << "m=" << endl;cout << m << endl;cout << "m.cols()=" << m.cols() << ", m.rows()=" << m.rows() << ", size()=" << m.size() << endl << endl;m << 1, 2, 3, 4; //先行后列cout << '[' << cnt++ << "] " << ": " << "comma赋值,m=" << endl;cout << m << endl;cout << "m的第一行:" << m(1) << endl;//产生一个随机矩阵MatrixXd m1 = MatrixXd::Random(3,3); //3 X 3 随机矩阵,值介于-1到1之间cout << '[' << cnt++ << "] " << ": " << "m1 =" << endl << m1 << endl << endl;MatrixXd m2 = MatrixXd::Constant(3,3,1.2); //3 x 3 值为1.2的矩阵cout << '[' << cnt++ << "] " << ": " << "m2 = " << endl;cout << m2 << endl << endl;m1 = (m1 + m2) * 5;cout << '[' << cnt++ << "] " << ": " << "m1 = (m1 + m2) * 5 =" << endl << m1 << endl << endl;//向量赋值与矩阵相乘---Comma-initializationVectorXd v(3);v << 1, 2, 3;cout << '[' << cnt++ << "] " << ": v" << endl << v << endl << endl;cout << '[' << cnt++ << "] " << "m1 * v =" << endl << m1 * v << endl << endl;//通过循环为向量赋值VectorXd v1(3);for(int i = 0; i < 3; i++)v1(i) = i;cout << '[' << cnt++ << "] " << "列向量v1=" << endl << v1 << endl << endl;//行向量RVector rv;for(int i = 0; i < 3; i++)rv(i) = i;cout << '[' << cnt++ << "] " << "行向量:" << rv << endl << endl;//矩阵重新调整大小MatrixXd m3 = MatrixXd::Random(3, 4);cout << '[' << cnt++ << "] " << ": " << "m3 = " << endl;cout << m3 << endl << endl;cout << "m3.resize(5, 5)=" << endl;m3.resize(5, 5); //不保持原值cout << m3 << endl << endl;MatrixXd m4= MatrixXd::Random(3, 3);cout << '[' << cnt++ << "] " << ": " << "m4 = " << endl;cout << m4 << endl;//矩阵的transpose转置cout << "M4转置=" << endl;cout << m4.transpose() << endl;//矩阵的conjugate转置cout << "M4共轭=" << endl;cout << m4.conjugate() << endl;//矩阵的adjoint转置cout << "M4.adjoint=" << endl;cout << m4.adjoint() << endl << endl;//矩阵与标量的+,-,×,/运算略//矩阵与矢量的运算MatrixXd ma = MatrixXd::Random(2, 3);MatrixXd vb = MatrixXd::Random(3, 1);cout << '[' << cnt++ << "] " << ": " << "ma = " << endl;cout << ma << endl;cout << "vb = " << endl;cout << vb << endl;cout << "ma * vb = " << endl;cout << ma * vb << endl; //dot点乘和cross叉积略,见参考return 0;}
运行结果:
[0] : m=
3 -1
2.5 1.5
m.cols()=2, m.rows()=2, size()=4
[1] : comma赋值,m=
1 2
3 4
m的第一行:3
[2] : m1 =
0.680375 0.59688 -0.329554
-0.211234 0.823295 0.536459
0.566198 -0.604897 -0.444451
[3] : m2 =
1.2 1.2 1.2
1.2 1.2 1.2
1.2 1.2 1.2
[4] : m1 = (m1 + m2) * 5 =
9.40188 8.9844 4.35223
4.94383 10.1165 8.6823
8.83099 2.97551 3.77775
[5] : v
1
2
3
[6] m1 * v =
40.4274
51.2237
26.1153
[7] 列向量v1=
0
1
2
[8] 行向量:0 1 2
[9] : m3 =
0.10794 -0.270431 0.83239 -0.716795
-0.0452059 0.0268018 0.271423 0.213938
0.257742 0.904459 0.434594 -0.967399
m3.resize(5, 5)=
6.91676e-310 0 0 0 0
6.91676e-310 0 0 0 0
2.122e-314 0 0 0 0
3.7008e-33 0 0 0 0
7.23757e-320 0 0 0 0
[10] : m4 =
-0.514226 -0.686642 -0.782382
-0.725537 -0.198111 0.997849
0.608354 -0.740419 -0.563486
M4转置=
-0.514226 -0.725537 0.608354
-0.686642 -0.198111 -0.740419
-0.782382 0.997849 -0.563486
M4共轭=
-0.514226 -0.686642 -0.782382
-0.725537 -0.198111 0.997849
0.608354 -0.740419 -0.563486
M4.adjoint=
-0.514226 -0.725537 0.608354
-0.686642 -0.198111 -0.740419
-0.782382 0.997849 -0.563486
[11] : ma =
0.0258648 0.22528 0.275105
0.678224 -0.407937 0.0485744
vb =
-0.012834
0.94555
-0.414966
ma * vb =
0.0985221
-0.414586
- C++矩阵库Eigen的仿Matlab矩阵运算
- Eigen矩阵运算库
- C++矩阵运算库--Eigen
- Eigen矩阵运算
- 文章标题Eigen的矩阵运算使用
- Eigen矩阵的运算(二)
- Eigen矩阵运算库使用记录
- Eigen矩阵运算库使用记录
- Matlab矩阵的运算
- Matlab/Eigen矩阵填充问题
- C++ 矩阵运算工具箱Eigen
- C++ 矩阵运算工具箱Eigen
- C++ 矩阵库 eigen
- C++矩阵库 Eigen
- 矩阵迹运算介绍及C++/OpenCV/Eigen的三种实现
- 4-MATLAB的矩阵运算
- c++矩阵库eigen的使用方法
- Eigen之矩阵、向量、标量的操作运算
- 高级图像去雾算法的快速实现。
- 辛星笔记之MySQL的InnoDB部分的四本笔记
- OpenGL中的颜色混合功能(二)——抗锯齿的处理
- struts2 Spring4 hiberante4 shiro2集成实例
- 使用自带的API在App Store中浏览别的Apps
- C++矩阵库Eigen的仿Matlab矩阵运算
- 微软3个月没能修复零日漏洞被谷歌公布给黑客,发布攻击代码教人们怎么攻击
- 动态规划算法思想
- 程序猿常用目录整理方案
- 精通CSS+DIV网页样式与布局--滤镜的使用
- POJ 2159 Ancient Cipher
- HDU 1054 Strategic Game (树形DP)
- 响声电话吸费代理 回报增值电话 菲亚科技
- new day