稀疏矩阵求最小或最大的K个特征值及其特征向量

来源:互联网 发布:怎么看网络是公网ip 编辑:程序博客网 时间:2024/04/29 02:59

       本人挤牙膏试的文笔,没有习惯写博客,为了方便以后遇到这个问题不要重头再来,也为了有可能能给其他小伙伴一些建议,还是决定整理整理思路,努力写篇大家看得懂的笔记吧。

      由于我要处理的问题是求一个5000*5000维度矩阵的最小特征向量,我的矩阵有个特点,虽然维度大,但是没行只有4个非零值,很稀的矩阵,有点像食堂的免费汤里的蛋花,OpenCV有个函数

CVAPI(void)  cvEigenVV( CvArr* mat, CvArr* evects, CvArr* evals,double eps CV_DEFAULT(0), int lowindex CV_DEFAULT(-1), int highindex CV_DEFAULT(-1))是可以求对称矩阵的特征值和特征向量,它不争气的求了将近一个小时,还是没有给出结果。为了这一个特征向量,费这么大劲,逼着我去找解决的方法。

       Matlab有个函数eigs(),可以求最小的k个特征值及其对应的特征向量,配上sparse矩阵,这个问题大约只用到几秒,于是想查查,matlab到底用了什么算法,怎么能这么给力呢。matlab很直白的告诉我们说,我用了Arnoid算法,还有个包,ARPACK包。

     于是,转战ARPACK,ARPACK是fortran语言写的,我是用VS开发,这显然又给我出难题了,google搜了很久,发现有个哥们直接开悬赏帖,让我有些没有底气了,难道真的这么难搞定吗?没有办法,工作需要,硬着头皮搞。

    这个哥们的博客,http://www.cnblogs.com/hellraider/archive/2012/09/29/2707231.html,很感谢他,整理的很详细。我是按着这个弄,给他弄出来的。中间遇到一些问题,提出来注意一下:

    1.第6部,打包的时候, make lib没有反应。于是,干脆找到make.exe,点了点,发现这个make.exe不给力,说缺少一个msys-iconv-2.dll文件,确实不知道从哪里下,好多网页都是坑人的,根本没有。也不知道当时是那根筋抽了,忽然怀疑是不是漏装了什么,于是跑到MinGA Installation Manager里面看看,有没有跟这个名字像的软件是没有装的。找到一个mingw32-libiconv,于是我把它装上了,反正装又不要钱。奇迹版的是,这个dll文件就生出来了。make有反应了,不再那么静默了。

  2.有.o文件了,但是SRC跳过了,原因是我用patch的SRC完全覆盖了原来的SRC,造成没有makefile了。这样做是不对的,patch只是补丁嘛,就好象衣服和补丁。需要有补丁的时候,才用得着。不能全换成补丁。正确的方法是把Patch的SRC文件全考出来,替换原来SRC相同文件就行了。那哥们的博客说的蛮清楚的,我是理解有问题。

3. 提示second.f编译出错,很奇葩,我是把那5行复制进去的,顶格的,我也不知道为什么,空了一个TAb建就行了。

按着博客的方法,可以生城.dll文件和lib文件了,后面也给出了调用的方法。按着这个方法来,后面就有理想的结果了。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子暑假天天看电视不出门怎么办 七个月宝宝缺铁怎么办 天天运动为什么还便秘怎么办 小孩学习注意力不集中怎么办 8个月宝贝太好动怎么办 学生在校受伤家长该怎么办 多动症小孩爱动手指怎么办 孩子大了不听话该怎么办 流产后吹了风怎么办 怀孕1周内喝酒了怎么办 怀孕6周喝酒了怎么办 怀孕后喝了酒怎么办 不知道怀孕喝酒了怎么办 不知道怀孕了喝酒了怎么办 怀孕5天喝酒了怎么办 打孩子耳光后脸肿了怎么办 老师说上课不专心怎么办 孩子不专心好动马虎怎么办 学生上课不认真听讲怎么办 一年级孩子上课不注意听讲怎么办 一年级孩子上课说话不听课怎么办 一年级孩子上课不听课怎么办 小学一年级学生上课不专心怎么办? 小孩听课注意力不集中怎么办 小孩子上课精神不集中怎么办 孩子说我不画了怎么办 幼儿园小朋友上课不专心怎么办 孩子写作业不专心怎么办 小孩做作业不专心怎么办 孩子上课精力不集中怎么办 四岁宝宝吃饭慢怎么办 5岁宝宝吃饭慢怎么办 小学一年级上课不专心怎么办 5岁儿童不专心怎么办 小孩子做作业不专心怎么办 孩子做作业不专心怎么办 小孩学了就忘怎么办 小孩学过就忘了怎么办 做事老是注意力不集中怎么办 做事无法专注注意力不集中怎么办 幼儿园孩子上课不认真听讲怎么办