📄 pcamahala.m
字号:
function [CenterX,MahalaD,MahalaDt,Xt]=PCAMahala(X,Xa,e)
% X (m x n)为预处理之后的校正集光谱矩阵(row is samples,column is spectrum)
% Xa(p x n)为预处理之后校正集样品之外的所有样品的光谱矩阵(row is samples,column is spectrum)
% Xt(l x n)为预处理之后经过马氏距离筛选的预测集光谱矩阵(row is samples,column is spectrum)
% MahalaD(m x 1)为校正集样品的马氏距离
% MahalaDt(p x 1)为校正集样品之外的所有样品的光谱矩阵
% l为经过马氏距离筛选出来的样品数
% e(设定设置阈值范围)马氏距离标准差的权重系数
[m,n]=size(X);
[p,n]=size(Xa);
Xt=zeros(p,n);
Xm=mean(X);
CenterX=X-ones(m,1)*Xm;
M=CenterX'*CenterX./(m-1);
Minv=inv(M);
% (计算校正集样品的马氏距离)
for i=1:m
MahalaD(i)=sqrt((X(i,:)-Xm)*Minv*(X(i,:)-Xm)');
end
MahalaDm=mean(MahalaD);
Dstd=std(MahalaD);
l=1;
for i=1:p
MahalaDt(i)=sqrt((Xa(i,:)-Xm)*Minv*(Xa(i,:)-Xm)'); %(计算预测集的马氏距离)
if MahalaDt(i)<(MahalaDm+e*Dstd) %(筛选预测集样品)
Xt(l,:)=Xa(i,:);
l=l+1;
end
end
for i=p:-1:l
Xt(i,:)=[];
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -