MATLAB 中的谱导数,终点问题

Spectrum Derivative in MATLAB, the end point problem

我正在尝试使用以下行对具有 125 个波段的光谱求导:

dW=diff(wavelength);
dR=diff(data);
df=dR./dW;

问题出在下一步我想通过绘图将其与原始光谱进行数值比较和视觉比较,但 df 的大小是 124,但我的原始波长是 125。问题是我是否必须删除第一个或最后一支乐队?然而,一些光谱分析软件的输出并没有改变大小。取波段的平均值也不起作用,它使图表显示出疯狂的行为。

diff is basically:

Y = [X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)]

这意味着它必须比你的输入短一个(你不能从无中减去一些东西,对吧?)。

你必须做什么当然取决于你想做什么,但至少 "meaning-altering" 方法(在采样时间方面保持因果关系)是在你的 dW 前面加上和 dR 具有单个任意值。

顺便说一下,如果 dW 有零(只要两个连续的数据值相同,就会发生这种情况),您的比率 df=dR./dW 可能有很多 NaN