码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【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} 时,自相关函数取值最小。因此可以通过自相关函数曲线求出收到噪声干扰的周期信号的周期。

  • 相关阅读:
    【数据结构】数组和字符串(八):稀疏矩阵的链接存储:十字链表的创建、插入元素、遍历打印(按行、按列、打印矩阵)、销毁
    Oracle故障案例之-19C时区补丁DSTV38更新
    参考线平滑-FemPosDeviation-Ipopt
    actuator--基础--6.5--端点解析--beans,heapdump,threaddump,shutdown
    狂神详讲Linux
    了解一下Ubuntu Linux
    Mysql 45讲学习笔记(三十六)临时表
    2022年十月份钓鱼威胁情报
    [React] 性能优化相关 (一)
    MySQL【第三章】——小白级(CRUD)
  • 原文地址:https://blog.csdn.net/weixin_40583722/article/details/125509470
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号