码农知识堂 - 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} 时,自相关函数取值最小。因此可以通过自相关函数曲线求出收到噪声干扰的周期信号的周期。

  • 相关阅读:
    cJSON函数用法
    软件测试工作的难点是什么?针对难点怎么做?
    [ 常用工具篇 ] kali 忘记 root 密码 -- 修改 root 密码
    暖阳脚本_ 将Agent技术的灵活性引入RPA,清华等发布自动化智能体ProAgent
    【点云压缩】点云概述:点云的分类与处理 点云来源
    树结构工具-TreeUtil使用
    微信小程序获取华为云影子设备失败,显示403报错
    Jupyter notebook无法显示pyecharts
    Android 插件化技术应运而生出的 Apk 动态加载技术的开源框架
    https跳过SSL认证时是不是就是不加密的,相当于http?
  • 原文地址:https://blog.csdn.net/weixin_40583722/article/details/125509470
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号