当前位置: 首页 > news >正文

信号处理:互相关函数

文章目录

  • 互相关函数(Cross-Correlation Function)
    • 公式定义
      • 1. 离散信号
      • 2. 连续信号
      • 3. 归一化互相关函数
    • 代码及实验

互相关函数(Cross-Correlation Function)

公式定义

1. 离散信号

  • 对于两个离散信号 x [ n ] x[n] x[n] y [ n ] y[n] y[n],它们的互相关函数 R x y [ m ] R_{xy}[m] Rxy[m] 定义如下:
  • m m m 为整数,表示延迟(lag)量。可以是正数(x 滞后于 y)、负数(x 超前于 y)或零(两者对齐)。
  • R x y [ m ] R_{xy}[m] Rxy[m] 表示在延迟 m m m 时,信号 x x x y y y 的相似程度。其幅值受信号幅值影响,因此一般用其归一化形式。
    R x y [ m ] = ∑ n = − ∞ ∞ x [ n ] ⋅ y [ n + m ] R_{xy}[m] = \sum_{n=-\infty}^{\infty} x[n] \cdot y[n + m] Rxy[m]=n=x[n]y[n+m]

2. 连续信号

  • 对于两个连续信号 x ( t ) x(t) x(t) y ( t ) y(t) y(t),它们的互相关函数 R x y ( τ ) R_{xy}(\tau) Rxy(τ) 定义如下:
    R x y ( τ ) = ∫ − ∞ ∞ x ( t ) ⋅ y ( t + τ )   d t R_{xy}(\tau) = \int_{-\infty}^{\infty} x(t) \cdot y(t + \tau) \, dt Rxy(τ)=x(t)y(t+τ)dt

3. 归一化互相关函数

为了消除信号幅度的影响,常使用归一化互相关函数(Normalized Cross-Correlation),其公式如下:归一化后的互相关函数 R x y ( τ ) R_{xy}(\tau) Rxy(τ) 的取值范围在 [ − 1 , 1 ] [-1, 1] [1,1] 之间,值越接近 1 表示两个信号在对应延迟下越相似。
R x y ( τ ) = ∑ n x [ n ] ⋅ y [ n + τ ] ∑ n x [ n ] 2 ⋅ ∑ n y [ n ] 2 R_{xy}(\tau) = \frac{\sum_{n} x[n] \cdot y[n + \tau]}{\sqrt{\sum_{n} x[n]^2 \cdot \sum_{n} y[n]^2}} Rxy(τ)=nx[n]2ny[n]2 nx[n]y[n+τ]

代码及实验

  • 在信号处理中,互相关法是一种重要的分析手段。互相关函数主要用于衡量两个信号在时间上的相似性。它通过滑动一个信号相对于另一个信号,并计算重叠部分的相似程度,来识别信号之间的时间对齐关系。
  • 如下两个离散信号 x [ n ] x[n] x[n] y [ n ] y[n] y[n],其互相关函数图如下:
    在这里插入图片描述
  • 从时域图可以看出,两个信号长得比较像,但怎么表达两个函数长得像呢? 我们直观可以感觉到,信号 y [ n ] y[n] y[n]要比 x [ n ] x[n] x[n]延迟一些,幅值小一些,但二者形状上是比较像的。
  • 通过作互相关,我们可以计算出二者在不同时间差异下的相似程度,则相似程度最大处的横坐标,即代表了二者信号的相位差。
  • 我们首先对信号进行取样,取样长度 N = 1000 N=1000 N=1000,互相关函数幅值最大处 τ = 961 \tau=961 τ=961,因此 961 − ( 1000 − 1 ) = − 38 961-(1000-1)=-38 961(10001)=38,即信号 x [ n ] x[n] x[n]要比 y [ n ] y[n] y[n]超前38个采样点的时间。
  • matlab实验代码如下:
    % MATLAB代码演示互相关的意义
    close all;
    clear all;
    % 参数设置
    Fs = 1000;           % 采样频率 (Hz)
    t = 0:1/Fs:1-1/Fs;   % 时间向量 (1秒)
    f = 5;               % 信号频率 (Hz)
    delay = 40;          % y(n)相对于x(n)的延迟样本数
    similarity = 0.8;    % 相似程度系数 (0到1之间)
    % 生成信号x(n)
    x = sin(2*pi*f*t);
    % 生成信号y(n),通过相似程度系数调整,并添加延迟
    y = similarity * sin(2*pi*f*(t - delay/Fs));
    % 绘制x(n)和y(n)的时域图
    figure('Name','互相关函数演示','Position',[400,400,1200,800]);
    subplot(2,1,1);
    plot(t, x, 'b', 'LineWidth', 1.5);
    hold on;
    plot(t, y, 'r--', 'LineWidth', 1.5);
    title('信号x(n)和y(n)的时域图');
    xlabel('时间 (s)');
    ylabel('幅度');
    legend('x(n)', 'y(n)');
    grid on;
    % 计算互相关函数,使用 'biased' 选项
    N = length(x);
    R_xy = xcorr(x, y, 'biased');  % 使用有偏互相关
    % 找到互相关函数的最大值及其对应的位置
    [max_corr, max_idx] = max(R_xy);
    lag_max = max_idx - (N - 1);
    % 绘制互相关函数
    subplot(2,1,2);
    stem(0:length(R_xy)-1, R_xy, 'k', 'LineWidth', 1.5);
    title(['互相关函数 R_{xy}(\tau)  (最大值 = ', num2str(max_corr), ')']);
    xlabel('延迟 \tau (样本)');
    ylabel('互相关幅度');
    grid on;
    % 标记最大值位置
    hold on;
    plot(lag_max, max_corr, 'ro', 'MarkerFaceColor', 'r');
    text(lag_max, max_corr, ['(\tau = ', num2str(lag_max), ')'], 'Color', 'r', 'VerticalAlignment', 'bottom');
    hold off;
    % 显示延迟信息
    fprintf('信号y(n)相对于x(n)的延迟为 %d 个样本。\n', lag_max);
    
  • 实验结果如下:其中没有归一化,因此纵坐标表示的相似程度会受信号幅值影响。
    在这里插入图片描述
  • 归一化一般采用能量归一化,使用如下代码:
    % 计算互相关函数,使用 'biased' 选项
    N = length(x);
    R_xy_norm = xcorr(x, y, 'coeff');
    
  • 归一化之后的结果如下图:
    在这里插入图片描述
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/43476.html

相关文章:

  • 蓝桥与力扣刷题(蓝桥 特别数的和)
  • 论文:KernelBench: Can LLMs Write Efficient GPU Kernels?
  • centos虚拟机无法安装工具
  • Android开发奇葩bug:布局宽高不自动自适应了
  • 月份天数总结
  • 【考试大纲】高级系统架构设计师考试大纲
  • 【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列
  • 连锁管理系统的五大核心功能及系统设计
  • Python数字图像处理:直方图均衡化
  • 歌曲分类和流行度预测
  • 需求和开发模型
  • 旁挂组网双机热备负载分担
  • ubuntu离线安装nvidia-container-runtime
  • c++信息学第一阶段练习题
  • 在 MySQL 中,删除数据库和表后,自动递增的值通常会被重置为初始值,一般是 1。但如果自动递增不为零,可能有以下原因及解决办法:
  • 深入探索Python机器学习算法:监督学习(线性回归,逻辑回归,决策树与随机森林,支持向量机,K近邻算法)
  • IO和NIO
  • 每日学习Java之一万个为什么?[MySQL面试篇]
  • OAK相机的抗震性测试
  • BIM模型+GIS信息的融合加载(纯Threejs方案)
  • 【AI-41】网格搜索和随机搜索相结合的策略
  • ⭐算法OJ⭐位操作实战【计数】(C++ 实现)
  • 深度学习-9.简单循环神经网络
  • YOLOv5 + SE注意力机制:提升目标检测性能的实践
  • Distilling the Knowledge in a Neural Network(提炼神经网络中的知识)
  • 15.13 AdaLoRA自适应权重矩阵微调:动态秩调整的智能革命
  • 双机热备旁挂组网实验
  • < 自用文儿 > Gobuster 暴力扫描工具与 SecLists 安全测试词表集合
  • VMware虚拟机配置桥接网络
  • 【前端基础】Day 5 CSS浮动