片Рimgmean=mean(imgdata,2); % 平均图片,N维列向量Рfor i=1:50 Р minus(:,i) = imgdata(:,i)-imgmean; % minus是一个N*M矩阵,是训练图和平均图之间的差值Рend;Рcovx=minus'* minus; % M * M 阶协方差矩阵Р[COEFF, latent,explained] = pcacov(covx'); %PCA,用协方差矩阵的转置来计算以减小计算量Р% 选择构成95%的能量的特征值Рi=1;Рproportion=0;Рwhile(proportion < 95)Р proportion=proportion+explained(i);Р i=i+1;Рend;Рp=i-1;Р% 训练得到特征脸坐标系Рi=1;Рwhile (i<=p && latent(i)>0)Р base(:,i) = latent(i)^(-1/2)*minus * COEFF(:,i); % base是N×p阶矩阵,用来进行投影,除以latent(i)^(1/2)是对人脸图像的标准化Р i = i + 1;РendР% 将训练样本对坐标系上进行投影,得到一个 p*M 阶矩阵为参考Рreference = base'*minus;Р%% 测试过程——在测试图片文件夹中选择图片,进行查找测试Рa=im;Рb=a(1:10304);Рb=double(b);Рb=b';Рobject = base'*(b-imgmean);Рdistance=100000;Р%最小距离法,寻找和待识别图片最为接近的训练图片Рfor k=1:50 Р temp= norm(object - reference(:,k));Р if (distance > temp)Р which = k;Р distance = temp;