如何Savitzky Golay过滤多个样本/列(R)



我想将Savitzky Golay过滤器(prospectr包(应用于数据集。然而,所有可用的示例仅针对一个样本运行滤波器(具有确定数量的波长的曲线(。我是否可以一次过滤更多样本(70个样本(的数据?

head(ref3)
wl sev.inox.1 sev.inox.2 sev.inox.3 sev.inox.4 sev.inox.5 sev.inox.6 sev.inox.7
1 270   6.289980   6.113089   6.058497   6.480927   6.682950   6.862938   6.964283
2 271   6.273477   6.076419   6.045145   6.489208   6.676868   6.837713   6.945930
3 272   6.236259   6.047662   6.023476   6.481495   6.654580   6.779429   6.888893
4 273   6.195604   6.004915   6.020849   6.477964   6.622429   6.762655   6.858187
5 274   6.163013   6.013584   5.987006   6.457510   6.606226   6.762517   6.841300
6 275   6.153362   5.994195   5.966318   6.436512   6.607959   6.791893   6.838235     

sg <- savitzkyGolay(ref3 , p = 3, w = 11, m = 0)
sg

当我尝试使用所有数据集(ref3(而不是限制为单个样本(例如ref3$sev.inox.1(运行此函数时,它会从每个样本中删除几个样本(列(,而不是波长(行(。

非常感谢!

通常,光谱数据矩阵由行中的观测值(样本(和列中的(光谱(变量组成。savitzkyGolay函数确实适用于多次观测。调用数据函数的正确方法是:

spc <- t(ref3[, -1])
colnames(spc) <- ref3[, 1]
savitzkyGolay(spc, m = 0, p = 3, w = 11)

最新更新