自相关函数学习思考

自相关(Autocorrelation),也叫序列相关,是一个信号与其自身在不同时间点的互相关。非正式地来说,自相关是对同一信号在不同时间的两次观察,通过对比来评判两者的相似程度。自相关函数就是信号x(t)x(t)x(t)和它的时移信号x(t−τ)x(t-\tau)x(tτ)的乘积平均值。它是时移变量τ的函数。

也就是说一个函数f(t)f(t)f(t)的自相关函数为::
R(τ)=∫−∞+∞f(t)f(t−τ)dt R(\tau)=\int_{-\infty}^{+\infty}f(t)f(t-\tau)dt R(τ)=+f(t)f(tτ)dt
假设f(t)f(t)f(t)是周期T=2πwT=\frac{2\pi}{w}T=w2π无穷大的周期函数,那么R(τ)R(\tau)R(τ)可以写成周期积分:

R(τ)=∫−πwπwf(t)f(t−τ)dt R(\tau)=\int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}f(t)f(t-\tau)dt R(τ)=wπwπf(t)f(tτ)dt

根据傅里叶级数的原理,f(t)f(t)f(t)可以写成傅里叶级数的形式:
f(t)=A0+∑n=1∞Ansin(nwt+ψn),(1) f(t) = A_0+\sum_{n=1}^{\infty}A_nsin(nwt+\psi_n), (1) f(t)=A0+n=1Ansin(nwt+ψn),(1)
f(t−τ)f(t-\tau)f(tτ)则可以写成
f(t−τ)=A0+∑n=1∞Ansin(nwt−nwτ+ψn),(2) f(t-\tau) = A_0+\sum_{n=1}^{\infty}A_nsin(nwt-nw\tau+\psi_n), (2) f(tτ)=A0+n=1Ansin(nwtnwτ+ψn),(2)

因此∫−πwπwf(t)f(t−τ)dt\int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}f(t)f(t-\tau)dtwπwπf(t)f(tτ)dt,可以分解成从(1)和(2)式中任意抽取两个项相乘后积分再求和,有下面四种情况:

  • 两个抽取都是直流项
    ∫−πwπwA0∗A0dt=2πwA02\int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}A_0*A_0dt=\frac{2\pi}{w}A_0^2wπwπA0A0dt=w2πA02
  • 一个抽取是直流项,另一个抽取是交流项
    ∫−πwπwA0∗Ansin(nwt−nwτ+ψn)dt=−A0Annwcos(nwt−nwτ+ψn)∣−πwπw=0\int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}A_0*A_nsin(nwt-nw\tau+\psi_n)dt=-\frac{A_0A_n}{nw} cos(nwt-nw\tau+\psi_n)|_{-\frac{\pi}{w}}^{\frac{\pi}{w}}=0wπwπA0Ansin(nwtnwτ+ψn)dt=nwA0Ancos(nwtnwτ+ψn)wπwπ=0
    ∫−πwπwA0∗Ansin(nwt+ψn)dt=−A0Annwcos(nwt+ψn)∣−πwπw=0\int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}A_0*A_nsin(nwt+\psi_n)dt=-\frac{A_0A_n}{nw} cos(nwt+\psi_n)|_{-\frac{\pi}{w}}^{\frac{\pi}{w}}=0wπwπA0Ansin(nwt+ψn)dt=nwA0Ancos(nwt+ψn)wπwπ=0
  • 两个抽取都是交流项,但n不相同
    sin(nawt+ψna)sin(nbwt−nbwτ+ψnb)==12(cos(nawt+ψna−nbwt+nbwτ−ψnb)−cos(nawt+ψna+nbwt−nbwτ+ψnb))=12(cos((na−nb)wt+nbwτ+ψna−ψnb)−cos((na+nb)wt−nbwτ+ψna+ψnb)) \begin{aligned} sin(n_awt+\psi_{n_a})sin(n_bwt - n_bw\tau+\psi_{n_b})&= \hspace{6cm}\\ &=\frac{1}{2} \left( cos(n_awt+\psi_{n_a}-n_bwt + n_bw\tau-\psi_{n_b}) - cos(n_awt+\psi_{n_a}+n_bwt - n_bw\tau+\psi_{n_b}) \right) \\ &=\frac{1}{2} \left( cos((n_a-n_b)wt+ n_bw\tau+\psi_{n_a}-\psi_{n_b}) - cos((n_a+n_b)wt- n_bw\tau+\psi_{n_a}+\psi_{n_b}) \right) \end{aligned} sin(nawt+ψna)sin(nbwtnbwτ+ψnb)==21(cos(nawt+ψnanbwt+nbwτψnb)cos(nawt+ψna+nbwtnbwτ+ψnb))=21(cos((nanb)wt+nbwτ+ψnaψnb)cos((na+nb)wtnbwτ+ψna+ψnb))

∫−πwπwAnaAnbsin(nawt+ψna)sin(nbwt−nbwτ+ψnb)dt==∫−πwπw12AnaAnb(cos((na−nb)wt+nbwτ+ψna−ψnb)−cos((na+nb)wt−nbwτ+ψna+ψnb))dt=12AnaAnb(1(na−nb)wsin((na−nb)wt+nbwτ+ψna−ψnb)∣−πwπw−1(na+nb)wsin((na+nb)wt−nbwτ+ψna+ψnb)∣−πwπw)=0 \begin{aligned} \int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}A_{n_a}A_{n_b}sin(n_awt+\psi_{n_a})sin(n_bwt - n_bw\tau+\psi_{n_b})dt&= \hspace{4cm}\\ &=\int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}\frac{1}{2} A_{n_a}A_{n_b}\left( cos((n_a-n_b)wt+ n_bw\tau+\psi_{n_a}-\psi_{n_b}) - cos((n_a+n_b)wt- n_bw\tau+\psi_{n_a}+\psi_{n_b}) \right)dt\\ &=\frac{1}{2} A_{n_a}A_{n_b}\left( \frac{1}{(n_a-n_b)w}sin((n_a-n_b)wt+ n_bw\tau+\psi_{n_a}-\psi_{n_b})|_{-\frac{\pi}{w}}^{\frac{\pi}{w}}- \frac{1}{(n_a+n_b)w}sin((n_a+n_b)wt- n_bw\tau+\psi_{n_a}+\psi_{n_b})|_{-\frac{\pi}{w}}^{\frac{\pi}{w}} \right)\\ &=0 \end{aligned} wπwπAnaAnbsin(nawt+ψna)sin(nbwtnbwτ+ψnb)dt==wπwπ21AnaAnb(cos((nanb)wt+nbwτ+ψnaψnb)cos((na+nb)wtnbwτ+ψna+ψnb))dt=21AnaAnb((nanb)w1sin((nanb)wt+nbwτ+ψnaψnb)wπwπ(na+nb)w1sin((na+nb)wtnbwτ+ψna+ψnb)wπwπ)=0

  • 两个抽取都是交流项,但n相同
    ∫−πwπwAnaAnbsin(nawt+ψna)sin(nbwt−nbwτ+ψnb)dt==∫−πwπw12AnaAnb(cos((na−nb)wt+nbwτ+ψna−ψnb)−cos((na+nb)wt−nbwτ+ψna+ψnb))dt=12An2(cos(nwτ)∣−πwπw−12nwsin(2nwt−nwτ+2ψn)∣−πwπw)=12An2(2πwcos(nwτ)−0)=πwAn2cos(nwτ) \begin{aligned} \int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}A_{n_a}A_{n_b}sin(n_awt+\psi_{n_a})sin(n_bwt - n_bw\tau+\psi_{n_b})dt&= \hspace{4cm}\\ &=\int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}\frac{1}{2} A_{n_a}A_{n_b}\left( cos((n_a-n_b)wt+ n_bw\tau+\psi_{n_a}-\psi_{n_b}) - cos((n_a+n_b)wt- n_bw\tau+\psi_{n_a}+\psi_{n_b}) \right)dt\\ &=\frac{1}{2} A_{n}^2\left( cos(nw\tau)|_{-\frac{\pi}{w}}^{\frac{\pi}{w}}- \frac{1}{2nw}sin(2nwt- nw\tau+2\psi_{n})|_{-\frac{\pi}{w}}^{\frac{\pi}{w}} \right)\\ &=\frac{1}{2} A_{n}^2\left( \frac{2\pi}{w}cos(nw\tau)-0 \right)\\ &= \frac{\pi}{w}A_{n}^2cos(nw\tau) \end{aligned} wπwπAnaAnbsin(nawt+ψna)sin(nbwtnbwτ+ψnb)dt==wπwπ21AnaAnb(cos((nanb)wt+nbwτ+ψnaψnb)cos((na+nb)wtnbwτ+ψna+ψnb))dt=21An2(cos(nwτ)wπwπ2nw1sin(2nwtnwτ+2ψn)wπwπ)=21An2(w2πcos(nwτ)0)=wπAn2cos(nwτ)
    综合四种情况可知:
    ∫−πwπwf(t)f(t−τ)dt=2πwA02+πw∑n=1∞An2cos(nwτ) \int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}f(t)f(t-\tau)dt=\frac{2\pi}{w}A_0^2+\frac{\pi}{w} \sum_{n=1}^{\infty} A_{n}^2cos(nw\tau) wπwπf(t)f(tτ)dt=w2πA02+wπn=1An2cos(nwτ)
    由(3)式可知,在τ=0\tau=0τ=0时,自相关函数R(τ)R(\tau)R(τ)有最大值2πwA02+πw∑n=1∞An2\frac{2\pi}{w}A_0^2+\frac{\pi}{w} \sum_{n=1}^{\infty} A_{n}^2w2πA02+wπn=1An2

如果f(t)f(t)f(t)是只包含交流分量的函数,在频域上是一条幅值为III的直线(从nan_ananbn_bnb),那么这样的f(t)f(t)f(t)自相关函数可以进一步进行化简:
R(τ)=∫−πwπwf(t)f(t−τ)dt=2πwA02+πw∑n=1∞An2cos(nwτ)=πw∑nanbI2cos(nwτ)≈πwI2∫nanbcos(nwτ)dn≈πwI2sin(nwτ)wτ∣nanb≈πwI2(sin(nbwτ)−sin(nawτ))wτ≈πwI2(sin(na+nb2wτ+nb−na2wτ)−sin(na+nb2wτ−nb−na2wτ))wτ≈πwI22cos(na+nb2wτ)sin(nb−na2wτ)wτ≈T2(nb−na)I2cos(na+nb2wτ)sin(nb−na2wτ)nb−na2wτ....(4) \begin{aligned} R(\tau)&=\int_{-\frac{\pi}{w}}^{\frac{\pi}{w}}f(t)f(t-\tau)dt\\ &=\frac{2\pi}{w}A_0^2+\frac{\pi}{w} \sum_{n=1}^{\infty} A_{n}^2cos(nw\tau) \\ &=\frac{\pi}{w} \sum_{n_a}^{n_b} I^2cos(nw\tau) \\ &\approx \frac{\pi}{w} I^2\int_{n_a}^{n_b} cos(nw\tau)dn \\ &\approx \frac{\pi}{w} I^2 \frac{sin(nw\tau)}{w\tau}|_{n_a}^{n_b}\\ &\approx \frac{\pi}{w} I^2 \frac{( sin(n_bw\tau) - sin(n_aw\tau))}{w\tau}\\ &\approx \frac{\pi}{w} I^2 \frac{( sin(\frac{n_a+n_b}{2}w\tau+\frac{n_b-n_a}{2}w\tau) - sin(\frac{n_a+n_b}{2}w\tau-\frac{n_b-n_a}{2}w\tau))}{w\tau}\\ &\approx \frac{\pi}{w} I^2 \frac{2cos(\frac{n_a+n_b}{2}w\tau)sin(\frac{n_b-n_a}{2}w\tau)}{w\tau}\\ &\approx \frac{T}{2}(n_b-n_a) I^2 \frac{cos(\frac{n_a+n_b}{2}w\tau)sin(\frac{n_b-n_a}{2}w\tau)}{\frac{n_b-n_a}{2}w\tau} ....(4)\\ \end{aligned} R(τ)=wπwπf(t)f(tτ)dt=w2πA02+wπn=1An2cos(nwτ)=wπnanbI2cos(nwτ)wπI2nanbcos(nwτ)dnwπI2wτsin(nwτ)nanbwπI2wτ(sin(nbwτ)sin(nawτ))wπI2wτ(sin(2na+nbwτ+2nbnawτ)sin(2na+nbwτ2nbnawτ))wπI2wτ2cos(2na+nbwτ)sin(2nbnawτ)2T(nbna)I22nbnawτcos(2na+nbwτ)sin(2nbnawτ)....(4)

观察(4)式可以发现,cos(na+nb2wτ)cos(\frac{n_a+n_b}{2}w\tau)cos(2na+nbwτ)振动速度比sin(nb−na2wτ)sin(\frac{n_b-n_a}{2}w\tau)sin(2nbnawτ)要快,
而且sin(nb−na2wτ)nb−na2wτ\frac{sin(\frac{n_b-n_a}{2}w\tau)}{\frac{n_b-n_a}{2}w\tau}2nbnawτsin(2nbnawτ)是除着τ\tauτ增大,按nb−na2wτ\frac{n_b-n_a}{2}w\tau2nbnawτ倒数衰减的正弦波形。
所以,R(τ)R(\tau)R(τ)在原函数是宽带频率函数时,其波形是衰减的较慢正弦波形乘以一个比较快的余弦波。

用ipython进行验证:

import numpy as np
import matplotlib.pyplot as plt
import math

%matplotlib inline

N = 512
spectral = [0j] * N

na=100
nb=120

for i in range(N):
    if na<=i<=nb:
        spectral[i] = (1+0j) * N / 2 #由于 ifft是用X(k)=N * Amp N倍幅值计算的 所以要乘以N 除以2是正负频各分一半幅值
    if N - nb <=i<= N - na:
        spectral[i] = (1+0j) * N / 2

inputwave = np.fft.ifft(spectral)
inputwave = np.real(inputwave)

R_wave = [0]*N

for tau in range(N):
    sumt = 0
    for i in range(N):
        temp = i - tau
        sumt = sumt + inputwave[i] * inputwave[temp] #自相关函数
    R_wave[tau] = sumt 
    
approxR_wave = [0]*N    #近似计算的自相关波形
nc = (na+nb)/2
dn = (nb-na)/2
amp = N * (nb-na) * 1**2 / 2
for i in range(1,N):
    tau = i
    if i > N/2:
        tau = N - i  #相移不能大于半周期,大于相当于是负相移
    psi =  nc * tau * 2 * math.pi / N
    cositem = math.cos(psi)
    psi =  dn * tau * 2 * math.pi / N
    sinitem = math.sin(psi)
    approxR_wave[i] = amp * cositem * sinitem / psi
    
approxR_wave[0] = amp
    
plt.figure(figsize=(15,10))
plt.plot(R_wave)
plt.plot(approxR_wave)

在这里插入图片描述


如果f(t)f(t)f(t)是频域正态分布的宽带信号呢?
用ipython进行试验,看看波形

sigma = 5 #标准差 
mu = (na + nb) / 2  #期望(均数)

for i in range(N):
    if na<=i<=nb:
        temp = (i-mu)/sigma
        temp = temp ** 2
        temp = temp / 2
        temp = math.exp(-temp)
        temp = temp/(math.sqrt(2 * math.pi)*sigma)
        spectral[i] = temp * (1+0j) * N / 2 #由于 ifft是用X(k)=N * Amp N倍幅值计算的 所以要乘以N 除以2是正负频各分一半幅值
    if N - nb <=i<= N - na:
        temp = (i- N +mu)/sigma
        temp = temp ** 2
        temp = temp / 2
        temp = math.exp(-temp)
        temp = temp/(math.sqrt(2 * math.pi)*sigma)
        spectral[i] = temp*(1+0j) * N / 2

inputwave = np.fft.ifft(spectral)
inputwave = np.real(inputwave)

R_wave1 = [0]*N

for tau in range(N):
    sumt = 0
    for i in range(N):
        temp = i - tau
        sumt = sumt + inputwave[i] * inputwave[temp] #自相关函数
    R_wave1[tau] = sumt

plt.figure(figsize=(15,10))
plt.plot(np.abs(spectral))
plt.figure(figsize=(15,10))
plt.plot(R_wave)
plt.figure(figsize=(15,10))
plt.plot(R_wave1)

有正态分布的宽带频域
在这里插入图片描述

直线分布的宽带频域自相关时域波形

在这里插入图片描述

正态分布的宽带频域自相关时域波形
在这里插入图片描述

对比可以看到,正态分布的自相关函数波形中间杂波小得多,而且振动的频率分量更少一些(向中心频率靠,相当于做了滤波)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐