QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1870|回复: 2
打印 上一主题 下一主题

关于xcorr的问题

[复制链接]
字体大小: 正常 放大

6

主题

13

听众

99

积分

升级  98.95%

  • TA的每日心情
    擦汗
    2015-8-27 08:45
  • 签到天数: 37 天

    [LV.5]常住居民I

    自我介绍
    大学生一枚
    跳转到指定楼层
    1#
    发表于 2014-7-25 19:11 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    相关性系数不是应该小于等于1,为什么 c=xcorr(x,y)  算出来都大于1? 这个c是什么东西?怎么变成相关性系数?谢谢!!
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    90

    主题

    105

    听众

    9482

    积分

  • TA的每日心情

    2017-1-30 23:35
  • 签到天数: 318 天

    [LV.8]以坛为家I

    2010挑战赛参赛者

    2011挑战赛参赛者

    2012挑战赛参赛者

    2013挑战赛参赛者

    社区QQ达人

    群组物联网工程师培训

    群组Matlab讨论组

    群组2013认证赛C题讨论群组

    群组数学建模

    群组2013认证赛A题讨论群组

    自相关
    matlab中的xcorr
    Matlab中用于计算自相关函数的指令是xcorr.比如矩阵A=[1 2 3];
                                                                        xcorr(A)=3.0000 8.0000 14.0000 8.0000 3.0000
          自相关函数是信号间隔的函数,间隔有正负间隔,所以n个长度的信号,有2n-1个自相关函数值,分别描述的是不同信号间隔的相似程度。
          比如,上面的矩阵,最后得到5个结果,其中第三个是自己和自己相乘,最后相加的结果,值最大1*1+2*2+3*3=14。而第二个和第四个分别是间隔正负1的结果也就是1*2+2*3=8,2*1+3*2=8。第1个和第五个分别是间隔正负2,也就是1*3=3,3*1=3。
          xcorr求出的结果仅仅是x(n)*x(n+m)并对其求和,并没有除以前面的N或者是N-|K|。不用这个函数也可以求
    for k=0:1:p
        t5=0;
        for n=0:1:N-k-1
            t5=t5+conj(x(n+1))*x(n+1+k);
        end
        Rxx(k+1)=t5/N;
    end
    也可以实现,其中N为序列长度此处并未求出全部的自相关序列,只求了间隔从0到p的。
    我们令Rx=xcorr(x);
    则Rxx(k+1)=Rx(N+k)/N得到。
    多多发帖,受益多多
    回复

    使用道具 举报

    90

    主题

    105

    听众

    9482

    积分

  • TA的每日心情

    2017-1-30 23:35
  • 签到天数: 318 天

    [LV.8]以坛为家I

    2010挑战赛参赛者

    2011挑战赛参赛者

    2012挑战赛参赛者

    2013挑战赛参赛者

    社区QQ达人

    群组物联网工程师培训

    群组Matlab讨论组

    群组2013认证赛C题讨论群组

    群组数学建模

    群组2013认证赛A题讨论群组

    1. 首先说说自相关和互相关的概念。
    这个是信号分析里的概念,他们分别表示的是两个时间序列之间和同一个时间序列在任意两个不同时刻的取值之间的相关程度,即互相关函数是描述随机信号 x(t),y(t)在任意两个不同时刻t1,t2的取值之间的相关程度,自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2的取值之间的相关程度。
    自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2的取值之间的相关程度;互相关函数给出了在频域内两个信号是否相关的一个判断指标,把两测点之间信号的互谱与各自的自谱联系了起来。它能用来确定输出信号有多大程度来自输入信号,对修正测量中接入噪声源而产生的误差非常有效.
    事实上,在图象处理中,自相关和互相关函数的定义如下:设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积;设两个函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。
    那么,如何在matlab中实现这两个相关并用图像显示出来呢?
    dt=.1;
    t=[0:dt:100];
    x=cos(t);
    [a,b]=xcorr(x,'unbiased');
    plot(b*dt,a)
    上面代码是求自相关函数并作图,对于互相关函数,稍微修改一下就可以了,即把
    [a,b]=xcorr(x,'unbiased');改为[a,b]=xcorr(x,y,'unbiased');便可。
    2. 实现过程:
          在Matalb中,求解xcorr的过程事实上是利用Fourier变换中的卷积定理进行的,即R(u)=ifft(fft(f)×fft(g)),其中×表示乘法,注:此公式仅表示形式计算,并非实际计算所用的公式。当然也可以直接采用卷积进行计算,但是结果会与xcorr的不同。事实上,两者既然有定理保证,那么结果一定是相同的,只是没有用对公式而已。下面是检验两者结果相同的代码:
    dt=.1;
    t=[0:dt:100];
    x=3*sin(t);
    y=cos(3*t);
    subplot(3,1,1);
    plot(t,x);
    subplot(3,1,2);
    plot(t,y);
    [a,b]=xcorr(x,y);
    subplot(3,1,3);
    plot(b*dt,a);
    yy=cos(3*fliplr(t)); % or use: yy=fliplr(y);
    z=conv(x,yy);
    pause;
    subplot(3,1,3);
    plot(b*dt,z,'r');
    即在xcorr中不使用scaling。
    3. 其他相关问题:
    1) 相关程度与相关函数的取值有什么联系?
      相关系数只是一个比率,不是等单位量度,无什么单位名称,也不是相关的百分数,一般取小数点后两位来表示。相关系数的正负号只表示相关的方向,绝对值表示相关的程度。因为不是等单位的度量,因而不能说相关系数0.7是0.35两倍,只能说相关系数为0.7的二列变量相关程度比相关系数为0.35的二列变量相关程度更为密切和更高。也不能说相关系数从0.70到0.80与相关系数从0.30到0.40增加的程度一样大。
    对于相关系数的大小所表示的意义目前在统计学界尚不一致,但通常按下是这样认为的:
    相关系数          相关程度
    0.00-±0.30       微相关
    ±0.30-±0.50   实相关
    ±0.50-±0.80  显著相关
    ±0.80-±1.00  高度相关

    matlab计算自相关函数autocorr和xcorr有什么不一样的?xcorr是没有将均值减掉做的相关,autocorr则是减掉了均值。
    多多发帖,受益多多
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-10-1 21:22 , Processed in 0.560490 second(s), 61 queries .

    回顶部