⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pca_2d.m

📁 MATLAB自已编的二维DLA
💻 M
字号:
person=40;
number=1;
dd=5;
for i=1:person
    for j=1:number
        [T{i,j},map]=imread(strcat('e:\orl\',num2str(i),'\',num2str(j),'.bmp')); 
        a=size(T{i,j});
    end
end
%以下得到全部训练样本平均值
TOTAL=size(a(1),a(2));
for i=1:person
   for j=1:number
        TOTAL=double(TOTAL)+double(T{i,j});
    end
end
TOTAL=TOTAL/(person*number);
a=size(TOTAL);
%求协方差矩阵
R=zeros(a(2),a(2));
for i=1:person
    TEMP=zeros(a(2),a(2));
    for j=1:number
        N2{i,j}=double(T{i,j})-double(TOTAL);
        TEMP=TEMP+(N2{i,j})'*N2{i,j};
    end
    R=R+TEMP;
end
R=R/(person*number);
[pc,latent,explained]=pcacov(R);%pc为特征值 latent为对应的特征矢量
U=pc(:,1:dd);
M=U;
for i=1:person
    for j=1:number
     T2{i,j}=(double(T{i,j})-double(TOTAL))*M;
    end
end
total1=0;
total2=0;
for i=1:person
    for j=number+1:10
        [T1,map]=imread(strcat('e:\orl\',num2str(i),'\',num2str(j),'.bmp'));
        f=(double(T1)-double(TOTAL))*M;
       %求到各个样本的距离
        for x=1:person
            for y=1:number
               distance(x,y)=0.0;
               dd1=0;
               TEMP1=f-T2{x,y};
               for m=1:a(1)
                   for n=1:dd
                     dd1=dd1+TEMP1(m,n).^2;
                  end
               end
               dd1=sqrt(dd1);
               distance(x,y)=dd1;
            end
        end
       %计算识别率
        minnum=distance(1,1);
        flag=1;
        for k=1:person
            for j=1:number
                if(minnum>=distance(k,j))
                    minnum=distance(k,j);
                    flag=k;
                end
            end
        end
        if(flag==i)
        total2=total2+1;
        end
       total1=total1+1;
    end
end
rate=(total2)/(total1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -