C=40; %样本的类别
t=3; %用于训练的每类样本数
Ni=10; %每类的样本数
all_train=C*t; %训练样本总数
all_test=C*Ni-all_train;
L=112*92; %样本维数
D=3; %映射矩阵维数112*D
experiment=1; %实验次数
number=zeros(experiment,Ni);%每行前t个用于训练,其余(Ni-t)个用于测试
for rr=1:experiment
number(rr,:)=randperm(Ni);%随机产生用于训练和测试的样本序号
end
%------------input train sample-------------------
train=cell(1,all_train);
train_Y=cell(1,all_train);
meanrate=0;%10次试验的平均识别率
fprintf('每类 训练样本个数:%2d ',t) ;
fprintf('每类 测试样本个数:%2d\n',Ni-t);
for e=1:experiment
fprintf('第 %2d 组实验 不同维数的识别率\n',e);
a=1;%用来计数
class=[];
for i=1:C
for j=1:t %每类的前t个样本作为训练样本
str=strcat('D:\Program Files\MATLAB\R2008a\work\facial expression\Face_re\src\ORL\s',int2str(i),'\',int2str(number(e,j)),'.pgm');
eval('img=imread(str);');
train{:,a}=double(img);
a=a+1;
class=[class i];
end
end
%------------[eigvector,eigvalue]=TPCA(A,gnd);------------
ratematrix=[];
[eigenvector,eigenvalue]=TPCA(train);
eigvalue=diag(eigenvalue);
[Sr,index]=sort(-eigvalue);
for dim=1:D
vector=eigenvector(:,index(1:dim));
vector=orth(vector);
for c=1:all_train
train_Y{1,c}=train{:,c}*vector;
end
%------------input test sample and compute the rate-------------------
success=0;
fail=0;
for n=(t+1):Ni %number :(t+1)---Ni做测试
for j=1:C
test=double(imread(strcat('D:\Program Files\MATLAB\R2008a\work\facial expression\Face_re\src\ORL\s',int2str(j),'\',int2str(number(e,n)),'.pgm')));
test_Y=test*vector;%将测试样本投影
%-------------comput Euclidean distance--------------
distance=[];
for m=1:all_train
tt=double(test_Y)-double(train_Y{:,m});
d=0;
for di=1:dim
everydis=norm(tt(:,di));
d=d+everydis;
end
distance=[distance d];
end
%--------find the minimum distance -----------------
min_num=find(distance==min(distance));
predict=floor((min_num-1)/t)+1;
if predict==j
success=success+1;
else
fail=fail+1;
%fprintf('%d.jpg fails to match!\n',j);
end
end
end
rate=(success/all_test)*100;
ratematrix=[ratematrix rate/100];
fprintf('dim:%2d',dim);
fprintf(' rate:%4.2f%%',rate);
fprintf(' success:%2d',success);
fprintf(' fail:%2d',fail);
fprintf(' total:%2d\n',all_test);
end
meanrate=meanrate+ratematrix/experiment;
end
colum=size(meanrate,2);
fprintf('每类 训练样本个数:%2d ',t) ;
fprintf('每类 测试样本个数:%2d\n',Ni-t);
fprintf('%2d组实验,不同维数的平均识别率\n',experiment);
for dim=1:colum
fprintf('dim:%2d',dim);
fprintf(' meanrate:%4.4f\n',meanrate(:,dim));
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
matlab_2DPCA二维主成分分析的人脸识别,在ORL人脸库上进行了测试 (402个子文件)
face_recogntion.m 3KB
TPCA.m 889B
7.pgm 10KB
6.pgm 10KB
10.pgm 10KB
4.pgm 10KB
4.pgm 10KB
5.pgm 10KB
2.pgm 10KB
9.pgm 10KB
8.pgm 10KB
1.pgm 10KB
1.pgm 10KB
5.pgm 10KB
7.pgm 10KB
6.pgm 10KB
3.pgm 10KB
10.pgm 10KB
3.pgm 10KB
3.pgm 10KB
9.pgm 10KB
8.pgm 10KB
2.pgm 10KB
10.pgm 10KB
6.pgm 10KB
1.pgm 10KB
3.pgm 10KB
7.pgm 10KB
5.pgm 10KB
5.pgm 10KB
8.pgm 10KB
4.pgm 10KB
5.pgm 10KB
6.pgm 10KB
1.pgm 10KB
3.pgm 10KB
4.pgm 10KB
2.pgm 10KB
3.pgm 10KB
2.pgm 10KB
8.pgm 10KB
1.pgm 10KB
1.pgm 10KB
9.pgm 10KB
7.pgm 10KB
4.pgm 10KB
8.pgm 10KB
3.pgm 10KB
2.pgm 10KB
9.pgm 10KB
8.pgm 10KB
10.pgm 10KB
5.pgm 10KB
7.pgm 10KB
5.pgm 10KB
9.pgm 10KB
5.pgm 10KB
10.pgm 10KB
6.pgm 10KB
10.pgm 10KB
6.pgm 10KB
10.pgm 10KB
4.pgm 10KB
9.pgm 10KB
7.pgm 10KB
9.pgm 10KB
2.pgm 10KB
7.pgm 10KB
4.pgm 10KB
2.pgm 10KB
10.pgm 10KB
2.pgm 10KB
9.pgm 10KB
7.pgm 10KB
4.pgm 10KB
6.pgm 10KB
1.pgm 10KB
8.pgm 10KB
1.pgm 10KB
6.pgm 10KB
8.pgm 10KB
3.pgm 10KB
3.pgm 10KB
8.pgm 10KB
6.pgm 10KB
3.pgm 10KB
4.pgm 10KB
5.pgm 10KB
9.pgm 10KB
4.pgm 10KB
4.pgm 10KB
6.pgm 10KB
10.pgm 10KB
8.pgm 10KB
5.pgm 10KB
1.pgm 10KB
6.pgm 10KB
7.pgm 10KB
4.pgm 10KB
4.pgm 10KB
共 402 条
- 1
- 2
- 3
- 4
- 5
资源评论
- 崽崽4142023-05-02实在是宝藏资源、宝藏分享者!感谢大佬~
wouderw
- 粉丝: 275
- 资源: 2960
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功