我想使用基于模型的聚类对 1,225 个时间序列(每个 24 个周期)进行分类。我使用快速傅立叶变换分解了这些时间序列,并选择了至少解释样本中所有时间序列的时间序列方差阈值百分比的谐波。我想对给定时间序列的每个变换元素的实部和虚部进行基于模型的聚类,因为它可能使我不必考虑跨时间序列周期的模型敬畏聚类中的时间自相关。我知道快速傅里叶变换的每个复元素都独立于其他元素,但我不知道给定输出元素的输出的虚部和实部是否独立。我想知道,因为如果是这样,它将允许我在 R 中保持 Mclust 包的默认假设,用于基于模型的聚类分析的变量具有多元高斯分布。

注意:不使用完整的 FFT,因为我已经丢弃了负频率的元素,并通过将频率 1 到 Nyquist 乘以 2 将每个建议从两侧频谱转换为一侧频谱: How do I calculate amplitude and phase angle of fft() output from real-valued input?

最佳答案

实部和虚部是正交的(因为 sin(x) 和 cos(x) 函数是正交的)。此特性对于 FFT 的工作方式至关重要。

Wolfram MathWorld :



FFT本质上是基的变化。这并没有说明数据本身可能包含也可能不包含实部和虚部之间的相关性。

关于编辑的问题,“如何计算实值输入的 fft() 输出的幅度和相位角?”。将实部和虚部转换为幅度和相位角的方法是 magnitude = (real_part ** 2 + imaginary_part ** 2) ** 0.5angle=arctan2(imaginary_part, real_part) 。它与 rectangular-to-polar conversion 相同。

关于r - fft 输出的实部和虚部是否相关?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8275774/

10-12 17:47