本人挤牙膏试的文笔,没有习惯写博客,为了方便以后遇到这个问题不要重头再来,也为了有可能能给其他小伙伴一些建议,还是决定整理整理思路,努力写篇大家看得懂的笔记吧。
由于我要处理的问题是求一个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搜了很久,发现有个哥们直接开悬赏帖,让我有些没有底气了,难道真的这么难搞定吗?没有办法,工作需要,硬着头皮搞。
这个哥们的博客&