我有一个数组y [x],x = 0,1,2,...,10 ^ 6描述y(10 ^ 6)= y(0)的周期信号,我想计算它的使用快速方法导出dy / dx。
我尝试了光谱差异法,即
dy / dx = inverse_fourier_transform(i * k fourier_transform(y)[k]).................(1)
,结果与(y [x + 1] -y [x-1])/ 2不同,即通过有限差分法建议。
哪两个更准确,哪个更快?还有其他类似的方法吗?
以下是了解结果差异的努力:
如果一个扩展了fourier_transform的和和(1)中的inverse_fourier_transform的和,则可以将dy / dx表示为y [x]与系数a [x]的线性组合。我计算了这些系数,它们似乎是1 / n(当数组的长度变为无穷大时),其中n是检查导数的距离。与仅使用两个相邻点的有限差分方法相比,光谱差异高度非局部 ...我对此结果是否正确,如果是,那么如何理解这一点?
答案 0 :(得分:2)
如果您正在对奈奎斯特频率以上的信号进行采样,那么傅里叶方法会为您提供准确的答案,因为您的数据完全描述了信号(假设没有噪声)。
有限差分方法是一阶近似,因此不精确。但是,如果你绘制两个,他们应该显示相同的基本趋势。如果它们看起来完全不同,那么你可能在某处出现错误。
然而,快速ft是O(nlog(n)),而有限差异是O(n),因此后者更快(但速度不快,应该自动优先)。
傅立叶方法是非局部的,因为它构造整个信号,确切地(因此使用所有波长)。