Matlab中的eig函数和Opecv中eigen()函数的区别
奇异值分解的理论参见下面的链接
http://www.cnblogs.com/pinard/p/6251584.html
https://blog.csdn.net/shenziheng1/article/details/52916278
https://blog.csdn.net/billbliss/article/details/78579308
https://blog.csdn.net/zhongkejingwang/article/details/43053513
https://blog.csdn.net/u010099080/article/details/68060274
在Matlab中的eig()函数,和Opencv中的eigen()函数,都是用来获得矩阵的特征值和特征矢量。并且,这两个函数的输入矩阵必须是对称矩阵。
Matlab中的eig()函数,常见的写法如下:
[V D]=eig(A);
D是矩阵A的特征值组成的对角矩阵,与A是同数据类型,同尺度。V是与特征值对应的特征矢量组成的矩阵。
在Opencv中的eigen()函数,常见的写法如下:
myEigen(A,D,V);
函数中的A是输入矩阵,D和V是输出的特征值矢量和特征矢量组成的矩阵。eig()函数与eigen()函数的不同之处是:
1、在eigen()中的D是一个一维特征值组成的列矢量,并且特征值是按照降序排序;而在eig()中的D则是一个以特征值为对角的对角矩阵,特征值是按照升序排序。
2、在eigen()中的V是特征矢量组成的矩阵,矩阵中的每一行就是一个特征矢量;而在eig()中的V则是以特征矢量组成的矩阵,矩阵中的每一列即是一个特征矢量。
下面是同一个实例,在Matlab中和Opencv中的比较:
首先是Matlab中的eig函数的实例代码:
clear;
clc;
A=[,,;
,,;
,,];
[V D]=eig(A);
A_r=V*D*V';
输入结果如下:
下面是Opencv中eigen函数的实例代码:
//为方便与Matlab中的eig()函数比较,我把eigen封装在一个函数里,并将特征值矢量转换成对角矩阵,与Matlab中类似
void myEigen(Mat&A,Mat&D,Mat&V)
{
eigen(A,D,V);
Mat E=Mat::eye(A.size(),A.type());
for(int i=;i<A.rows;i++)
{
E.at<double>(i,i)=D.at<double>(,i);
}
D=E.clone(); }
const double eps=2.224e-16;
int main()
{
Mat A=(Mat_<double>(,)<<
,,,
,,,
,,);
Mat D,V;
myEigen(A,D,V); Mat A_r=V.t()*D*V; cout<<"原矩阵 A ="<<endl<<A<<endl;
cout<<"重构矩阵A_r="<<endl<<A_r<<endl<<endl;
cout<<"D="<<endl<<D<<endl;
cout<<"V="<<endl<<V<<endl;
return ;
}
输出结果如下:
比较Matlab和Opencv中的D、V值:
Opencv中V的第一列,与Matlab中V的第一行数值一直,但排序相反,其它行列对比也基本一致。
Matlab中的eig函数和Opecv中eigen()函数的区别的更多相关文章
- Matlab中psf2otf()函数在opencv中的实现
在Matlab中有个psf2otf()函数,可以将小尺寸的点扩散函数,扩大尺寸,并作二维傅里叶变换,opencv中没有这个函数,所以编了这么个函数: /************************ ...
- Matlab读取cifar10 train_quick.sh输出txt中信息
感谢 网友 Vagrant的提醒.之前 一直就看个最后的accuracy.这个应该并不靠谱.最好把说有的信息都看一下.而一个一个看.根本记不住.只能把数据读取在图片中显示一下,才比较直观. 本文就是读 ...
- 表值函数与JS中split()的联系
在公司用云平台做开发就是麻烦 ,做了很多功能或者有些收获,都没办法写博客,结果回家了自己要把大脑里面记住的写出来. split()这个函数我们并不陌生,但是当前台有许多字段然后随意勾选后的这些参数传递 ...
- 借助JavaScript中的时间函数改变Html中Table边框的颜色
借助JavaScript中的时间函数改变Html中Table边框的颜色 <html> <head> <meta http-equiv="Content-Type ...
- php中引用&的真正理解-变量引用、函数引用、对象引用
php的引用(就是在变量或者函数.对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中引用的意思是:不同的名字访问同一个变量内容. ...
- 跟着百度学PHP[5]函数篇2-PHP中的特殊形式的函数
目录...................................................... .00x1 可变函数 在PHP里面如果说将“函数名称”赋予字符串类型的变量.在调用这个 ...
- C中的qsort函数和C++中的sort函数的理解与使用
一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...
- javascript基础程序(算出一个数的平方值、算出一个数的阶乘、输出!- !- !- !- !- -! -! -! -! -! 、函数三个数中的最大数)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!
效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ...
随机推荐
- (十一)zabbix监控mysql
1)配置脚本获取mysql的各种参数 注意:脚本中定义host #vim /etc/zabbix/zabbix_agentd.d/mysql_status.sh #!/bin/bash MySQlBi ...
- web添加学生信息(首发web)
程序思路,先在JSP上画好页面,然后再创建一Servlet文件用于判断在网页上操作是否正确,还需要与数据库相连接,用DBUtile文件连接数据库,用Dao层来实现数据的增加,用Service来服务于D ...
- 一秒钟解决mysql使用游标出现取值乱码问题
drop procedure if exists pro_test; delimiter // create procedure pro_test() begin declare str varcha ...
- div contenteditable 代替Textarea,做成Vue属性动态绑定
前言 一般都是用Textarea 文本来编辑,但发现可以用 div contenteditable = “true”,这个属性来搞定 <div contenteditable=true plac ...
- CodeForces 792C - Divide by Three [ 分类讨论 ]
删除最少的数位和前缀0,使得剩下的数能被3整除 等价于各数位数字之和能被3整除. 当前数位和可能是 0, 1, 2(mod 3) 0: 直接处理 1: 删除一个a[i]%3 == 1 或者 两个a[i ...
- Uva 10129 Play on Words(欧拉路)
一些秘密的门包含一个非常有趣的单词拼图.考古学家们必须解决的问题 它打开那门.因为没有其他的方式来打开大门,这个谜是非常重要的 我们. 每扇门上都有大量的磁性板.每一个盘子上都有一个字 它.板块必须以 ...
- 关于在mac上使用valet集成环境添加memcache扩展
由于业务要求需要使用到memcache,直接使用brew安装在phpinfo上面显示并没有加载成功,使用以下方法时我们需要先卸载之前已经安装完成的memcache brew unlink php70- ...
- Complete Tripartite
D - Complete Tripartite 思路:这个题是个染色问题.理解题意就差不多写出来一半了.开始的时候还想用离散化来储存每个点的状态,即它连接的点有哪些,但很无奈,点太多了,long lo ...
- JavaWeb-SpringBoot(抖音)_三、抖音项目后续
JavaWeb-SpringBoot(抖音)_一.抖音项目制作 传送门 JavaWeb-SpringBoot(抖音)_二.服务器间通讯 传送门 JavaWeb-SpringBoot(抖音)_三.抖音项 ...
- LNMP源码编译
LNMP源码编译 编译安装之前把开发包组安装了 [root@tiandong63 ~]# yum groupinstall "Development Tools" "De ...