• shijianyang
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 2
    下载次数
  • 2019-01-17 11:10
    上传日期
对60张人脸进行辨识,利用PCA对12864*12864的数据降维,是得数据能够讲解到10*12864的维度,然后在进行标签识别。
PCA.zip
  • PCA.m
    2.6KB
内容介绍
function [coeff] = PCA(phi) [r c] = size(phi); % 样本均值 meanVec = mean(phi); % 计算协方差矩阵的转置 covMatT Z = (phi-repmat(meanVec, r, 1)); B = Z' * Z; % 计算 covMatT 的前 k 个本征值和本征向量 [V, D] = eigs(B,10); % 得到协方差矩阵 (covMatT)' 的本征向量 % V = Z'*V; % 本征向量归一化为单位本征向量 for i=1:10 V(:,i)=V(:,i)/norm(V(:,i)); end % 线性变换(投影)降维至 k 维 coeff = V; % 保存变换矩阵 V 和变换原点 meanVec % data=coeff(:,1:k); % %PCA算法,matlab实现 % % function F=pcad(A,n)%A是M*N % %测试实例A=[2.5,0.5,2.2,1.9,3.1,2.3,2,1,1.5,1.1;2.4,0.7,2.9,2.2,3.0,2.7,1.6,1.1,1.6,0.9] % %结果F=[0.8280,-1.7776,0.9922,0.2742,1.6758,0.9129,-0.0991,-1.1446,-0.4380,-1.2238] % %PCA第一步:均值化 % X=phi-repmat(mean(phi,60),60,1);%去均值 % X= zscore(X); % % PCA第二步:求特征协方差矩阵 % B=cov(X);%求协方差 % % PCA第三步:求特征协方差矩阵的特征值和特征向量 % [v,d]=eig(B);%求特征值和特征向量 % L_eig_vec = []; % for i = 1 : size(v,2) % if( d(i,i)>1 ) % L_eig_vec = [L_eig_vec v(:,i)]; % end % end % coeff=X*L_eig_vec; % [dummy,order] = sort(diag(-d)); % v = v(:,order); % coeff=X'*v'; % PCA第四步:将特征值按照从大到小的顺序排序 % d1=diag(d);%取出对角矩阵,也就是把特征值提出来组成一个新的60*1的d1矩阵 % [d2 , index]=sort(d1,'descend'); % vsort=v(:,index); % %特征值以升序排序 d2是排序后的结果 index是数排序以前的排名位置 % % cols=size(v,2);% 特征向量矩阵的列数 % % for i=1:cols %对特征向量做相反位置的调整 是个降序排列。这个过程把特征值和特征向量同时做相应的降序排列 % % vsort(:,i) = v(:,index(cols-i+1) ); % vsort 是一个M*col(注:col一般等于M)阶矩阵,保存的是按降序排列的特征向量,每一列构成一个特征向量 % % %vsort保存的是协方差矩阵降序后的特征向量,为M*M阶 % % dsort(i) = d1(index(cols-i+1)); % dsort 保存的是按降序排列的特征值,是一维行向量,1*M % % end %完成降序排列 % % M=vsort(:,1:cols);%提取主成分量 % % %PCA第五步:将样本点投影到选取的特征向量上 % % coeff=(X'*M);%最终的投影 % dsum=sum(d2); %对所有的特征值求和 % dsum_extract = 0;%求前几个特征值之和,当前几个特征值之和大于90%时,可以认为这几个特征值可以表征当前矩阵 % p = 0; % while( dsum_extract/dsum > 0.01) % p = p + 1; % dsum_extract = sum(dsort(1:p)); % end % %第五步:计算前p个特征值所对应的的特征向量组成的矩阵,计算降维后的样本矩阵 % vsort = vsort(:,1:p);%提取前p列特征向量获得60*p矩阵 % fprintf(1,'Feature extraction and calculating newData...\n'); % coeff=(X'*vsort);%生成N行p列的矩阵,达到降维的效果 % B=cov(X); % [v,d]=eig(B);%求特征值和特征向量 % L_eig_vec = []; % for i = 1 : size(v,2) % if( d(i,i)>1 ) % L_eig_vec = [L_eig_vec v(:,i)]; % end % end % coeff=X' * L_eig_vec; end
评论
    相关推荐
    • PCA人脸识别.zip
      PCA人脸识别全部代码及其相关资料,可以运行
    • PCA人脸识别参考.rar
      pca人脸识别算法,可以用来参考。其中用到的方法为主成分分析与k—means方法
    • PCA人脸识别.zip
      基于PCA人脸识别,有原理介绍,简单易懂,还有程序
    • 人脸识别PCA算法MATLAB
      基于的人脸识别算法,首先应用变换,求出训练人脸空间的特征值,对特征值进行一定的取舍,然后构成一个新的低维正交基空间,我们将所有的人脸投影在这个低维空间中,然后计算与待测图像的人脸最近的人脸图像,最后...
    • 人脸识别 pca和svm
      人脸识别 运用pca(主成分分析)和svm(支持向量机)来进行识别
    • 人脸识别pca技术源程序
      人脸识别pca技术源程序,用matlab编写的
    • 模式识别 PCA 人脸识别
      利用matlab写的PCA函数 图片可以自己更改
    • 人脸识别PCA算法.zip
      基于matlab的人脸识别主成分分析算法,步骤很详细都有批注 基于matlab的人脸识别主成分分析算法,步骤很详细都有批注 基于matlab的人脸识别主成分分析算法,步骤很详细都有批注
    • 人脸识别PCA
      PCA人脸识别,利用Matlab软件实现 1. 算法PCA人脸识别或Eigenfaces人脸识别 2. 采用数据库为剑桥大学ORL人脸数据库,包含40个人的400张人脸图像(每 人对应10张),图像为92x112灰度图像(256灰度级) 3. 对于每个人...
    • PCA人脸表情识别.zip
      PCA人脸表情识别全部代码及其资料,可以运行