0

我目前正在尝试使用 R 中的 fft 函数来转换特定深度的测量土壤温度,以便模拟不同深度的土壤温度和热通量。

我想澄清有关 R 中 fft 函数的一些要点,因为我目前在实施此过程时遇到问题。

所以我有一个包含日期和时间以及 5 厘米(T5)深度的土壤温度几个月的 df。根据文献,可以基于测量数据的快速傅里叶变换来模拟不同深度的温度和热通量。所以我的第一步自然是 DF$FFT = fft (DF$T5) 从中我收到一系列复数 (Cn),即各自的实数 (an) 和虚数 (bn)。根据文献,我可以使用基于上述 fft 输出的公式重新创建 T5 数据。

*T_(0,t )= meanT + ∑ (An sin⁡〖nωt+φ〗) ̅

NB 求和项是在 n=1 和 M(最高谐波)之间求和

其中,T o,t 是给定时间点的温度,一段时间内的平均温度,t 是时间,...

An = (2/sqrt(N))*|Cn|
|Cn| = modulus of the complex number of the nth harmonic Mod (DF$FFT)
phi = arctan (an/bn) i.e. arctan (Re(DF$FFT)/Im(DF$FFT)
omega = (2*pi/N)

不幸的是,基于 R i 中 fft 的输出,无法使用上述公式重新创建温度值。我意识到我可以使用重新创建数据

fft (fft(DF$T5), inverse = T)/length (DF$T5)

但是,我需要能够使用上面的方程来做到这一点,以便使用该方程中的项来模拟其他深度的温度。任何人都可以帮我解决我上面描述的程序可能出错的地方。例如,上面的过程是在论文中实现的,其中使用了 Mathcad 的 fft 函数!我不是在这里寻找解决我问题的快速解决方案,所以我知道如果是这样的话,更多的数据和信息会很方便。我正在寻找的是一些指导,例如我应该注意的 R fft 的任何特性。

如果有人能以任何可能的方式提供帮助,将不胜感激。另外,如果有人需要有关我的问题的更多信息,请询问

多谢

布拉德

4

0 回答 0