• 【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),如被噪声掩盖的周期信号,它常被用于信号处理中,用来分析函数或一系列值。

    1. %% 自相关函数计算含噪信号周期
    2. clear; clc; close all; warning off;
    3. fs = 500; % 采样频率
    4. Ts = 1 / fs; % 采样间隔
    5. N = 1000; % 观测时长
    6. t = (0 : N-1) * Ts;
    7. f0 = 5; % 信号频率
    8. xt = 5*cos(2 * pi * f0 * t) + 10*randn(1, N); % 周期函数叠加噪声
    9. [R, tau] = xcorr(xt); % 计算自相关函数
    10. figure(1); clf;
    11. sp1 = subplot(2, 1, 1);
    12. plot(xt, 'linewidth', 1.2); title('原始信号'); set(gca, 'fontsize', 14);
    13. sp2 = subplot(2, 1, 2);
    14. plot(tau(floor(N+1:end)), R(N+1:end), 'linewidth', 1.2); title('自相关函数曲线');
    15. linkaxes([sp1, sp2], 'x');
    16. set(gca, 'fontsize', 14);
    17. set(gcf, 'position', [12, 60, 1450, 650]);

    运行结果:

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

  • 相关阅读:
    Mysql Innodb Cluster集群搭建 - docker
    金蝶云星空业务单据审核校验根据条件分录数值必录
    怎样用一台电脑一个网卡访问多个网段(超级简单)
    想玩转监控神器Prometheus吗?
    基于qemu模拟器自动安装启动openEuler虚拟机
    java - lua - redis 完成商品库存的删减
    佳能e478打印机怎么连接wifi
    一文熟悉redis安装和字符串基本操作
    图片添加边框和文字怎么弄?图片编辑在线教学
    JDK、JRE、JVM 三者关系
  • 原文地址:https://blog.csdn.net/weixin_40583722/article/details/125509470