xcorr函数_相关函数xcorr的用法及实例
相关函数
相关函数描述了两个信号之间的相似性,其相关性大小有相关系数衡量。
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的用法及实例相关推荐
- java resultset 映射到实例_[Java]ResultSet的用法与实例
JDBC API 2.0/3.0中ResultSet记录集的简便实用的新特性 1 新定义了若干个常数 这些常数用于指定ResultSet 的类型游标移动的方向等性质,如下所示: public stat ...
- matlab中xcorr函数详解
Matlab中xcorr函数详解 引言 在matlab中查找相关函数时,找到了xcov函数和xcorr函数,仔细看了帮助文档,发现虽然计算公式不一样,但是两个函数用法相同,计算出的值也相同,于是在翻了 ...
- python使用matplotlib可视化、使用xcorr函数可视化两个变量的互相关图、使用acorr函数可视化自相关图像
python使用matplotlib可视化.使用xcorr函数可视化两个变量的互相关图.使用acorr函数可视化自相关图像 目录
- 【 MATLAB 】xcorr 函数介绍(互相关)简介
xcorr Cross-correlation Syntax r = xcorr(x,y) r = xcorr(x) r = xcorr(___,maxlag) r = xcorr(___,scale ...
- Matlab xcorr函数详解
Matlab提供了计算互相关和自相关的函数xcorr函数 1.使用方法 c = xcorr(x,y) c = xcorr(x) c = xcorr(x,y,'option') c = xcorr(x, ...
- matlab的xcorr函数,Matlab_xcorr_互相关函数的讨论
假设两个平稳信号 $\textbf{x}$ 和 $\textbf{y}$ ,如果 $x\left(t+\tau\right)= y\left(t\right)$ ,则可通过互相关求 $\tau$ .由 ...
- python中什么是关键字参数_如何使用python语言中函数的关键字参数的用法
一般情况下,在调用函数时,使用的是位置参数,即是按照参数的位置来传值:关键字参数是按照定义函数传入的参数名称来传值的.那么,关键字参数怎么使用? 工具/原料 python pycharm 截图工具 W ...
- python数组扩充_【Python】Numpy扩充数组函数之repeat和tile用法,
[Python]Numpy扩充数组函数之repeat和tile用法,有需要的朋友可以参考下. 用repeat和tile扩充数组元素,例如 >>> import numpy as np ...
- 【九】Python全栈之路--文件函数_函数参数
文章目录 1. 文件相关函数 2. 函数_函数的参数 2.1 函数 2.2 函数的参数 3. 收集参数 4. 命名关键字_总结 4. 小练习 1. 文件相关函数 # ### 刷新缓冲区 "& ...
最新文章
- 知识图谱实践篇(五):KBQA Demo
- Docker安装启动influxDB数据库及建库查询基本操作
- Angular 指令ngTemplateOutlet的运行原理单步调试
- flask v0.1 flask.py
- fm -rf 删除 恢复
- 数值分析实验四 最小二乘法曲线拟合
- Windows 10内置Hyper-V虚拟机安装XP系统(二) - 配置网络
- [转帖]Dockerfile设置默认时区
- Span 介绍及使用(二)
- python相关库快速下载
- AIRIOT物联网低代码平台如何配置交通部JT-808协议?
- va_list的用法
- position:sticky新特性
- C++程序设计_图书管理系统的控制台实现
- 减少在线去重造成的数据碎片
- ZOJ 3380 Patchouli's Spell Cards(概率DP)
- android nfc读取公交卡信息_手机NFC可以复制小区用的门禁卡吗?
- 聪明的美食家(动态规划)
- C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器、实机可用),截图好方便。...
- java做智慧校园项目_智慧校园项目解决方案.ppt
热门文章
- 按键精灵手机版去除广告XPosed模块插件
- unity游戏教程 space shooter (游戏控制器)
- volley三种基本请求图片的方式与Lru的基本使用:正常的加载+含有Lru缓存的加载+Volley控件networkImageview的使用...
- 创建寄宿在Windows服务中的WCF服务
- Android开发之动态创建多个按钮
- AndroidStudio_安卓原生开发_请求网络图片并解析成BitMap_异步处理_在UI线程执行_利用AsyncTask---Android原生开发工作笔记146
- k8s核心技术-Helm(快速部署应用)---K8S_Google工作笔记0046
- JAVA高并发工作笔记0002---高并发编程之使用ThreadFactory来创建新的线程
- security工作笔记007---spring security自定义AuthenticationProvider,验证规则
- SpringCloud学习笔记026---SpringBoot中使用不同类型的数据库_MySql_PostGreSql_使用template