Matlab中xcorr函数详解

引言

在matlab中查找相关函数时,找到了xcov函数和xcorr函数,仔细看了帮助文档,发现虽然计算公式不一样,但是两个函数用法相同,计算出的值也相同,于是在翻了一圈百度后,找到了这个文档,讲的很细,转载下来以便今后学习。

基本用法

1.使用方法

c = xcorr(x,y)
c = xcorr(x)
c = xcorr(x,y,‘option’)
c = xcorr(x,‘option’)
c = xcorr(x,y,maxlags)
c = xcorr(x,maxlags)
c =xcorr(x,y,maxlags,‘option’)
c =xcorr(x,maxlags,‘option’)
[c,lags] = xcorr(…)

其中option为:
"biased"为有偏的互相关函数估计;
"unbiased"为无偏的互相关函数估计;
"coeff"为0延时的正规化序列的自相关计算;
"none"为原始的互相关计算
2.特别的:
c=xcorr(x,‘option’)特指以上某个选项的自相关估计。
c = xcorr(x,y,maxlags)返回一个延迟范围在[-maxlags,maxlags]的互相关函数序列,输出c的程度为2maxlags+1.
c = xcorr(x,maxlags)返回一个延迟范围在[-maxlags,maxlags]的自相关函数序列,输出c的程度为2maxlags+1.
c = xcorr(x,y,maxlags,‘option’)同时指定maxlags和option的互相关计算.
c = xcorr(x,maxlags,‘option’)同时指定maxlags和option的自相关计算.

正文

以下内容摘自:http://blog.sina.com.cn/s/blog_5c6778470101a47n.html
输入的是一个简单一维序列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)的计算公式为:21+32=8

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

4、当b(4)=1时,计算a(4)时用到两组数据——(1,2)和(2,3),(读者请对比和情况2的区别),这两组数据的序号相减(后面数据的序号减去前面的)满足b=1,因此a(4)的计算公式为:12+23=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)的计算公式为:(21+32)/2=4

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

4、当b(4)=1时,计算a(4)时用到两组数据(记N=2)——(1,2)和(2,3),(读者请对比和情况2的区别),这两组数据的序号相减(后面数据的序号减去前面的)满足b=1,因此a(4)的计算公式为:(12+23)/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)的计算公式为:(21+32)/M=2.6667

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

4、当b(4)=1时,计算a(4)时用到两组数据——(1,2)和(2,3),(读者请对比和情况2的区别),这两组数据的序号相减(后面数据的序号减去前面的)满足b=1,因此a(4)的计算公式为:(12+23)/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)即可得到该时域信号的自相关函数曲线。

matlab中xcorr函数详解相关推荐

  1. Matlab中 pdist 函数详解

    学习笔记,仅供参考,有错必纠 转载自:Matlab中 pdist 函数详解(各种距离的生成); pdist Pairwise distance between pairs of objects. Sy ...

  2. Matlab中fft函数详解

    FFT函数 Y = fft(x) 如果x是向量,则fft(x)返回该向量的傅里叶变换 如果x是矩阵,则fft(x)将x的各列视为向量,并返回每列的傅里叶变换. 如果x是一个多维数组,则 fft(X) ...

  3. MATLAB中find函数详解

    (转自http://blog.sina.com.cn/emily250886) 功能:    寻找非零元素的索引和值 语法: 1.  ind = find(X) 2.  ind = find(X, k ...

  4. matlab中Regionprops函数详解——度量图像区域属性

    声明:原文链接https://blog.csdn.net/langb2014/article/details/49886787点击打开链接,仅学习使用,写的很不错. Regionprops:用途是ge ...

  5. Matlab中legend函数详解及legend边框去掉的方法

  6. c++ memset 语言_C/C++ 中memset() 函数详解及其作用介绍

    memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的: 包含在头文件中,可以用它对一片内存空间逐字节进行初始化: 原型为 : void *memset(void *s, int v, si ...

  7. Linux中fork()函数详解

    Linux中fork()函数详解 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事, ...

  8. linux 中 sigaction 函数详解

    linux 中 sigaction 函数详解 一.函数原型 sigaction 函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作) int sigaction(int signum, ...

  9. MATLAB的iptcheckinput函数详解

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 iptcheckinput函数详解,这个函数在看 ...

最新文章

  1. 使用Python,OpenCV和Scikit-Image检测低对比度图像
  2. Powershell RESTAPI 访问Office365
  3. 降维(二)----Laplacian Eigenmaps
  4. multisim中轻触开关在哪_现货供应轻触开关|品质确保|厂家直销
  5. 最优二叉查找树(动态规划)——详解
  6. 1024程序员节开源技术英雄会 参会“英雄榜”发榜
  7. 1005. 继续(3n+1)猜想 (25) PAT乙级真题
  8. db2和oracle更新xml大字段
  9. NLPIR使用(1)
  10. 微信自动截取PPT或者黑/白版图片
  11. Linux学习笔记(购买使用阿里云服务器,基本命令,安装JDK,Tomcat等环境)
  12. ROS机器人控制 —— 键盘方向控制
  13. 千与千寻主题曲beep函数版
  14. 修改TOMCAT6.0内存的方法
  15. 查找会议的地址和时间
  16. 一点关于优化手写笔迹
  17. Lenovo GTX960M 配置CUDA
  18. 永磁同步电机矢量控制中的双闭环是什么意思_【百问百答】ST 电机控制实战问答合辑 | 连载之二...
  19. Jetson Nano - 实现VNC远程桌面控制
  20. 【牛客网OJ题】人民币转换

热门文章

  1. 概率论实验 02 - | 基于Matlab随机数的产生和特性统计
  2. 一幅长文细学华为MRS大数据开发(五)——MapReduce和Yarn
  3. idea中项目出现乱码的解决方式(包括tomat,maven,HttpServlet页面中文出现乱码等问题)
  4. spss连接至远程计算机,通过远程连接打开SPSS产品时,收到许可证错误信息。从本地打开同一产品时没有错误。...
  5. 华南X99主板安装ESXi7.0或ESXi8.0的配置说明
  6. EAN13码校验位算法
  7. Vue设置button的disable属性
  8. 优思学院:从零基础成为六西格玛黑带?
  9. 你所不知道的VisualGDB
  10. android 自定义软键盘