傅里叶变换是一种用于时间序列分析的数学工具,可以将信号分解为其组成频率。 简单来说,它将基于时间的信号(例如,传感器读数、股票价格、音频波形)转换为显示存在哪些频率及其相对强度的表示形式。 例如,如果您有一个表示一年中每小时温度测量值的时间序列,则傅里叶变换可以通过隔离其频率分量来识别季节性模式(如每日或每年的周期)。 这是通过将信号表示为正弦波和余弦波的总和来实现的,每个正弦波和余弦波都具有特定的频率、振幅和相位。 快速傅里叶变换 (FFT) 算法通常用于此目的,因为它有效地计算离散数据的变换。
傅里叶变换在时间序列分析中的一个关键应用是识别周期性模式或噪声。 例如,在音频处理中,可以转换表示声波的时间序列来检测主要的音符或滤除背景嗡嗡声。 在金融领域,它可能会揭示股票价格的周期性趋势。 傅里叶变换的输出通常以频谱图的形式可视化,其中 x 轴表示频率(例如,音频的赫兹),y 轴显示每个频率分量的大小(振幅)。 开发人员应注意,实际实现需要处理现实世界的约束,例如有限的数据样本。 窗口函数(例如,汉明窗或汉宁窗)通常用于减少频谱泄漏 - 这是由采样间隔开始和结束时突然的信号截断引起的失真。
为了在代码中实现这一点,Python 中的 NumPy 或 SciPy 等库提供了 FFT 函数。 例如,在时间序列上使用 numpy.fft.fft()
会返回一个表示频率分量的复数数组。 可以使用 numpy.fft.fftfreq()
计算相应的频率,这取决于采样间隔(例如,数据点之间间隔 1 秒)。 一个限制是傅里叶变换假设信号是平稳的(其统计特性不会随时间变化)。 如果时间序列具有变化的频率(例如,音高变化的鸟鸣声),则短时傅里叶变换 (STFT) 或小波变换可能更合适。 开发人员还应注意奈奎斯特-香农定理,该定理指出最高可检测频率是采样率的一半。 对于 100 Hz 的采样率,高于 50 Hz 的频率将被错误表示(混叠),因此正确的采样至关重要。