在R中执行时间序列的fft
我想使用FFT将波形拟合到时间序列。 目标是绘制具有不同谐波的曲线图,并使用它预测n个数据点 我使用的代码是基于 我的问题是,因为我的数据集中也有负值,所以我无法理解为什么会包含正值 这是原作的情节 与fft后的图进行比较在R中执行时间序列的fft,r,fft,R,Fft,我想使用FFT将波形拟合到时间序列。 目标是绘制具有不同谐波的曲线图,并使用它预测n个数据点 我使用的代码是基于 我的问题是,因为我的数据集中也有负值,所以我无法理解为什么会包含正值 这是原作的情节 与fft后的图进行比较 我如何调整代码,使谐波也覆盖缺失的负值,以及如何使用该值来计算(预测)接下来的n个时间点?当您试图在以下行上用Mod(idff)和Mod(indff)绘制结果时,出现了问题: ... lines(y = Mod(idff), x = t, col = "red") }
我如何调整代码,使谐波也覆盖缺失的负值,以及如何使用该值来计算(预测)接下来的n个时间点?当您试图在以下行上用
Mod(idff)
和Mod(indff)
绘制结果时,出现了问题:
...
lines(y = Mod(idff), x = t, col = "red")
}
lines(y = Mod(indff), x = nt, ...)
Mod
将始终返回与复数大小相对应的正数
由于您是在具有厄米对称性的序列上计算逆FFT(通过构造),因此您应该期望得到实值结果。然而,在实践中,由于舍入误差,可能会有一个小的虚部。通过使用Re(idff)
和Re(indff)
仅提取真实零件,可以安全地忽略这些,如下所示:
...
lines(y = Re(idff), x = t, col = "red")
}
lines(y = Re(indff), x = nt, ...)
请注意,通常最好首先确认虚部与实部相比确实是非常小的数字,因为相反的情况表明频域值不具有预期的厄米对称性。这些结果不是作为模量的组合计算的吗(即径向矢量)和“绕组角”或“相位角”?很抱歉我在这方面不够精确,但这不是我50年前在大学里学过的课程之一。多亏了这一点,只提取真实的部分就可以了。你有没有关于如何计算即将到来的n个时间点的谐波的技巧?
...
lines(y = Re(idff), x = t, col = "red")
}
lines(y = Re(indff), x = nt, ...)