这是一个关于如何计算数字信号导数的非常普遍的问题.
我想知道有哪些不同的方法(从幼稚到复杂)以及它们之间的比较如何?是否可以使用 FIR/IIR 滤波器?什么是赞成和反对。哪个更适合实时应用程序?
这是一个关于如何计算数字信号导数的非常普遍的问题.
我想知道有哪些不同的方法(从幼稚到复杂)以及它们之间的比较如何?是否可以使用 FIR/IIR 滤波器?什么是赞成和反对。哪个更适合实时应用程序?
导数的估计很简单:
或者如果你有一个在采样的信号,它是
您感兴趣的可能是如何平滑估计。是的,您可以使用一些递归过滤器,例如 ,或者只使用一些简单的窗口(Hann window for例子)。
为了在不严重扭曲信号的情况下实现高 SNR,Savitzky–Golay 滤波器还通过使用具有线性最小二乘法的低次多项式拟合相邻数据点的连续子集来平滑您的数据。
编辑
信号行向量的 N 次导数的 Matlab 代码x
dx = x; %'Zeroth' derivative
for n = 1:N % Apply iteratively
dif = diff(dx,1); % First derivative
first = [dif(1) dif];
last = [dif dif(end)];
dx = (first+last)/2;
end
维基百科上有一篇很好的文章:数值微分
由于您希望微分是(反?)对称的,因此使用 IIR 滤波器可能不是最明智的想法。