matlab的eigs函数使用小tips

来源:互联网 发布:网络理财哪里做得好 编辑:程序博客网 时间:2024/06/03 12:01

忙活了一天再加一个上午,查阅了很多资料,终于捣鼓出来了

在调用LLE函数的时候,发现中间用到了一个eigs函数

[Y,eigenvals] = eigs(M,d+1,0,options);

这行代码一开始也看不懂,直接调用lle降维,之后再进行libsvm识别的时候发现准确率一直上下波动的很大,以为是libsvm的问题,看代码半天也看不懂,后来放弃了,就回过头来看lle函数,一步步查数据,发现是再调用eigs函数的时候,产生特征向量的时候,因为特征值是唯一的,但是每个特征值对应的特征向量其实是可以有很多种情况的(具体原因百度吧===数学不好,懒得解释哈哈哈)

在matlab论坛上看到有网友遇到跟我一样的情况,可惜联系不上人家是怎么解决的,只能靠自己了

看matlab里面的eigs  heip其实能看出来的

options.disp = 0; 
options.isreal = 1; 
options.v0=ones(3019,1);
options.issym = 1; 

这几行代码定义了options的一些属性,其中有一个属性值opt.v0,(描述是Starting vector)

然后再往下翻,你会发现matlab特别人性化的给了提醒


哈哈哈哈看懂了吗,所以很简单,只要给这个v0设置初始值,就可以保证每次运行的结果是固定值啦

v0要求的值必须宿舍n*1的矢量,也就是n行1列的向量,这个n就是你的样本数

搞定!

希望能帮到大家!


0 0