博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Matlab的xcorr函数的解释
阅读量:5342 次
发布时间:2019-06-15

本文共 2677 字,大约阅读时间需要 8 分钟。

看了MATLAB关于xcorr的help文档没搞清楚什么意思,只够看到一篇不错的文章,通过简单事例即可了解其应用。

输入的是一个简单一维序列x=[1,2,3]

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

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

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

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

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

4、当b(4)=1时,计算a(4)时用到两组数据——(1,2)和(2,3),(读者请对比和情况2的区别),这两组数据的序号相减(后面数据的序号减去前面的)满足b=1,因此a(4)的计算公式为:1*2+2*3=8

5、当b(5)=2时,计算a(4)时用到一组数据——(1,3),(读者请对比和情况1的区别),这两组数据的序号相减(后面数据的序号减去前面的)满足b=2,因此a(4)的计算公式为:1*3=3

第二:注释项为‘unbiased’,[a,b]=xcorr(x,‘unbiased’),通过该命令计算的结果为:a=3 4 4.6667 4 3;b=-2 -1 0 1 2.下面介绍计算机如何计算该过程,b的计算在四种注释项的情况下是相同的,就不再讲述了。a的计算仍是和b的每一项相对应的。

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

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

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

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

5、当b(5)=2时,计算a(4)时用到一组数据(记N=1)——(1,3),(读者请对比和情况1的区别),这两组数据的序号相减(后面数据的序号减去前面的)满足b=2,因此a(4)的计算公式为:(1*3)/1=3

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

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

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

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

4、当b(4)=1时,计算a(4)时用到两组数据——(1,2)和(2,3),(读者请对比和情况2的区别),这两组数据的序号相减(后面数据的序号减去前面的)满足b=1,因此a(4)的计算公式为:(1*2+2*3)/M=2.6667

5、当b(5)=2时,计算a(4)时用到一组数据——(1,3),(读者请对比和情况1的区别),这两组数据的序号相减(后面数据的序号减去前面的)满足b=2,因此a(4)的计算公式为:(1*3)/M=1

第四:注释项为‘coeff’,[a,b]=xcorr(x,‘coeff’),通过该命令计算的结果为:a= 0.2143   0.5714    1.0000    0.5714    0.2143,b=-2 -1 0 1 2,下面介绍计算机如何计算该过程,这种情况实际是将第三种情况下得到的结果进行归一化,使得b=0时对应的值为1,a(1)=1/4.6667=0.2143;a(2)=2.6667/4.6667=0.5714,a(3)=4.6667/4.6667=1,a(4)=2.6667/4.6667=0.5714,a(5)=1/4.6667=0.2143

 

另:xcorr命令在工程上的应用通常是对时间上的采样数据序列x进行处理,当数据点采完之后交给Matlab处理时,Matlab是不知道你的采样时间间隔的,它仅仅根据上文所述的计算过程对输入的数据序列x进行计算,但我们可以自己定义时间间隔,例如dt=0.01,此时t=dt*b即代表相关性计算中的时间延迟,前半部分是超前,后半部分是滞后,若R=xcorr(x,‘unbiased’),则通过命令:plot(t,R)即可得到该时域信号的自相关函数曲线。

转载于:https://www.cnblogs.com/yana-running/p/5458794.html

你可能感兴趣的文章
HTC G7直刷MIUI开启A2SD+亲测教程
查看>>
shiro的rememberMe不生效
查看>>
const 不兼容的类型限定符问题
查看>>
OpenCV的配置
查看>>
spring Cache + Redis 开发数据字典以及自定义标签
查看>>
成功连上数据库顿感世界美好许多
查看>>
编程注意2
查看>>
《C++ Primer Plus》第12章 类和动态内存分配 学习笔记
查看>>
kosaraju求强连通分量
查看>>
Block作为返回值时的使用
查看>>
文件管理之文件后缀名识别
查看>>
android 表情,软键盘冲突解决方案(仿微博等SNS应用)
查看>>
ASP.NET MVC随想录——锋利的KATANA
查看>>
20155303 2016-2017-2 《Java程序设计》第五周学习总结
查看>>
selenium爬取网易云
查看>>
常用配置文件
查看>>
Python全栈之路系列之流程控制
查看>>
# 20155209 2016-2017-2 《Java程序设计》第六周学习总结
查看>>
shell 脚本获取数组字符串长度
查看>>
Spark性能优化指南——基础篇
查看>>