• 大小: 3KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-06-14
  • 语言: Matlab
  • 标签: K-S.m  

资源简介

近红外光谱快速检测校正集验证集划分方法代码

资源截图

代码片段和文件信息

function [vSelectedSampleXSelectedYSelected] = ks(XYNum)
%********X为样本光谱特征集,Num为待选择的样本数目**********
%******** vSelectedSample为选出的样本集 *********

%*************KS第一步*************
%***********计算所有样本之间两两之间的欧氏距离,选择距离最远的两个样本(Z1和Z2)***********
[nRownCol]=size(X); % obtain the size of the X matrix 
mDistance=zeros(nRownRow); %dim a matrix for the distance storage 
vAllofSample=1:nRow; 

for i=1:nRow-1 
     
    vRowX=X(i:); % obtain a row of X 
     
    for j=i+1:nRow 
         
        vRowX1=X(j:); % obtain another row of X         
        mDistance(ij)=norm(vRowX-vRowX1); % calc the Euclidian distance 
              
    end 
     
end 
%********[ab] = max(X)a是每一个列的最大值,b是最大值的位置************
%********min(X)同理*************
%********mDistance是一个行*行的矩阵,第i*j是第i行和第j行的欧氏距离***********
[vMaxvIndexOfmDistance]=max(mDistance);
[nMaxnIndexofvMax]=max(vMax); 
% nMax是欧氏距离的最大值
% 欧氏距离最大值所在的那个点的列数为nIndexofvMax
% 欧氏距离最大值行数为vIndexOfmDistance的第nIndexofvMax列的值

vSelectedSample(1)=nIndexofvMax; 
vSelectedSample(2)=vIndexOfmDistance(nIndexofvMax); 
% 选出欧氏距离最大的那两个样本

%*********KS第二步**************
% 计算剩余z-2个样本与所选取的两个样本(Z1和Z2)的距离,各取最小值,然后选取其中最大值对应的一个样本Z3进入校正集,
% 计算剩余z-3个样本与所选择的这三个样本之间的距离Z1,Z2,Z3的距离并各选取器最小值,然后选取其中最大值对应的一个样本Z4
% 重复上述过程,直至选取Num个校正样本

    for i=3:Num  
    vNotSelectedSample=setdiff(vAllofSamplevSelectedSampl

评论

共有 条评论

相关资源