📄 svd_right_rate.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% right_rate=50.00% %%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
clc
load train
RightNum=0;
TESTIMGNUM=400;
wrong=[];
for TestImgNum=1:400
str=strcat(int2str(TestImgNum),'.bmp'); %concatenates two strings that form the name of the image
str=strcat('F:\zgq\人脸识别\work\work\行矩阵\',str);
eval('InputImage=imread(str);');
InputImage=double(InputImage);
%InputImage=InputImage*InputImage';
[V d U]=svd(InputImage);
InImWeight=[];
for ii=1:K
InImWeight=[InImWeight;d(ii,ii)];
end
%A=InputImage';
%L=A*A';
%[vv dd]=eig(L);
%v=[];
%d=[];
%for iii=1:size(vv,2)
% v=[v vv(:,iii)];
% d=[d dd(iii,iii)]; %[d] is row行向量//4.6 tropic zhang.
%end
%[B index]=sort(d);%B return an ascending sequence;index is the position of new numder in original row.//4.6 tropic
%ind=zeros(size(index));%also the size of [d];a row//4.6 tropic zhang.
% dtemp=zeros(size(index));%also the size of [d];a row //4.6 tropic zhang.
% vtemp=zeros(size(v));%a matrix
% len=length(index);
% for iiii=1:len
% dtemp(iiii)=B(len+1-iiii);
% ind(iiii)=len+1-index(iiii);
% vtemp(:,ind(iiii))=v(:,iiii);
% end
% d=dtemp(1:K);
% v=vtemp(:,1:K);
%InImWeight_kl=d';
%InImWeight=InImWeight+InImWeight_kl/10000;
%InImWeight=single(InImWeight);
%%%%----------方法三||方法四-----
%inimweight_mean=mean(InImWeight);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%% 相似度计算计算 %%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
e=[];
for i=1:M
q = D(:,i);
%%%%%%%--------- 方法二--------------%%%%
%-----------特征脸空间夹角最小-------%%%%%%
mag= InImWeight'*q/(norm(InImWeight)*norm(q)) ;
e = [e mag];
end
%%%%%%%--------- 方法三----------%%%%%
%%%%---------相关系数法---------%%%
%q_mean=mean(q);
%mag=(InImWeight-inimweight_mean)'*(q-q_mean)/(norm(InImWeight-inimweight_mean)*norm(q-q_mean));
%e = [e mag];
%end
kk = 1:size(e,2);
MaximumValue=max(e);
MinimumValue=min(e);
%%% -------最小夹角||相关系数-----%%%
t=max(e);
[mM nN]=size(e);
l=0;
for i=1:nN
if(e(i)==t)
l=i;
end
end
if TestImgNum>=1&&TestImgNum<=10
if l==1
RightNum=RightNum+1;
else
wrong=[wrong TestImgNum];
% TestImgNum
% [mmm nnn]=sort(e);
% nnn
end
end
if TestImgNum>=11&&TestImgNum<=100
temp=int2str(TestImgNum-1);
if l==str2num(temp(1,1))+1
RightNum=RightNum+1;
else
wrong=[wrong TestImgNum];
% TestImgNum
% [mmm nnn]=sort(e);
% nnn
end
end
if TestImgNum>=101&&TestImgNum<=400
temp=int2str(TestImgNum-1);
if l==str2num(temp(1,1:2))+1
RightNum=RightNum+1;
else
wrong=[wrong TestImgNum];
% TestImgNum
% [mmm nnn]=sort(e);
% nnn
end
end
end
%wrong2=wrong;
rate=RightNum/TESTIMGNUM
%save wrongdata2 wrong2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -