• 大小: 1KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-02
  • 语言: 其他
  • 标签: PCA  马氏距离  

资源简介

PCA结合马氏距离,还要必须大于50个字,凑合吧,主要是PCA 结合马氏距离进行的。

资源截图

代码片段和文件信息

%# function [seloutMDeMD]=nirmahal(datae)
%#
%#  AIM:   利用马氏距离判别方法(Mahalanobis’distance)确定离群点,用于剔除异常样品
%#
%#  INPUT:  data        m×n的矩阵,m个光谱,n个变量
%#          e           马氏距离标准差的权重系数%%%%  参数e=1.5
%# 
%#  OUTPUT: sel         正常样品的编号
%#          out         异常样品的编号
%#          MD          满足方差的累计贡献率要求的主成分数
%#          eMD         马氏距离的阈值
%#
%#  AUTHOR: 王毅 
%#  EMAIL:  wang727yi@hotmail.com
%#  VERSION:1.0 (13/03/2009)


function [seloutMDeMD]=nirmahal(datae)

[mn]=size(data);

[COEFF] = princomp(data);%princomp主成分分析  
T=data*COEFF;      % 计算m个样品原始光谱矩阵的得分矩阵

mT=mean(T);  % 计算m个样品得分矩阵的平均光谱

cT=T-ones(m1)*mT;   % 得分矩阵中心化

M=cT‘*cT./(m-1);  % 计算马氏矩阵

Minv=inv(M);  % 求马氏矩阵M的逆矩阵


% 计算m个样品的马氏距离,并画图,可标出离群点
for i=1:m
    MD(i)=sqrt((T(i:)-mT)*Minv*(T(i:)-mT)‘);
end


% 利用阈值e判断出m个样品中的奇异样品
mMD=mean(MD);
sMD=std(MD);
eMD=mMD+e*sMD;
p=1;
q=1;
for i=1:m
    if MD(i)        sel(p)=i;
        p=p+1;
    else
        out(q)=i;
        q=q+1;
    end
end

num=1:m;          
scatter(numMD‘.‘)% 画图并标出离群点。X和Y是数据向量,以X中数据为横坐标,以Y中数据位纵坐标描绘散点图
xlabel(‘样品编号‘);
ylabel(‘马氏距离‘);
hold on 
refline(0eMD)%直线
gname

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1410  2015-09-17 21:01  PCA结合马氏距离\nirmahal.m
     目录           0  2018-03-06 21:00  PCA结合马氏距离\

评论

共有 条评论