相关函数

相关函数描述了两个信号之间的相似性,其相关性大小有相关系数衡量。

1.自相关函数

自相关函数是信号在时域中特性的平均度量,它用来描述随机信号x(t)在任意两个不同时刻s,t的

取值之间的相关程度,其定义式为:

自相关函数的主要性质:

(1)自相关函数为偶函数,其图形对称于纵轴。

(2)当s=t 时,自相关函数具有最大值,且等于信号的均方值,即

(3)周期信号的自相关函数仍为同频率的周期信号。

2.互相关函数

互相关函数是描述随机信号X(s),Y(t)在任意两个不同时刻s,t的取值之间的相关程度。

互相关函数的应用

互相关函数的上述性质在工程中具有重要的应用价值。

(1) 在混有周期成分的信号中提取特定的频率成分。

(2) 线性定位和相关测速。

在某些领域,自相关函数等同于自协方差。

matlab中提供了xcorr这个相关函数以供调用。但这个函数在使用中比较麻烦,本文将介绍这个函数的具体用法。

本文将详细介绍对应每个注释项Matlab是如何计算的,当然本文考虑输入的是一个简单一维序列

x=[2,3,4],序列中数据对应的序号依次为1,2,3。

第一:缺省注释项,[a,b]=xcorr(x),通过该命令计算的结果为:a=8 18 29 18 8; b=-2 -1 0 1 2。

下面介绍一下,该过程计算机是如何计算的,首先讲b的计算,设一维序列的长度为N,则序列中任意两个数据序号相减,最小值为1-N,最大值为N-1,且能取遍两者之间的所有整数,将这些数从小到大排列得到的就是b;然后讲a的计算,在缺省注释项的情况下,a的计算是这样的,a的每一项是对应b的每一项的

1、当b(1)=-2时,计算a(1)时只用到一组数据——(2,4)注意顺序,只有这两个数据的序号相减(后面数据的序号减去前面的)满足b=-2,因此a(1)的计算公式为:2*4=8

2、当b(2)=-1时,计算a(2)时用到两组数据——(2,3)和(3,4),这两组数据的序号相减(后面数据的序号减去前面的)满足b=-1,因此a(2)的计算公式为:2*3+3*4=18

3、当b(3)=0时,计算a(3)时用到三组数据——(2,2)、(3,3)、(4,4),这三组数据的序号相减(后面数据的序号减去前面的)满足b=0,因此a(3)的计算公式为:2*2+3*3+4*4=29

其它类推。

第二:注释项为‘unbiased’,[a,b]=xcorr(x,‘unbiased’),通过该命令计算的结果为:

a=8.0000 9.0000 9.6667 9.0000 8.0000;b=-2 -1 0 1 2。

1、当b(1)=-2时,计算a(1)时只用到一组数据(记N=1)——(2,4)注意顺序,只有这两个数据的序号相减(后面数据的序号减去前面的)满足b=-2,因此a(1)的计算公式为:(2*4)/1=8

2、当b(2)=-1时,计算a(2)时用到两组数据(记N=2)——(2,3)和(3,4),这两组数据的序号相减(后面数据的序号减去前面的)满足b=-1,因此a(2)的计算公式为:(2*3+3*4)/2=9

即在原结果的基础上除以用到的数据的组数。

第三:注释项为‘biased’,[a,b]=xcorr(x,‘biased’),通过该命令计算的结果为:a= 2.6667 6.0000 9.6667 6.0000 2.6667,b=-2 -1 0 1 2。下面介绍计算机如何计算该过程,注意到本次计算用到的序列x的长度为3,记为M=3。

1、当b(1)=-2时,计算a(1)时只用到一组数据——(2,4)注意顺序,只有这两个数据的序号相减(后面数据的序号减去前面的)满足b=-2,因此a(1)的计算公式为:(2*4)/M= 2.6667

2、当b(2)=-1时,计算a(2)时用到两组数据——(2,3)和(3,4),这两组数据的序号相减(后面数据的序号减去前面的)满足b=-1,因此a(2)的计算公式为:(2*3+3*4)/M=6

3、当b(3)=0时,a(3)的计算公式为:29/M= 9.6667

即在原结果的基础上除以序列x的长度。

第四:注释项为‘coeff’,[a,b]=xcorr(x,‘coeff’),通过该命令计算的结果为:a= 0.2759 0.6207 1.0000 0.6207 0.2759,b=-2 -1 0 1 2,这种情况实际是将第三种情况下得到的结果进行归一化,使得b=0时对应的值为1,a(1)= 2.6667 /9.6667=0.2759;a(2)=6/9.6667= 0.6207 ,

a(3)=9.6667/9.6667=1。

互相关情况:

假设 x=[2,3,4];y=[3,4,5];则语句[a,b] = xcorr(x,y)的运行结果为:

a =

10.0000 23.0000 38.0000 25.0000 12.0000

b =

-2 -1 0 1 2

原因是相同的:当b=-2时,只有x里面的元素2和y里面的元素5符合条件,因此b(-2)=10,其它的类推。

为了对相关函数的作用有一个直观的认识,下面给出一个应用实例:

n=6000;

fs=1000;

t=(0:n-1)/fs;

f0=5;

x=sin(2*pi*f0*t);

z=x+randn(size(x));

[R,ttt]=xcorr(z,1000,'coeff');

subplot(2,1,1);

plot(t(1:1000),z(1:1000));

xlabel('时间/s');

ylabel('幅值');

subplot(2,1,2);

plot(ttt,R);

xlabel('滞后');

ylabel('自相关函数');

运行结果为:

从运行结果可以看出,自相关函数把被噪声污染了的正弦波提取了出来。

本文作者基于这个思想出发,试图将一段被噪声污染的音频信号恢复出来,但没有成功,恢复的结果是留下了噪音,里面的音乐被去除了,这里给出相应代码,欢迎有兴趣的朋友一起讨论。

fs=44100;

[x,fs]=audioread('addnoise.mp3');

[R,ttt]=xcorr(x,840000);

filename = 'filterafter.wav';

audiowrite(filename,R,44100);

xcorr函数_相关函数xcorr的用法及实例相关推荐

  1. java resultset 映射到实例_[Java]ResultSet的用法与实例

    JDBC API 2.0/3.0中ResultSet记录集的简便实用的新特性 1 新定义了若干个常数 这些常数用于指定ResultSet 的类型游标移动的方向等性质,如下所示: public stat ...

  2. matlab中xcorr函数详解

    Matlab中xcorr函数详解 引言 在matlab中查找相关函数时,找到了xcov函数和xcorr函数,仔细看了帮助文档,发现虽然计算公式不一样,但是两个函数用法相同,计算出的值也相同,于是在翻了 ...

  3. python使用matplotlib可视化、使用xcorr函数可视化两个变量的互相关图、使用acorr函数可视化自相关图像

    python使用matplotlib可视化.使用xcorr函数可视化两个变量的互相关图.使用acorr函数可视化自相关图像 目录

  4. 【 MATLAB 】xcorr 函数介绍(互相关)简介

    xcorr Cross-correlation Syntax r = xcorr(x,y) r = xcorr(x) r = xcorr(___,maxlag) r = xcorr(___,scale ...

  5. Matlab xcorr函数详解

    Matlab提供了计算互相关和自相关的函数xcorr函数 1.使用方法 c = xcorr(x,y) c = xcorr(x) c = xcorr(x,y,'option') c = xcorr(x, ...

  6. matlab的xcorr函数,Matlab_xcorr_互相关函数的讨论

    假设两个平稳信号 $\textbf{x}$ 和 $\textbf{y}$ ,如果 $x\left(t+\tau\right)= y\left(t\right)$ ,则可通过互相关求 $\tau$ .由 ...

  7. python中什么是关键字参数_如何使用python语言中函数的关键字参数的用法

    一般情况下,在调用函数时,使用的是位置参数,即是按照参数的位置来传值:关键字参数是按照定义函数传入的参数名称来传值的.那么,关键字参数怎么使用? 工具/原料 python pycharm 截图工具 W ...

  8. python数组扩充_【Python】Numpy扩充数组函数之repeat和tile用法,

    [Python]Numpy扩充数组函数之repeat和tile用法,有需要的朋友可以参考下. 用repeat和tile扩充数组元素,例如 >>> import numpy as np ...

  9. 【九】Python全栈之路--文件函数_函数参数

    文章目录 1. 文件相关函数 2. 函数_函数的参数 2.1 函数 2.2 函数的参数 3. 收集参数 4. 命名关键字_总结 4. 小练习 1. 文件相关函数 # ### 刷新缓冲区 "& ...

最新文章

  1. 知识图谱实践篇(五):KBQA Demo
  2. Docker安装启动influxDB数据库及建库查询基本操作
  3. Angular 指令ngTemplateOutlet的运行原理单步调试
  4. flask v0.1 flask.py
  5. fm -rf 删除 恢复
  6. 数值分析实验四 最小二乘法曲线拟合
  7. Windows 10内置Hyper-V虚拟机安装XP系统(二) - 配置网络
  8. [转帖]Dockerfile设置默认时区
  9. Span 介绍及使用(二)
  10. python相关库快速下载
  11. AIRIOT物联网低代码平台如何配置交通部JT-808协议?
  12. va_list的用法
  13. position:sticky新特性
  14. C++程序设计_图书管理系统的控制台实现
  15. 减少在线去重造成的数据碎片
  16. ZOJ 3380 Patchouli's Spell Cards(概率DP)
  17. android nfc读取公交卡信息_手机NFC可以复制小区用的门禁卡吗?
  18. 聪明的美食家(动态规划)
  19. C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器、实机可用),截图好方便。...
  20. java做智慧校园项目_智慧校园项目解决方案.ppt

热门文章

  1. 按键精灵手机版去除广告XPosed模块插件
  2. unity游戏教程 space shooter (游戏控制器)
  3. volley三种基本请求图片的方式与Lru的基本使用:正常的加载+含有Lru缓存的加载+Volley控件networkImageview的使用...
  4. 创建寄宿在Windows服务中的WCF服务
  5. Android开发之动态创建多个按钮
  6. AndroidStudio_安卓原生开发_请求网络图片并解析成BitMap_异步处理_在UI线程执行_利用AsyncTask---Android原生开发工作笔记146
  7. k8s核心技术-Helm(快速部署应用)---K8S_Google工作笔记0046
  8. JAVA高并发工作笔记0002---高并发编程之使用ThreadFactory来创建新的线程
  9. security工作笔记007---spring security自定义AuthenticationProvider,验证规则
  10. SpringCloud学习笔记026---SpringBoot中使用不同类型的数据库_MySql_PostGreSql_使用template