主成分分析matlab代码.docx

上传人:啊飒飒 文档编号:11557978 上传时间:2021-08-23 格式:DOCX 页数:3 大小:25.40KB
返回 下载 相关 举报
主成分分析matlab代码.docx_第1页
第1页 / 共3页
主成分分析matlab代码.docx_第2页
第2页 / 共3页
主成分分析matlab代码.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《主成分分析matlab代码.docx》由会员分享,可在线阅读,更多相关《主成分分析matlab代码.docx(3页珍藏版)》请在三一文库上搜索。

1、%一如既往的x:m*n,n是样本个数,m是维度%错误之处望指正,虽然结果与pca函数一样吧function y=myPca(x)%求取x的协方差sigma=myCov(x)V,D=eig(sigma);%特征值排序和找出特征值向量duiJiao=diag(D);xuLie,pos=sort(duiJiao,descend);cumsum(xuLie)/sum(xuLie);temp=cumsum(xuLie)/sum(xuLie);for i=1:length(xuLie) if temp(i)0.85 %近似一下,嘿嘿! index=i; ts=temp(i); break; endendn

2、ewXuLie=xuLie(1:index)newTezheng=V(:,pos(1:index)%求方差%下面我要开始对主成分得分了score=;m,n=size(V);for i=1:n for j=1:length(newXuLie) for k=1:m temp(k)=newTezheng(k,j)*x(k,i); end temp2(j)=sum(temp); end score(:,i)=temp2;endcentered=centerMean(score);%没有近似的temp3=V(:,pos(1:length(duiJiao);score2=;for i=1:n for j=

3、1:length(xuLie) for k=1:m temp(k)=temp3(k,j)*x(k,i); end temp2(j)=sum(temp); end score2(:,i)=temp2;endcentered2=centerMean(score2);y.lamda=newXuLie;y.score=score;y.scoreMean=centered;y.coeff=newTezheng;y.ts=ts;y.lamdaO=xuLie;y.scoreO=score2;y.scoreOM=centered2;y.coeffO=V(:,pos(1:length(duiJiao);%子函数

4、,求协方差function s=myCov(x)p,n=size(x);s=zeros(p,p); for i=1:p for j=1:p for k=1:n meanij=mean(x,2); meani=meanij(i); meanj=meanij(j); xki=x(i,k); xkj=x(j,k); temp(k)=(xki-meani)*(xkj-meanj); end s(i,j)=sum(temp)/(n-1); end end%子函数,均值化 function y=centerMean(x)m,n=size(x);A=ones(1,n);B=mean(x,2);y=x-kron(A,B);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1