close all;clear all;clc;
%% 所有预处理方法皆是按列处理的,即m*n 一行一个样本 一列一个标签
x = xlsread('mix.xlsx');
x = x';
%% 标准化(auto)
[m,n] = size(x);
mx = mean(x);
stdx = std(x);
ax = (x-mx(ones(m,1),:))./stdx(ones(m,1),:);
figure;
plot(ax,'r','markersize',12);
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('ax.xlsx',ax)
%% 数据中心化(center)
[m,n] = size(x);
mx = mean(x);
mcx = (x-mx(ones(m,1),:));
figure;
plot(mcx,'g','markersize',12);
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('mcx.xlsx',mcx)
%% 多元散射校正(msc)
mscdata = x;
Absorbance=mscdata(:,1:end); %得到反射率
Absorbance=Absorbance';
Absorbance_mean=mean(Absorbance);%每个样本吸光度平均
% 多元散射校正MSC
Absorbance_msc=msc(Absorbance,Absorbance_mean);
Absorbance_msc = Absorbance_msc';
setappdata(gcf,'Absorbance_msc',Absorbance_msc);
figure;
plot(Absorbance_msc,'-r');
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('Absorbance_msc.xlsx',Absorbance_msc)
%% 归一化(normalized)
nx = normaliz(x(:,1:end)')';
figure;
plot(nx,'c','markerSize',12);
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('nx.xlsx',nx)
%% 标准正态化(snv)
x_snv = snv(x(:,1:end)')';
figure;
plot(x_snv,'m','markerSize',12);
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('x_snv.xlsx',x_snv)
%% SavitZky一Golay卷积平滑
Absorbance=x(:,1:end); %得到反射率
Absorbance=Absorbance';
[Absorbance_m,Absorbance_n]=size(Absorbance);
Wavenumber=x(:,1); %得到波数
Wavenumber=Wavenumber';
Absorbance_mean=mean(Absorbance);%每个样本吸光度平均
Absorbance_S_G =savgol(Absorbance,15)';
setappdata(gcf,'Absorbance_S_G',Absorbance_S_G);
figure;
plot(Absorbance_S_G,'-k')
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('Absorbance_S_G.xlsx',Absorbance_S_G)
%% SavitZky一Golay一阶求导
Absorbance=x(:,1:end); %得到反射率
Absorbance=Absorbance';
[Absorbance_m,Absorbance_n]=size(Absorbance);;
Absorbance_mean=mean(Absorbance);%每个样本吸光度平均
Absorbance_S_G1 = savgol(Absorbance,7,3,1)';%一阶求导
setappdata(gcf,'Absorbance_S_G1',Absorbance_S_G1);
figure;
plot(Absorbance_S_G1,'-k')
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('Absorbance_S_G1.xlsx',Absorbance_S_G1)
%% SavitZky一Golay二阶求导
Absorbance=x(:,1:end); %得到反射率
Absorbance=Absorbance';
[Absorbance_m,Absorbance_n]=size(Absorbance);
Wavenumber=x(:,1); %得到波数
Wavenumber=Wavenumber';
Absorbance_mean=mean(Absorbance);%每个样本吸光度平均
Absorbance_S_G2 = savgol(Absorbance,7,3,2)';%二阶求导
setappdata(gcf,'Absorbance_S_G2',Absorbance_S_G2);
figure;
plot(Absorbance_S_G2,'-k')
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('Absorbance_S_G2.xlsx',Absorbance_S_G2)
%% 去趋势
sdata = x; %2151 * 220
[m,n] = size(sdata);
%计算均值
mean(sdata);
% 画图
figure;
plot(sdata,'b');
%计算去趋势数据,并且从原始数据中移除
detrend_sdata = detrend(sdata);
trend = sdata - detrend_sdata;
mean(detrend_sdata);
hold on
plot(trend,':r')
plot(detrend_sdata,'m')
plot(zeros(size(m)),':k')
xlabel('Wavelength');
ylabel('Reflectivity');
% 除去坐标轴上面和右边的边框
set(gca,'box','off');
% xlswrite('detrend_sdata.xlsx',detrend_sdata)
评论0