高光谱预处理方法之去趋势——Matlab实现

光谱去趋势的目的:消除传感器在获取数据时产生的偏移对后期计算产生的影响,将分析集中在数据趋势本身的波动上。

去趋势:数据去趋势,就是对数据减去一条最优(最小二乘)的拟合直线、平面或曲面,使去趋势后的数据均值为零

     操作步骤:

1.长度为N的时间序列,计算其累积离差值并转换为新序列:

2.将y(t)以等长度划分为不重叠的m个区间,n为区间长度,即时间尺度,m为区间数量,为N/n的整数部分;

3.对每一段序列采用最小二乘法线拟合出局部趋势y_n (t)

4.对y(t)剔除每个区间的局部趋势,并计算新序列的均方根:

高光谱预处理方法之去趋势——Matlab实现_第1张图片

Matlab实现去趋势的代码:

data = xlsread('C:\练习数据.xlsx') 
data_c=data(2:end,:)

subplot(2,1,1)
hold on
plot(data(1:1,:),data_c(1:1,:),'Linewidth',2)
%去趋势数据生成,从原始数据中移除
detrend_data =  detrend(data_c(1:1,:))
trend = data_c(1:1,:) - detrend_data
m2=mean(detrend_data)

plot(data(1:1,:),trend(1:1,:),':r','Linewidth',1.5)
title("单线去趋势前")

subplot(2,1,2)
hold on
plot(data(1:1,:),detrend_data(1:1,:),'Linewidth',2)
plot(data(1:1,:),zeros(size(data(1:1,:))))
title("单线去趋势后")

 高光谱预处理方法之去趋势——Matlab实现_第2张图片

你可能感兴趣的:(高光谱预处理方法—matlab,数据分析,matlab)