-
2019-03-15 14:57:42
代码:
function [newX,T,meanValue] = pca_row(X,CRate) %每行是一个样本 %newX 降维后的新矩阵 %T 变换矩阵 %meanValue X每列均值构成的矩阵,用于将降维后的矩阵newX恢复成X %CRate 贡献率 %计算中心化样本矩阵 meanValue=ones(size(X,1),1)*mean(X); X=X-meanValue;%每个维度减去该维度的均值 C=cov(x);%计算协方差矩阵 %计算特征向量V,特征值D [V,D]=eig(C); %将特征向量按降序排序 [dummy,order]=sort(diag(D),'descend'); V=V(:,order);%将特征向量按照特征值大小进行降序排列 d=diag(D);%将特征值取出,构成一个列向量 newd=d(order);%将特征值构成的列向量按降序排列 %取前n个特征向量,构成变换矩阵 sumd=sum(newd);%特征值之和 for j=1:length(newd) i=sum(newd(1:j,1))/sumd;%计算贡献率,贡献率=前n个特征值之和/总特征值之和 if i>CRate%当贡献率大于95%时循环结束,并记下取多少个特征值 cols=j; break; end end T=V(:,1:cols);%取前cols个特征向量,构成变换矩阵T newX=X*T;%用变换矩阵T对X进行降维 end
更多相关内容 -
PCA算法MATLAB实现,附例子原始数据
2018-11-05 19:19:54可由MATLAB实现的PCA算法实例,附实例原始数据。调试图像效果很好 -
PCA算法matlab实现
2018-07-11 17:55:03PCA算法的实现,希望能帮助到大家。。。。。。。。。。。。。。。。。。。。。。。。。。。。 -
pca算法matlab程序
2013-06-06 14:04:17很好,很详细的pca代码,解释很清晰,对初学者有一定的帮助 -
MATLAB实现PCA算法
2021-10-16 11:53:16前言 最近在看有关PCA的东西,看完后准备用MATLAB实现,谁知道MATLAB一堆函数,头都快看晕了,因此整理一下。 pca前言
最近在看有关PCA的东西,看完后准备用MATLAB实现,谁知道MATLAB一堆函数,因此整理一下。
PCA原理
这里不推导数学公式,推导数学公式已经有其他很多讲的非常好的博客了。我这里尽量用通俗易懂的语言讲解一下。
PCA的过程是这样的,首先求出原始矩阵A(mxn)的协方差矩阵(mxm),然后对协方差矩阵求特征值。假设原始数据是n维,想要降到k维,则取前k个最大的特征值,将这k个特征值对应的特征向量作为系数矩阵,用原始数据乘以该系数矩阵便实现了降维。
这里需要说明一下的是,如果我也不知道想降低到多少维度,仅仅是想保证方差贡献度为99%以上,该如何做呢?简单,上述过程中不是求出了n个特征值吗,假设说前k个特征值的和
/
所有特征值的和达到了99%,那么k即为所求。MATLAB实现
注意事项
原始数据A在使用PCA进行压缩之前必须中心化,即保证每列数据均值为0。那到底需不需要进行标准化呢(使得数据均值为0,标准差为1)?这个需要根据数据的实际情况考虑,如何不同特征之间数值相差太大,则建议进行标准化。matlab中有可直接使用的标准化函数
normalize
。[coeff,latent,explained]=pcacov(A); %1设定方差贡献度为99% for i=1:length(explained) if sum(explained(1:i))>99 ans=i; break; end end tran=coeff(:,1:ans); B=A*coeff; %仅仅取前k维向量 %tran=coeff(:,1:k); B=A*coeff;
解释一下,
coeff
为主成分系数,也就是原始矩阵A
的协方差矩阵所对应的特征值的特征向量(由大到小排列,列向量一一对应)。latent
为每个主成分所对应的方差,explained
则是每个主成分所对应的方差的占比情况。可以理解为explained
是将latent
进行了0-1的归一化。一些说明
实现PCA的方法,也就是求出协方差矩阵后,求对应的特征值和特征向量的方法有两种,一是特征值分解,二是奇异值分解SVD。matlab函数pcacov使用的是奇异值分解,适用于原始数据A(mxn)m远大于n的情况,这个时候使用特征值分解会不太准。这里有点赘述,可忽略。
最后
如果有不当或错误之处,欢迎留言指正。
-
人脸识别PCA算法matlab实现及详细步骤讲解.doc
2021-10-07 14:04:41人脸识别PCA算法matlab实现及详细步骤讲解.doc -
PCA算法MATLAB
2016-12-20 12:11:31PCA算法MATLAB -
基于PCA算法人脸识别的MATLAB实现.pdf
2021-06-28 12:08:51基于PCA算法人脸识别的MATLAB实现.pdf -
matlab实现基于PCA的人脸识别算法
2018-05-23 15:39:58基于PCA的人脸识别算法,matlab实现,使用的是ORL数据库,需要配合使用 -
PCA故障诊断(Matlab代码),pca算法matlab代码,matlab
2021-09-10 18:52:46主成分分析方法,用于故障诊断,能够实现故障特征提取 -
人脸识别PCA算法matlab实现及详细步骤讲解
2021-04-20 08:34:13%FaceRec.m%PCA人脸识别修订版,识别率88%%calc xmean,sigma and its eigen decompositionallsamples=[];%所有训练图像for i=1:40for j=1:5a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg'));%imshow...%FaceRec.m
%PCA人脸识别修订版,识别率88%
%calc xmean,sigma and its eigen decomposition
allsamples=[];%所有训练图像
for i=1:40
for j=1:5
a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg'));
%imshow(a);
b=a(1:112*92);%b是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上
到下,从左到右
b=double(b);
allsamples=[allsamples;b];%allsamples是一个M*N矩阵,allsamples中每一行数
据代表一张图片,其中M=200
end
end
samplemean=mean(allsamples);%平均图片,1×N
for i=1:200xmean(i,:)=allsamples(i,:)-samplemean;%xmean是一个M×N矩阵,xmean
每一行保存的数据是“每个图片数据-平均图片”
end;
%获取特征值及特征向量
sigma=xmean*xmean';%M*M阶矩阵
[v d]=eig(sigma);
d1=diag(d);
%按特征值大小以降序排列
dsort=flipud(d1);
vsort=fliplr(v);
%以下选择90%的能量
dsum=sum(dsort);
dsum_extract=0;
p=0;
while(dsum_extract/dsum<0.9)
p=p+1;
dsum_extract=sum(dsort(1:p));
end
i=1;
%(训练阶段)计算特征脸形成的坐标系
base=xmean'*vsort(:,1:p)*diag(dsort(1:p).^(-1/2));
%base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化(使其方差为1)
%详见《基于PCA的人脸识别算法研究》p31
%xmean'*vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程
%while(i<=p&&dsort(i)>0)
%base(:,i)=dsort(i)^(-1/2)*xmean'*vsort(:,i);%base是N×p阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化(使其方差为1)
%详见《基于PCA的人脸识别算法研究》p31
%i=i+1;%xmean'*vsort(:,i)是小矩阵的特征向量向大矩阵特
征向量转换的过程
%end
%以下两行add by gongxun将训练样本对坐标系上进行投影,得到一个M*p阶矩阵allcoor allcoor=allsamples*base;%allcoor里面是每张训练人脸图片在M*p子空间中的一个点,即在子空间中的组合系数,
accu=0;%下面的人脸识别过程中就是利用这些组合系数来进行识别
-
pca算法matlab实现
2012-12-07 20:45:45基于matlab的pca算法,使用svd算法。 -
【图像压缩】基于主成分分析PCA算法实现图像压缩matlab源码.md
2021-08-09 13:11:08【图像压缩】基于主成分分析PCA算法实现图像压缩matlab源码.md -
用matlab实现的pca算法
2021-04-22 18:26:25用matlab实现的pca算法matlab2020-10-24下载地址https://www.codedown123.com/45551.html用matlab实现的pca算法,用于将维,适用于各种试验,如人脸识别程序资源下载此资源下载价格为2D币,请先登录资源文件列表PCA-...用matlab实现的pca算法
matlab
2020-10-24
下载地址
https://www.codedown123.com/45551.html
用matlab实现的pca算法,用于将维,适用于各种试验,如人脸识别程序
资源下载此资源下载价格为2D币,请先登录
资源文件列表
PCA-Face-Recognition/PCA-based Face Recognition System.htm , 37858
PCA-Face-Recognition/PCA-Face-Recognition.rar , 183427
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/CreateDatabase.m , 1865
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/EigenfaceCore.m , 2930
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/example.m , 1303
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/Readme.txt , 1352
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/Recognition.m , 2541
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/1.jpg , 6264
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/10.jpg , 6852
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/2.jpg , 6007
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/3.jpg , 5680
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/4.jpg , 6525
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/5.jpg , 4341
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/6.jpg , 5876
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/7.jpg , 4352
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/8.jpg , 6725
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/9.jpg , 5570
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TestDatabase/Thumbs.db , 36864
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/1.jpg , 6391
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/10.jpg , 4223
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/11.jpg , 5967
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/12.jpg , 5870
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/13.jpg , 4363
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/14.jpg , 4360
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/15.jpg , 6681
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/16.jpg , 6693
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/17.jpg , 5417
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/18.jpg , 5448
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/19.jpg , 6827
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/2.jpg , 6219
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/20.jpg , 6746
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/3.jpg , 6046
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/4.jpg , 6195
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/5.jpg , 5826
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/6.jpg , 5986
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/7.jpg , 6507
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/8.jpg , 6506
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/9.jpg , 4285
PCA-Face-Recognition/PCA_based Face Recognition System/PCA_based Face Recognition System/TrainDatabase/Thumbs.db , 73728
PCA-Face-Recognition/PCA_based Face Recognition System.zip , 181668
-
人脸识别PCA算法MATLAB
2018-07-18 16:18:50基于的人脸识别算法,首先应用变换,求出训练人脸空间的特征值,对特征值进行一定的取舍,然后构成一个新的低维正交基空间,我们将所有的人脸投影在这个低维空间中,然后计算与待测图像的人脸最近的人脸图像,最后... -
PCA-matlab实现(详细注释)
2017-11-28 23:16:14降维算法PCA在matlab平台下的使用demo,采用自带函数,注释详细。 -
PCA算法人脸识别_人脸识别_PCA_matlab
2022-04-21 21:59:07资源名:PCA算法人脸识别_人脸识别_PCA_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有... -
Matlab人脸识别-PCA算法
2018-12-05 21:59:02这是一个基于PCA的人脸识别算法,程序语言是Matlab,亲测能用。而且里面有PDF可以学习相应的原理和数学计算过程。有助于学习机器学习的降维算法。 -
基于PCA算法人脸识别的matlab实现.pdf
2021-07-10 10:31:54基于PCA算法人脸识别的matlab实现.pdf -
svd算法matlab代码-pca-experiments:通过示例和自定义实现简单解释PCA降维方法
2021-05-27 18:25:39svd算法matlab代码主成分分析(PCA)实验 主成分分析(PCA)非常有用,并且是统计和机器学习中常用的算法之一。 该工具被广泛用于各种应用中,例如用于可视化和分析的降维,压缩,离群值检测和图像处理。 PCA是我最... -
基于PCA算法的手写数字识别(matlab)
2020-07-03 17:22:56PCA算法是基于图像重构的方法进行图像特征识别的。内有训练样本、多个测试图片以及文档说明。 识别步骤: ① 选择训练样本 ② 计算样本平均数字特征,数字特征空间 ③ 读取待识别数字,进行连通分量分割,确定需要... -
svd算法matlab代码-pca:主成分分析
2021-05-27 18:18:05svd算法matlab代码 PCA Matlab PCA algorithm sample code using SVD -
PCA故障诊断(Matlab代码),pca算法matlab代码,matlab源码.zip
2021-10-15 00:47:30PCA故障诊断(Matlab代码),pca算法matlab代码,matlab源码 -
PCA算法学习_2(PCA理论的matlab实现)
2021-04-23 06:33:34前言在前面的博文 PCA算法学习_1(OpenCV中PCA实现人脸降维) 中已经初步介绍了PCA算法的大概流程及在人脸降维上面的应用。本文就进一步介绍下其理论基础和matlab的实现(也是网上学者的代码)。开发环境:Matlab2012a... -
matlab实现pca聚类
2017-12-04 21:21:35matlab 实现pca聚类算法,仅有matlab脚本文件.。。。。 -
ihs、pca、加权平均的图像融合算法MATLAB实现
2021-03-22 14:30:16像素级融合算法的三种基础算法的MATLAB实现,仅供参考 像素级融合算法的三种基础算法的MATLAB实现,仅供参考 -
PCA算法实例
2015-10-12 17:18:50此为MATLAB程序,里面详细介绍了PCA主成分分析,并附有数据,希望对大家有帮助。 -
PCA算法学习(Matlab实现)
2015-10-23 16:40:00PCA(主成分分析)算法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的。 实现数据降维的步骤: 1、将原始数据中的每一个样本用向量表示,把所有样本组合起来构成一个矩阵,...