getscatter.m
来自「使用Fisher线性鉴别分析(FLDA)方法在ORL人脸数据库上进行人脸识别试验」· M 代码 · 共 40 行
M
40 行
function [Sb,Sw,St]=GetScatter(Sample)
%求输入矩阵Sample的散度矩阵
%输入:Sample为待求样本矩阵
%输出:Sb为Sample的类间散布矩阵,Sw为Sample的类内散布矩阵,St为Sample的总体散布矩阵
[dim,N,C]=size(Sample); %N--每类样本的样本容量,C--类别数
Mean=zeros(dim,C);
for t=1:C
sum=zeros(dim,1);
for k=1:N
sum=sum+Sample(:,k,t);
end
Mean(:,t)=(1/N)*sum;
end
%find Sw:
Sw=zeros(dim,dim);
Transcendental_prob=1/C;
Sc=zeros(dim,dim,C);
for t=1:C
for k=1:N
V=Sample(:,k,t)-Mean(:,t);
Sw=Sw+V*V';
end
end
Sw=Sw.*(Transcendental_prob/N);
%find Sb:
S=zeros(dim,dim);
m=zeros(dim,1);
for t=1:C
m=m+Mean(:,t);
end
m=Transcendental_prob.*m;
for t=1:C
V=Mean(:,t)-m;
S=S+V*V';
end
Sb=Transcendental_prob.*S;
%find St
St=Sb+Sw;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?