参数设置
信号由固定种子的确定性伪随机数生成器生成,因此相同参数下每次得到相同的波形。
信号与自相关
上段=信号 x[n](蓝色)/ 下段=归一化自相关 ρ[k](红色)、竖线=最大峰位置 k
理论与主要公式
有偏自相关定义为信号 x[n] 与其按时间滞后 k 平移后副本的内积总和,恒除以 N:
$$R_{xx}[k] = \frac{1}{N}\sum_{n=0}^{N-k-1} x[n]\,x[n+k]$$
归一化自相关 ρ[k](取值范围 −1~+1,ρ[0]=1):
$$\rho[k] = \frac{R_{xx}[k]}{R_{xx}[0]}$$
信号 x[n] 是周期 T = 1/f_0 的正弦波加高斯噪声:
$$x[n] = A\sin(2\pi f_0 n) + \sigma\,\eta[n]$$
周期信号会在 k=T 处留下较大自相关值,所以 k>0 范围内的最大峰位置即为估计周期 T_est。信噪比定义为 (A/σ)²。
什么是自相关函数模拟器
🙋
传感器采到的波形噪声很大,用眼睛看都看不出有没有周期。这种情况要怎么找出周期呢?
🎓
这时候就要用自相关函数。简单说,它就是把信号沿时间方向逐步平移,再衡量平移后的信号与原信号「有多像」。写成公式就是 $R_{xx}[k]=\frac{1}{N}\sum x[n]\,x[n+k]$。你看上方模拟器的默认状态,下段红色曲线在 k=20 处会明显隆起,那就是周期 T=20 sample 的标志。
🙋
咦,里面也混着噪声啊,为什么只有周期能干净地显现出来?
🎓
因为噪声在时间上不相关,k>0 时正负值会被平均抵消,几乎塌成零。而周期信号每隔 T 一定回到同一相位,所以 k=T、2T、3T... 处会留下干净的峰。在模拟器里把「噪声标准差 σ」设为 0 试试,纯正弦波的自相关是不衰减的振荡曲线。再把 σ 调大,只有 k=0 的值越来越大——这就是噪声全部集中到 k=0 上的现象。
🎓
N 越大噪声越被平均化,即使信噪比低周期峰也会稳定。在 σ 取 2 左右时对比 N=128 和 N=1024,会发现长记录的周期峰要清晰得多。这正是实务里「采集时间越长越能检出更弱的周期」的经验法则本身。
🙋
「信噪比」卡片是用 dB 显示的,这意味着什么?
🎓
信噪比是信号功率与噪声功率之比,这里定义为 $\text{SNR}=(A/\sigma)^2$。换算成分贝就是 $10\log_{10}(\text{SNR})$,默认 A=1、σ=0.5 时是 6.02 dB。信噪比下降时周期峰的高度 ρ(T) 也会下降,把两者对照看,就能体会「到哪一步还能检出周期」的感觉。经验法则是 ρ(T) 跌破 0.1 左右就是识别极限的大致界限。
常见问题
在 k=0 时取的是信号与「完全相同的自身」的内积,所以一定有 R[0] = (1/N)·Σ x[n]² ≥ R[k]。它相当于信号的平均功率(接近方差),是归一化时使 ρ[0]=1 的基准值。噪声成分在 k=0 时也完全相关,所以噪声越大 R[0] 越大。
会。把正弦波平移半个周期(k=T/2)后符号会反转,所以 ρ[T/2] ≈ −ρ[0]。在默认设置下,应该能在 k=10 附近(T=20 的半个周期处)看到一个明显的负向凹陷。这是周期信号特有的性质,方波、三角波也会同样地交替出现正负峰。
因为分母恒为 N,而实际参与内积的项数(N−k 个)随 k 增大而减少,所以会被低估。在 k=N/2 时实际只用到一半样本,但仍除以 N,所以值被压缩到约一半。无偏估计(分母改为 N−k)能在均值上解决这个问题,但当 k 接近 N 时方差会爆增,因此周期检测中通常更偏好形态稳定的有偏估计。
本工具按定义式做 O(N²) 直接计算,实务上则标准采用 Wiener-Khinchin 定理,对功率谱密度做逆 FFT,复杂度为 O(N log N)。结果相同,但需注意零填充与窗函数的处理。在教学场景下直接计算更适合理解定义,因此这里采用直接法。
实际应用
基频检测与语音分析:自动估计人声或乐器声基频(音高)的最基本方法就是自相关。对录音信号做自相关并取最大峰位置,由该滞后的倒数即可算出音高。从电话音质增强到卡拉 OK 评分、语音合成的共振峰提取,都在信号处理一线广泛使用。
振动分析与机械诊断:旋转机械振动传感器信号中包含轴的回转周期和齿轮啮合周期。用自相关提取周期成分后,就能看到对应特定故障模式(轴承内圈伤、外圈伤、滚道缺陷等)的周期。配合频谱分析,已成为状态监测(CBM)和预测维护的重要工具。
雷达与声呐的相关检测:用发射脉冲与接收信号的互相关(与自相关同样的计算)测量到目标的距离。即使反射波微弱埋藏在噪声中,相关处理也能带来约 √N 倍的处理增益,显著提高检测灵敏度。GPS C/A 码相关、UWB 雷达、医用超声回波等现代测距技术,根基都是这一思想。
金融时间序列与气象数据:用于检测股票收益率或气温数据中的周期性(日内模式、季节性、商业周期)。在 AR 模型阶数选择、ARIMA 模型识别中,自相关函数(ACF)和偏自相关函数(PACF)也是必备工具。
常见误解与注意事项
最常见的误解是「只要自相关上看到峰就一定存在周期信号」。实际上当 N 较小时,纯噪声也会偶然产生看似有意义的峰。在模拟器里试 A=0、σ=1、N=128:明明没有真实周期,k>0 的某处也会留下一个峰。实务中应通过多次试验确认是否在同一滞后处反复出现峰,或借助统计检验(如 ±2/√N 的置信区间)来确认显著性。
其次常见的错误是「把振幅 A 调大就更容易找到周期」这一想法。确实信噪比 (A/σ)² 会上升,但自相关被归一化为 ρ[k] 时振幅会在分子分母里抵消,峰的相对高度不变。重要的不是 A 本身而是 A 与 σ 之比。在模拟器里对比 A=2、σ=1 与 A=4、σ=2,信噪比同为 6 dB,所以峰形几乎完全一致。
最后请注意,「最大峰位置 = 真实周期」并不总成立。当信噪比极低时,最大峰可能落在噪声引起的假峰上。另外当周期信号的谐波成分较强时,除 T 之外的 T/2、T/3 位置上也会出现假峰。实务中通常综合「峰的绝对高度」「与第二高峰的差距」以及「期望的周期范围」三方面来判断。