die_dai.m

来自「自己写的一个matlab小程序」· M 代码 · 共 51 行

M
51
字号
function [B,C,Miu]=Die_Dai(B,C,Miu,sig,vzm,v)
% 通过迭代训练特征子空间,训练图像在特征脸上的投影和均值

N=20;
DN=50;
flag=1;
k=1;
while k<DN&flag==1
    
error=v-Miu*ones(1,size(v,2))-B*C;
%fid = fopen('error.txt','w');
%fprintf(fid,'%6.2f  %12.8f\n',error);
%fclose(fid);
psi=zeros(size(v));
for i=1:size(v,1)
    for j=1:size(v,2)
        psi(i,j)=2*error(i,j)*sig^2/(error(i,j)^2+sig^2)^2;
    end 
end


for i=1:size(v,1)
    for j=1:size(v,2)
        Nsigam(i,j)=2/(sig^2);
    end
end

Bg=B;

Hb=Nsigam*(C.*C)';
Hc=(B.*B)'*Nsigam;
yivector=ones(size(v,2),1);
Hmiu=Nsigam*yivector;

    
Bdiff=-psi*C';
Cdiff=-B'*psi;
Miudiff=-psi*yivector;


B=B-Bdiff./Hb;
C=C-Cdiff./Hc;
Miu=Miu-Miudiff./Hmiu;

if subspace(B,Bg)<1e-1
    flag=0;
end
k=k+1;
end
return;

⌨️ 快捷键说明

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