我想将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)