C++两个矩阵库

C++ 矩阵运算库

boost::ublas

https://www.boost.org/doc/libs/1_49_0/libs/numeric/ublas/doc/index.htm

矩阵转置、乘积、范数等ublas有函数

求逆需要通过方法实现


#include <boost/numeric/ublas/matrix.hpp>

#include <boost/numeric/ublas/io.hpp>

#include <boost/numeric/ublas/lu.hpp>

#include <exception>

namespace ublas = boost::numeric::ublas;

template<typename T>

static bool invertMatrix(const ublas::matrix<T> &inputMatrix,

ublas::matrix<T> &outputInverseMatrix)

{

using namespace boost::numeric::ublas;

typedef permutation_matrix<std::size_t> pmatrix;

try {

matrix<T> A(inputMatrix);

pmatrix pm(A.size1());

int res = lu_factorize(A, pm);

if (res != 0) {

return false;

}

outputInverseMatrix.assign(ublas::identity_matrix<T>(A.size1()));

lu_substitute(A, pm, outputInverseMatrix);

} catch (std::exception &e) {

std::cout<<"invertMatrix exception: "<<e.what()<<std::endl;

return false;

}

return true;

}

/*

ublas::matrix<double> h(2, 1);

ublas::matrix<double> G(2, 2);

ublas::matrix<double> Gt(2, 2);

ublas::matrix<double> Delta(2, 1);

ublas::matrix<double> T(2,2);

ublas::matrix<double> T_inverse(2,2);

ublas::matrix<double>  K(2,2);

Gt = ublas::trans(G);

T = ublas::prod(Gt,G); //Gt*G

invertMatrix(T, T_inverse);/Gt*G inverse

K = ublas::prod(T_inverse, Gt);//(Gt*G)-1 * Gt

Delta = ublas::prod(K, h);//(Gt*G)-1 * Gt *h

*/

Eigen

源码下载下来后,编写的程序包含头文件即可

http://eigen.tuxfamily.org/dox/group__QuickRefPage.html

http://eigen.tuxfamily.org/dox/group__TutorialMatrixArithmetic.html


#include <iostream>

#include <Eigen/Dense>

#include <exception>

using namespace Eigen;

/*

MatrixXd  h(2, 1);

MatrixXd  G(2, 2);

MatrixXd  Gt(2, 2);

MatrixXd  Delta(2, 1);

MatrixXd  T(2,2);

MatrixXd  T_inverse(2,2);

MatrixXd   K(2,2);

Gt = G.transpose();

T = Gt*G; //Gt*G

T_inverse = T.inverse();

K = T_inverse*Gt;//(Gt*G)-1 * Gt

Delta = K*h;//(Gt*G)-1 * Gt *h

*/

原文地址:https://www.cnblogs.com/sunnypoem/p/11782444.html

时间: 2024-11-01 15:42:37

C++两个矩阵库的相关文章

题目1489:计算两个矩阵的乘积

时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:5744 解决:1234 题目描述: 计算两个矩阵的乘积,第一个是2*3,第二个是3*2 输入: 输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵 输出: 一个2*2的矩阵(每一个数字后都跟一个空格) 样例输入: 1 2 3 3 4 5 6 7 8 9 10 11 样例输出: 52 58 100 112 来源: 2012年哈尔滨工业大学计算机研究生机试真题 矩阵乘积的计算是  52 = 1*6+2*8+3*10  58 =

小型矩阵库

一套矩阵库,主要实现功能有求特征值&特征向量,求合同标准型. 定义了实矩阵,多项式,多项式矩阵,向量四个类 注释比较详尽 /* Copyright © 2016 by dhd All Right Reserved. */ #include<bits/stdc++.h> #define rep(i, j, k) for(int i = j;i <= k;i++) #define repm(i, j, k) for(int i = j;i >= k;i--) #define m

手把手教你用Execel计算两个矩阵的乘法

Excel中有很多执行线性代数运算的函数,只要轻点鼠标,各种计算都手到擒来.但是使用这些函数在操作上其实还是有点trick的,今天我们就来演示一下如何在Excel中执行两个矩阵的乘法. 假设我们现在有这样两个矩阵 注意根据线性代数的知识: (1)矩阵A×B 和B×A是不同的: (2)其次,如果矩阵A的大小是 m×n, 矩阵B的大小必须是 n×k,那么A×B 的计算才能执行,而且结果矩阵的大小应该是m×k,其中m和k的值可以相等,也可以不相等. 所以下面我们首先在EXCEL中将这两个矩阵输入,如下

@大脑练习: 计算两个矩阵的乘积

题目1489:计算两个矩阵的乘积时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:134 解决:25 题目描述: 计算两个矩阵的乘积,第一个是2*3,第二个是3*2 输入: 输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵 输出: 一个2*2的矩阵(每一个数字后都跟一个空格) 样例输入: 1 2 3 3 4 5 6 7 8 9 10 11样例输出: 52 58 100 112来源: 2012年哈尔滨工业大学计算机研究生机试真题 [cpp] /****************

如何合并两个图标库

http://blog.csdn.net/crystal6918/article/details/52994393 最近在项目中碰到了要合并两个icon库的需求:我们项目本来用的是bootstrap提供的glyphicons,但是现在需要用一个别的库的icon,想把这两个库合并在一起供项目使用,研究了一番后整理个教程吧~ 利用https://icomoon.io/app/#/select 这一工具进行这两种图标库的合并,操作步骤如下: 导入图标库 点击页面左上角的import icons,分别导

C++矩阵库——Eigen

发现一个C++矩阵库Eigen,还没有深入学习,先记录下几个链接吧,以后再认真学学. Eigen主页:http://eigen.tuxfamily.org/index.php?title=Main_Page 初步体验矩阵库:http://www.cnblogs.com/tornadomeet/archive/2012/12/11/2813842.html C++矩阵处理工具——Eigen:http://blog.csdn.net/abcjennifer/article/details/77819

C++矩阵库Eigen的仿Matlab矩阵运算

与其他矩阵库相比,Eigen(Visit)相比,Eigen只需要拷贝所有include文件到指定位置,无需编译即可使用;此外,用法上模仿Matlab矩阵操作; 上述特点,使其具有很好的实用性. 附上测试代码,以便学习和使用. //http://eigen.tuxfamily.org/dox/group__QuickRefPage.html #include <iostream> #include <Eigen/Dense> using namespace std; using na

iOS解决两个静态库的冲突 duplicate symbol

http://blog.163.com/023_dns/blog/static/118727366201391544630380/ 场景: 解决TencentOpenAPI.framework与ZbarSDK中  _base64_encode 函数的冲突 后来在网络上搜寻,删除掉 Other Linker Flag 的 -all_load 就可以解决静态库冲突的问题, 但是这样做的话,会使一些外部的静态库,使用objc扩展函数(catagory)的方法失效.例如BaiduMapApi 如果是有些

MATLAB 求两个矩阵的 欧氏距离

MATLAB 求两个矩阵的 欧氏距离 : 如果定义两个矩阵分别为a,b则定义c=(a-b).^2所求距离d=sqrt(sum(c(:))) 原文地址:https://www.cnblogs.com/shenxiaolin/p/9940284.html