[前言] 对于矩阵(Matrix)的特征值(Eigens)求解,采用数值分析(Number Analysis)的方法有一些,我熟知的是针对实对称矩阵(Real Symmetric Matrix)的特征值和特征向量(Characteristic Vectors)求解算法——雅克比算法(Jacobi).Jacobi算法的原理和实现可以参考[https://blog.csdn.net/zhouxuguang236/article/details/40212143].通过Jacobi算法可以以任意精度近…
此示例是利用Intel 的MKL库函数计算矩阵的乘法,目标为:\(C=\alpha*A*B+\beta*C\),由函数cblas_dgemm实现: 其中\(A\)为\(m\times k\)维矩阵,\(B\)为\(k\times n\)维矩阵,\(C\)为\(m\times n\)维矩阵. 1 cblas_dgemm参数详解 fun cblas_dgemm(Layout, //指定行优先(CblasRowMajor,C)或列优先(CblasColMajor,Fortran)数据排序 TransA…
最小二乘计算最优解不管是哪个行业肯定都用到的非常多.对于遥感图像处理中,尤其是对图像进行校正处理,关于控制点的几种校正模型中,都用到最小二乘来计算模型的系数.比如几何多项式,或者通过GCP求解RPC系数,以及RPC的间接优化等都是离不开最小二乘的.下面使用MTL库编写的最小二乘求解AX=B形式的X最优解. 关于MTL库的类型定义可以参考之前写的求解特征值和特征向量那篇博客.地址为:http://blog.csdn.net/liminlu0314/article/details/8957155.…
对任意一个\(m\times n\)的实矩阵,总可以按照SVD算法对其进行分解.即: \[A = U\Sigma V^T \] 其中\(U.V\)分别为\(m\times m.n\times n\)的方阵,由\(A\)的左奇异向量和右奇异向量组成,且\(U\)与\(V\)均为正交阵.\(\Sigma\)为\(m\times n\)的对角矩阵,对角线上的元素为矩阵\(A\)的奇异值. 在MKL库中求解奇异值和奇异向量的函数为LAPACKE_dgesvd. 1 参数详解 lapack_int LAP…
from:http://unifius.wordpress.com.cn/archives/5 系统:Gentoo Linux (64bit, Kernel 3.7.1)配置:Intel(R) Core(TM) i7-2670QM在Gentoo中安装Numpy/Scipy非常简单,直接emerge就可以解决.但是默认链接的blas/lapack库性能非常差,在矩阵计算方面比MATLAB慢了不少.原因在于MATLAB使用的是高度优化的数值计算库Intel math kernel library (…
为了安装caffe, 所以安装了mkl, 现在想在codeblock的项目中使用mkl. 设置mkl环境变量: mkl安装好后默认是在/opt/intel/mkl中,其中/opt/intel/mkl/bin下有脚本可以设置环境变量,根据mkl的user guid:我电脑安装的是64位的ubuntu 14.04,所以我使用 /opt/intel/mkl/bin/mklvars.sh inter64 但是报错说 typeset : not found, 根据网上的搜索,得知是应该用bash去运行它,…
#include <stdio.h> #include <math.h> #include <stdlib.h> #define M 3 //方阵的行数 列数 #define ε0 0.00000001//ε0为要求的精度 #define N 100000//最大迭代次数 //函数预声明 ], int m, int n);//矩阵的打印 void printVector(double a[], int m);//向量的打印 double dotVector(double…
1.特征值分解 主要还是调包: from numpy.linalg import eig 特征值分解:  A = P*B*PT  当然也可以写成 A = QT*B*Q  其中B为对角元为A的特征值的对角矩阵,P=QT, 首先A得对称正定,然后才能在实数域上分解, >>> A = np.random.randint(-10,10,(4,4)) >>> A array([[ 6, 9, -10, -1], [ 5, 9, 5, -5], [ -8, 7, -4, 4], […
PCA, Principle Component Analysis, 主成份分析, 是使用最广泛的降维算法. ...... (关于PCA的算法步骤和应用场景随便一搜就能找到了, 所以这里就不说了. ) 假如你要处理一个数据集, 数据集中的每条记录都是一个\(d\)维列向量. 但是这个\(d\)太大了, 所以你希望把数据维度给降下来, 既可以去除一些冗余信息, 又可以降低处理数据时消耗的计算资源(用computation budget 来描述可能更形象). 用稍微正式点的语言描述: 已知:一个数据…
无意间想到的,有时间会补充内容. 还记得学线性代数时计算矩阵的特征值和特征向量,然后这个矩阵就可以用这个特征值和特征向量表示. 这样就可以理解成矩阵其实是多个向量拼在一起的,这样就可以将矩阵和向量建立联系. 特征值和特征向量其实就是寻求原向量组合的最简单表示,因为向量是可以分解和组合的. 为什么要用特征值和特征向量:原因是解耦合.等价变换. PCA又是什么呢:主成分分析,就是选取特征值较大的特征向量代替原特征值和特征向量实现降维, 降维的优点是减少计算量,缺点是损失精度.…