【20220628】【信号处理】自相关函数在信号处理中的应用——提取被噪声干扰的周期信号的周期

        背景:假设想要提取一个周期信号的周期,但周期信号被噪声干扰,甚至已经无法直接得到信号周期,请问如何解决?

        答:利用自相关函数找出被噪声掩盖的噪声周期。

一、算法原理

        自相关函数的定义和特性详见:【20220627】【信号处理】自相关函数的定义、计算方法及应用

        利用自相关函数 “周期信号的自相关函数依旧是同频率的周期信号” 的特性。该性质推导过程如下:

        假设有一个周期信号为:

x(t)=Acos(wt+\phi)

        根据定义,其自相关函数为:

\begin{align} R_{x,x}(\tau)&=\lim\limits_{T\rightarrow+\infty}\frac{1}{T}\int_{0}^{T}Acos(wt+\phi)Acos(w(t+\tau)+\phi)dt\nonumber\\ &=A^2\lim\limits_{T\rightarrow+\infty}\frac{1}{T}\int_{0}^{T}cos(wt+\phi)cos(wt+w\tau+\phi)dt\nonumber\\ &=A^2\lim\limits_{T\rightarrow+\infty}\frac{1}{T}\int_{0}^{T}\frac{1}{2}[cos(2wt+w\tau+2\phi)+cos(w\tau)]dt\nonumber \end{align}

        由于 cos(2wt+w\tau+2\phi) 的周期为 T,因此有:

 \int_{0}^{T}[cos(2wt+w\tau+2\phi)]dt=0

        则有:

R_{x,x}(\tau)=\frac{1}{2}A^2cos(w\tau)

        因此,周期函数的自相关函数也为周期函数,并且周期等于原周期函数周期。

二、Matlab 仿真实例

        自相关函数可以找出信号的重复模式(repeating patterns),如被噪声掩盖的周期信号,它常被用于信号处理中,用来分析函数或一系列值。

%% 自相关函数计算含噪信号周期
clear; clc; close all; warning off;

fs = 500;  % 采样频率
Ts = 1 / fs;  % 采样间隔
N = 1000;  % 观测时长
t = (0 : N-1) * Ts;
f0 = 5;  % 信号频率
xt = 5*cos(2 * pi * f0 * t) + 10*randn(1, N);  % 周期函数叠加噪声

[R, tau] = xcorr(xt);  % 计算自相关函数

figure(1); clf;  
sp1 = subplot(2, 1, 1);
plot(xt, 'linewidth', 1.2); title('原始信号'); set(gca, 'fontsize', 14);
sp2 = subplot(2, 1, 2);
plot(tau(floor(N+1:end)), R(N+1:end), 'linewidth', 1.2); title('自相关函数曲线'); 
linkaxes([sp1, sp2], 'x');
set(gca, 'fontsize', 14);
set(gcf, 'position', [12, 60, 1450, 650]);

运行结果:

        结果分析:原始信号中隐含了一个正弦函数,但从仿真图可以看出,原始信号已经受到了较强的噪声干扰,信号周期性已经不太明显,但周期信号的自相关函数依旧能够看出很强的周期性。当 \tau=0 时自相关最强,表现为自相关函数曲线取值最大;当 \tau=T 时,自相关函数取值最大;当 \tau=\frac{T}{2} 时,自相关函数取值最小。因此可以通过自相关函数曲线求出收到噪声干扰的周期信号的周期。

猜你喜欢

转载自blog.csdn.net/weixin_40583722/article/details/125509470
今日推荐