matlab中SG滤波器的说明
项目需要最近在进行光谱预处理方面研究,看了很多论文,发现其中涉及到的方法也就那么几种,比如SG filter、MSC、SNV等等。今天对SG filter 进行了学习,并在matlab平台上结合前人的代码编写了简单的SG filter代码,先Mark一下,期待以后越改越完善。
matlab中的关于sgolay函数看到两种:
- sgolay
- sgolayfilt
接下来简要介绍一下并对比一下:
- sgolay
函数主要为[b,g] = [b,g]=sgolay(N,F); N代表多项式拟合的阶数,F(奇数)代表进行卷积时的框架大小。(sgolay的原理该网站很多就不介绍了)。
- sgolayfilt
函数主要为
y = sgolayfilt(x,N,F);x代表输入信号。
二者对比
输出结果差别不大,所以sgolayfilt在使用时候更简洁。但是sgolay更加灵活,比如说您要求SG的一阶或者二阶乃至更高阶就需要使用sgolay。求SG高阶平滑时候需要用到函数sgolay输出中的矩阵g。利用矩阵g中第一列求得的是0阶平滑,这与使用矩阵b或者sgolayfilt的差别不大(主要差别在数据的起始段和末尾段)。