使⽤Matlab进⾏⾼光谱数据分析(2)Preprocess代码
⼀. 求导
⼀阶导数MATLAB代码:
X1st=diff(X,1);%X 为输⼊光谱矩阵,X1st 为输出⼀阶导数光谱矩阵
⼆阶导数MATLAB代码:
X2st=diff(X,2); %X 为输⼊光谱矩阵,X2st 为输出⼆阶导数光谱矩阵
⼆. 多元散射校正
me=mean(X);
[m,~]=size(X);
matlab求导for i=1:m,
p=polyfit(me,X(i,:),1);
Xmsc(i,:)=(X(i,:)- p(2)*ones(1,n))./(p(1)*ones(1,n));
End
代码中输⼊光谱矩阵为 X,输出光谱矩阵为 Xmsc。
三. 标准正态变量变换 (SNV)
[~,n]=size(X);
rmean=mean(X,2);
dr=X-repmat(rmean,1,n);
Xsnv=dr./repmat(sqrt(sum(dr.^2,2)/(n-1)),1,n);
代码中 X 为光谱输⼊矩阵,Xsnv 为 SNV 处理后光谱输出矩阵。