我正在尝试使用以下几行来获取具有 125 个波段的 a 频谱的导数:
dW=diff(wavelength);
dR=diff(data);
df=dR./dW;
问题是在下一步中,我想将它与原始光谱进行数值比较,也可以通过绘图在视觉上进行比较,但 df 的大小是 124,但我的原始波长是 125。问题是我必须删除第一个或最后一个波段吗?然而,一些光谱分析软件的输出并没有改变大小。取频带的平均值也不起作用,它使图表显示出疯狂的行为。
我正在尝试使用以下几行来获取具有 125 个波段的 a 频谱的导数:
dW=diff(wavelength);
dR=diff(data);
df=dR./dW;
问题是在下一步中,我想将它与原始光谱进行数值比较,也可以通过绘图在视觉上进行比较,但 df 的大小是 124,但我的原始波长是 125。问题是我必须删除第一个或最后一个波段吗?然而,一些光谱分析软件的输出并没有改变大小。取频带的平均值也不起作用,它使图表显示出疯狂的行为。
diff
基本上是:
Y = [X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)]
这意味着它必须比你的输入短一个(你不能从零中减去一些东西,对吧?)。
您必须做什么当然取决于您想要做什么,但最不“改变含义”的方法(保持采样时间的因果关系)是在您的dW
和前面加上dR
一个任意值。
顺便说一句,如果为零,您的比率df=dR./dW
可能会有很多NaN
s dW
(只要两个连续的数据值相同,就会发生这种情况)。