matlab之光谱预处理
1.归一化处理,分为均值归一化(mapminmax)和标准化(mapstd)
1.1mapminmax处理,按行逐行将数据归一化到-1-1,若6次采集的549波段的高光谱数据,如矩阵A为549*6,直接mapminmax(A),表示对于每一个波段,将不同批次采集的数据归一化,消除掉采集时外界因素对单波段的影响;
1.2mapstd处理,同mapminmax,按行逐行将数据标准化到0-1;
PS:对于mapstd处理,如果后续要对数据再微分,因为包含0值,所以可以加减极小值eps,若已经存在eps,则加减eps*0.5;
2.微分diff
按照列对光谱微分,单列表示一个完整的光谱曲线,行表示波段个数;同样,以A为例,diff(A)表示对A按行一阶微分,diff(A,1,2)表示对A按列进行一阶微分,“1”表示几阶微分,“2”表示列,当该位置为“1”时表示行。
3.平滑smooth
smooth表示按列对光谱进行曲线平滑,每列为一个完整光谱,行表示波段个数;
调用方式:smooth(A, method),method指平滑的方法,默认为5*5窗口的‘moving’移动平滑,所有形式如下:
'moving ' | 移动平均法(默认情况)。一个低通滤波器,滤波系数为窗宽的倒数 |
' lowess' | 局部回归(加权线性最小二乘和一个一阶多项式模型) |
'loess' | 局部回归(加权线性最小二乘和一个二阶多项式模型) |
'sgolay' | Savitzky -Golay滤波。一种广义移动平均法.滤波系数由不加权线性最小二乘回归和一个多项式模型确定,多项式模型的阶数n可以指定(默认为2) |
'rlowess' | 'lowess'方法的稳健形式。异常值被赋予较小的权重,6倍的平均绝对偏差以外的数据的权重为0 |
'rloess' | 'loess'方法的稳健形式。舁常值被赋予较小的权承.6倍的平均绝对偏差以外的数据的权重为0 |
smooth(A),表示默认为5*5窗口使用滑动平均法'moving'平滑曲线;
smooth(A, span, 'sgolay', degree),表示Savitzky- Golay平滑曲线;
span为Savitzky- Golay滤波器的窗宽,一个正奇数,degree是一个整数,取值介于0和span-1之间
注意 :对于多个样本的光谱,如果使用smooth函数,需要写个循环,逐个进行平滑处理。