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

📄 pcamahala.m

📁 用于计算马氏距离
💻 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 + -