资源简介
近红外光谱快速检测校正集验证集划分方法代码
代码片段和文件信息
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
评论
共有 条评论