信号的互相关计算及时延估计

1. 信号的互相关计算

互相关反映向量x和移位(滞后)向量y之间的相似性。

最直观的解释是:互相关的作用是为了找到信号在哪一时刻与另一信号最像(另一信号为本身时就是自相关)!

请添加图片描述

滑动求互相关(图片来源:卓晴老师)

互相关和自相关在本质上是两个函数做内积运算。即向量内积的连续形式。其在线性空间角度上的意义是:一个向量在另一个向量上的投影,内积结果越大,投影越大,两个向量间夹角越小,方向越一致,相似度越高。

互相关(Cross-Correlation)计算公式:
f ( t ) ⊗ g ( t ) = ∫ − ∞ ∞ f ( τ ) g ( t + τ ) d τ f(t)\otimes g(t)=\int_{-\infty}^{\infty}f(\tau)g(t+\tau)d\tau f(t)g(t)=f(τ)g(t+τ)dτ

离散形式:
f ( t ) ⊗ g ( t ) = ∑ − ∞ ∞ f ( t ) g ( t + τ ) d τ f(t)\otimes g(t)=\sum_{-\infty}^{\infty}f(t)g(t+\tau)d\tau f(t)g(t)=f(t)g(t+τ)dτ

博主ccwcc给出的图片很形象的描述了这个计算过程。
在这里插入图片描述

注意: 如果x和y的长度不同,函数会在较短向量的末尾添加0,使其长度与另一个向量相同。

时域和频域的求解方法如下:

clear,clc,close all
load xcorr_test.mat

xc = xcorr(x,y);
xc1 = xcorr_method1(x,y);
xc2 = xcorr_method2(x,y);
length(x)
length(y)
length(xc)
plot(xc)
hold on
plot(xc1)
plot(xc2)
legend

function corr_ = xcorr_method1(x,y)
    iDataN = length(x);
    iSyncLength = length(y);
    if iDataN > iSyncLength
        tmp = zeros(iDataN - iSyncLength,1);
        y = [y;tmp];
        len = iDataN;
    else
        tmp = zeros(iSyncLength-iDataN,1);
        x = [x;tmp];
        len = iSyncLength;
    end

    % 时域法
    N = len;
    corr_ = zeros(2*N-1,1);
    m = 0;
    for i = -(N-1):N-1
        m = m+1;
        for t = 1:N
            if 0<(i+t)&&(i+t)<=N
                corr_(m) = corr_(m) + y(t)*x(t+i);
            end 
        end
    end
end

function corr_ = xcorr_method2(x,y)

    iDataN = length(x);
    iSyncLength = length(y);
    if iDataN > iSyncLength
        tmp = zeros(iDataN - iSyncLength,1);
        y = [y;tmp];
    else
        tmp = zeros(iSyncLength-iDataN,1);
        x = [x;tmp];
    end

    % 频域法
    Nfft = length(x)+length(y)-1;
    corr_ = fftshift(ifft(fft(x,Nfft).*conj(fft(y,Nfft))));
end
2. 信号的时延估计

两个信号最相似时,相当于求自相关系数,此时类似求自身模长。

因此可用这一特性,求解时延周期。

xc = xcorr(x, y);
[peaks, locs] = findpeaks(xc);
[~, idx_] = max(peaks);
delay = locs(idx_) - length(x);
  • 若delay > 0,则信号y滞后于信号x
  • 若delay = 0,则信号x与信号y之间无时延
  • 若delay < 0,则信号y超前于信号x

参考链接:

  • https://zhuanlan.zhihu.com/p/71930587
  • https://zhuanlan.zhihu.com/p/613949451
  • https://blog.csdn.net/qq_45732223/article/details/109729960

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302441.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试|Linux基础教程:ln命令与软链接和硬链接

简介 在Linux系统中&#xff0c;ln命令是一个非常有用的工具&#xff0c;用于创建链接&#xff08;link&#xff09;&#xff0c;将一个文件或目录链接到另一个位置。链接允许一个文件或目录可以同时存在于多个位置&#xff0c;而不会占用额外的磁盘空间。ln命令支持创建硬链接…

SAP 物料读取基本数据文本与检验文本READ_TEXT

1. 读取基本数据文本 使用函数 READ_TEXT 2. 读取检验文本

【金猿CIO展】是石科技CIO侯建业:算力产业赋能,促进数字经济建设

‍ 侯建业 本文由是石科技CIO侯建业撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 是石科技&#xff08;江苏&#xff09;有限公司成立于2021年&#xff0c;由国家超级计算无锡中心与…

CSDN博客重新更新

说来惭愧&#xff0c;好久没更新博客文章&#xff0c;导致个人博客网站&#xff1a;https://lenky.info/ 所在的网络空间和域名都过期了都没发觉&#xff0c;直到有个同事在Dim上问我我的个人博客为啥打不开了。。。幸好之前有做整站备份&#xff0c;后续慢慢把内容都迁回CSDN上…

【Docker】可以将TA用于什么,简单了解下

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是是《Docker容器》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深…

独立式键盘的按键功能扩展:“以一当四“

#include<reg51.h> // 包含51单片机寄存器定义的头文件 unsigned char ID; //储存流水灯的流动速度 sbit S1P1^4; //位定义S1为P1.4 /************************************************************** 函数功能&#xff1a;延时子程序 ***********…

卷积神经网络|迁移学习-猫狗分类完整代码实现

还记得这篇文章吗&#xff1f;迁移学习|代码实现 在这篇文章中&#xff0c;我们知道了在构建模型时&#xff0c;可以借助一些非常有名的模型&#xff0c;这些模型在ImageNet数据集上早已经得到了检验。 同时torchvision模块也提供了预训练好的模型。我们只需稍作修改&#xf…

我的阿里云服务器被攻击了

服务器被DDoS攻击最恶心&#xff0c;尤其是阿里云的服务器受攻击最频繁&#xff0c;因为黑客都知道阿里云服务器防御低&#xff0c;一但被攻击就会进入黑洞清洗&#xff0c;轻的IP停止半小时&#xff0c;重的停两个至24小时&#xff0c;给网站带来很严重的损失。而处理 ddos 攻…

Spring Cloud Gateway整合Sentinel

日升时奋斗&#xff0c;日落时自省 目录 1、实现整合 1.1、添加框架依赖 1.2、设置配置文件 1.3、设置限流和熔断规则 1.3.1、限流配置 Route ID限流配置 API限流配置 1.3.2、熔断配置 2、实现原理 先前Sentinel针对是业务微服务&#xff0c;没有整合Sentinel到Spring…

若依CRUD搬砖开始,Java小白入门(十)

背景 经过囫囵吞枣的学习若依框架&#xff0c;对于ruoyi-framework&#xff0c;common&#xff0c;安全&#xff0c;代码生成等模块都看了一圈&#xff0c;剩余的调度模块&#xff0c;这个暂时不深入&#xff0c;剩余的是ruoyi-system&#xff0c;就是用mybatis完成的&#xf…

c/c++基础 自增自减运算符 大白讲解i++/i--/++i/--i

后置运算符&#xff1a;i表示在使用x之后&#xff0c;再使x的值加1&#xff0c;即ii1; 前置运算符&#xff1a;i表示在使用x之前&#xff0c;先使x的值加1&#xff0c;即ii1. 前缀运算和后缀运算的区别&#xff1a;前缀运算是“先变后用”&#xff0c;而后缀运算是“先用后变”…

JavaScript:Date 对象-时间日期

Date 对象-时间日期: - JS中所有的关于时间信息都需要通过Date对象来表示 // 创建一个Date对象 // 如果直接使用new Date()创建时间对象&#xff0c;它会默认创建一个表示代码执行时刻的对象var d new Date();// 如果希望创建一个指定的时间的Date的对象&#xff0c;需要传递…

《代码整洁之道之程序员的职业素养》-验收测试测试策略

Tips&#xff1a;此文为阅读Bob大叔的《代码整洁之道》一书的摘抄小记&#xff0c;谨慎“食用” 一、验收测试 重视沟通&#xff0c;专业开发人员既要做好开发也要做好沟通。“输入糟糕&#xff0c;输出也会糟糕”&#xff0c;职业程序员需要重视与团队及业务部门的沟通&…

IP3005A 超高精度内置MOSFET 单节锂电池保护IC 英集芯

描述 IP3005系列IC是一款超高精度的单节锂离子/ 锂聚合物电池保护芯片&#xff0c;它内置功率MOSFET&#xff0c;全 集成了超高精度的过充电压、过放电压、过放电流、 过充电流检测保护电路。 IP3005采用了精确的电压判断电路&#xff0c;让过充电压&#xff0c;过充恢复电压&…

一天一个设计模式---单例模式

概念 单例模式是一种创建型设计模式&#xff0c;其主要目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。这意味着在应用程序中的任何地方&#xff0c;只能有一个实例存在&#xff0c;而不会创建多个相同类型的实例。 具体内容 单例模式通常包括以下几个要素…

如何解决vscode中文路径的问题

首先我们进入设备 搜索“区域”&#xff0c;选择“区域设置” 点击管理语言设置 点击更改系统区域设置&#xff0c;勾选“Beta 版: 使用 Unicode UTF-8 提供全球语言支持(U)”&#xff0c;电脑会叫你重启&#xff0c;你重启就行了

树莓派点亮led(1)

更换清华源 树莓派更换国内源&#xff08;清华源&#xff09;_树莓派更换清华源-CSDN博客 查看python版本 安装pipx 安装引脚 查看引脚 #安装gpio 创建文件夹 创建py文件 运行python文件 ubuntu传递文件到树莓派 1、启用ubuntu端的新终端 2拷贝文件到home目录下的用户文件夹…

AI人工智能学习路线图

学习人工智能 AI 的路线通常包括以下几个步骤&#xff1a;了解人工智能的基本概念和历史&#xff0c;包括机器学习、神经网络、深度学习等技术。学习数学基础知识&#xff0c;包括线性代数、微积分、概率论和统计学等。学习编程基础知识&#xff0c;包括 Python、C 等编程语言。…

手把手教学git-idea在实际开发中如何使用(适用于包装/实习同学)

TOC 前言 当前git主流的使用方式有可视化工具和git命令行, 这里主要介绍可视化工具(idea中的git)的使用方法, 其他比较好用的可视化工具还有SourceTree git-idea idea中git相关页面和功能的介绍 图一 图二 图三 图四 合并代码解决冲突: 合并代码我知道的方法有三种…

研究生写爬虫险些锒铛入狱,起因竟是为爱冲锋?

我国目前并未出台专门针对网络爬虫技术的法律规范&#xff0c;但在司法实践中&#xff0c;相关判决已屡见不鲜&#xff0c;K 哥特设了“K哥爬虫普法”专栏&#xff0c;本栏目通过对真实案例的分析&#xff0c;旨在提高广大爬虫工程师的法律意识&#xff0c;知晓如何合法合规利用…