精华内容
下载资源
问答
  • 自相关函数和互相关函数计算.pdf
    2021-01-17 10:22:52

    [原创]自相关函数和互相关函数计算和作图的整理及一点心得 -... /thread-36108-1-1.html

    benjaminchitic | 设置 | 切换马甲 | 提醒 | 短消息 | 好友 邀请 | 任务 | 退出

    积分: 0 , 体能: 11 点 , 威望: 0 点 , 储备体能: 0 点 , 推广积分: 0 点 , 管理积分: 0 点 , 用户组: 预科生

    首页 论坛 群组 家园 百科 设施 休闲 游戏 排行榜 我的中心

    中国振动联盟进站必读 服务使用协议 近期热点及本站重点推荐版块 新的开始、新的征程—本站诚聘各版版主

    行为准则 | 免责声明 | 禁止行为 振动实验与测试技术 | 故障诊断及健康监测 加入管理队伍,更好地建设振动家园

    等级与权限 | 积分获取 | 意见建议 管理漫谈 | 振动产品展示 | 专业技术区 版主管理及考核 | 版主推荐 | 版主申请

    论坛 Matlab讨论区 [原创] 自相关函数和互相关函数计算和作图的整理及一点心 ... 搜索本版 请输入搜索内容

    关键词搜索: 搜索

    返回列表 1 2 3 4 下一页

    查看: 6215 | 回复: 59 [综合讨论] [原创]自相关函数和互相关函数计算和作图的整理及一点心得 [复制链接]

    eight 发表于 2007-1-5 16:54 | 只看该作者 | 倒序浏览 | 打印 | 阅读权限 10 楼主

    大家好像对这个问题提问得比较多,所以花了一点时间整理如下。

    1. 首先说说自相关和互相关的概念。

    [转版友

    gghhjj]

    这个是信号分析里的概念,他们分别表示的是两个时间序列之间和同一个时间序列在任意两个不同时刻的取值之间的相关程

    度,即互相关函数

    更多相关内容
  • 自相关函数及互相关函数编程
  • 互相关函数计算

    千次阅读 2021-10-19 13:30:14
    目录互相关函数的定义互相关函数计算存在具体项目参数时 整理不易,有条件的点个关注、点个赞呗!感恩各位大哥! 互相关函数的定义 描述两个不同的信号在不同时期上的相关性的函数,主要应用: 混有周期成分数据...

    整理不易,有条件的点个关注、点个赞呗!感恩各位大哥!

    互相关函数的定义

    描述两个不同的信号在不同时期上的相关性的函数,主要应用:

    • 混有周期成分数据(信号)的频率(周期)提取,例如两列数据在其中一列数据滞后三期时相关性最高,则该类数据的周期为3。

    互相关函数的计算

    公式:
    C 1 , 2 ( t ) ≈ ∫ 0 t c v 1 ( τ ) v 2 ( t + τ ) d τ (1) C_{1,2}(t)\approx\int_{0}^{t_{c}}v_{1}(\tau)v_{2}(t+\tau)d\tau\tag{1} C1,2(t)0tcv1(τ)v2(t+τ)dτ(1)
    实际计算举例,本实验中主要针对采用傅里叶变换的循环互相关,因此后续以循环互相关为例进行讲解!
    循环互相关的思想如下:
    在这里插入图片描述
    注意到在计算时要用到超出原始数据索引范围的数据,其数据补充方式并不是“补零”而是“周期延拓”。
    循环互相关实际则通过傅里叶变换进行计算,将上述两列数据分别变换到频率域,从而得到频率域同等长度的两列数据 [ 10. + 0. j − 2.5 + 3.4409548 j − 2.5 + 0.81229924 j ] , [ 10. + 0. j − 2.5 + 3.4409548 j − 2.5 + 0.81229924 j ] [10. +0.j -2.5+3.4409548j -2.5+0.81229924j],[10. +0.j -2.5+3.4409548j -2.5+0.81229924j] [10.+0.j2.5+3.4409548j2.5+0.81229924j][10.+0.j2.5+3.4409548j2.5+0.81229924j],则输出互相关矩阵为第一个元素为:
    ( 10 ∗ 10 + 0 j ∗ 0 j ) + ( 10 ∗ 0 j − 0 j ∗ 10 ) = ( 100 + 0 j ) (10*10+0j*0j)+(10*0j-0j*10)=(100+0j) (1010+0j0j)+(100j0j10)=(100+0j),同理第二个元素为 ( − 2.5 ∗ − 2.5 + 3.4409548 j ∗ 3.4409548 j ) + ( − 2.5 ∗ 3.4409548 j + 2.5 ∗ 3.4409548 j ) (-2.5*-2.5+3.4409548j *3.4409548j )+(-2.5*3.4409548j+2.5*3.4409548j) 2.52.5+3.4409548j3.4409548j+2.53.4409548j+2.53.4409548j)

    存在具体项目参数时

    计算方式一:

                for c in range(len(irover)):
                    # ================= Non center Station Index =================
                    Atr=st[irover[c]]
                    # ================= Location =================
                    # ================= Do FFT at non center =================
                    freq_rover, time_rover, Sxx_rover_ = sg.spectrogram(Atr.data  ,
                                                                        nperseg=wd, # 窗口大小,对应fftlen
                                                                        noverlap=0, # noverlap对应overlaprate,但是noverlap是具体值,overlaprate是重叠率
                                                                        nfft=nft, # 实际就是窗口大小,表示是否对数据进行填充。
                                                                        fs=Fs, # 频率,暂时不清楚频率在计算中的作用
                                                                        scaling='spectrum', # 输出设置为功率谱
                                                                        mode='complex')
                    
                    # ======== Find Data in range output frequency ===========
                    Sxx_rover_=Sxx_rover_[idx]
                    
                    # ================= Measure AutoCorrelation Ratio ================
                    rat_autocorr=np.zeros((len(Sxx_pusat_[:,0]),len(Sxx_pusat_[0,:])), dtype=np.complex)
                    for nwd in range(len(Sxx_pusat_[0,:])):
                        Abs_Sxx_pusat=(abs(Sxx_pusat_[:,nwd]))
                        Smooth_Abs_Sxx_pusat=sg.convolve(Abs_Sxx_pusat,smooth,mode='same')
                        
                        Abs_Sxx_rover=(abs(Sxx_rover_[:,nwd]))
                        Smooth_Abs_Sxx_rover=sg.convolve(Abs_Sxx_rover,smooth,mode='same')
                        
                        rat_autocorr[:,nwd]=((Sxx_pusat_[:,nwd]*np.conj(Sxx_rover_[:,nwd]))/
                                    (Smooth_Abs_Sxx_pusat*Smooth_Abs_Sxx_rover))
                        
                    time_autocorr=np.mean(rat_autocorr,axis=1)
                    autocorr[:,c]=time_autocorr   
    

    计算方式二:

    for(long i=0;i<d.nsta;i++){
                if(((k*d.steplen)>=d.startend[i*2])&&((k*d.steplen+d.fftlen)<d.startend[i*2+1]))
                {
                    ifCC[i] = 1;
                }
                else
                {
                    ifCC[i] = 0;   
                }
                
                if (ifCC[i]){
                    for(long j=0;j<d.fftlen;j++){
                        in[i][j] = d.data[j+k*d.steplen+d.npts*i];
                    }
                    fftwf_execute(p[i]);
                    if(d.ifspecwhitenning){
                        for (long j=0;j<d.nf;j++){
                            absv = sqrtf(out[i][j*d.fstride][0]*out[i][j*d.fstride][0]+out[i][j*d.fstride][1]*out[i][j*d.fstride][1]);
                            absv = max(absv,1e-8f);
                            if(absv!=0){
                                datar[j+d.nf*i] = out[i][j*d.fstride][0]/absv;
                                datai[j+d.nf*i] = out[i][j*d.fstride][1]/absv;
                            }
                        }
                    }
                    else{
                        for(long j=0;j<d.nf;j++){
                            datar[j+d.nf*i] = out[i][j*d.fstride][0];
                            datai[j+d.nf*i] = out[i][j*d.fstride][1];
                        }
                    }
                }
            }
    #ifdef useOMP
    #pragma omp parallel
    #pragma omp for
    #endif
            for(long i=0;i<npairs; i++){
                if(ifCC[d.Pairs[i*2]]&ifCC[d.Pairs[i*2+1]]){
                    for(long j=0;j<d.nf;j++){
                        d.ncfsr[j+i*d.nf] += datar[j+d.Pairs[i*2]*d.nf]*datar[j+d.Pairs[i*2+1]*d.nf] + datai[j+d.Pairs[i*2]*d.nf]*datai[j+d.Pairs[i*2+1]*d.nf];
                        d.ncfsi[j+i*d.nf] += datar[j+d.Pairs[i*2]*d.nf]*datai[j+d.Pairs[i*2+1]*d.nf] - datai[j+d.Pairs[i*2]*d.nf]*datar[j+d.Pairs[i*2+1]*d.nf];
                    }
                    CCnumbers[i] = CCnumbers[i] + 1;
                }
            }
        }
    

    相同之处:均采用傅里叶变换求解
    不同之处:方法二窗口的指定是在傅里叶变换函数包的外面,且其将数据集切分为每步再传入傅里叶变换函数。方法一在傅里叶变换中指定数据窗口大小和每次移动步长,暂时不知道这两种方式是否具有差异。

    展开全文
  • xcorrTD 的结果已针对 MatLAB 的 xcorr 函数进行了验证。 有关频域中的互相关,请参阅 xcorrFD。 语法:[lags,ck,cc,td] = xcorrTD(x,y) 输入: x = 输入信号 1(必须是 Nx1 或 1xN 向量) y = 输入信号 2(必须是 ...
  • 计算互相关函数

    2021-07-16 14:50:07
    In R, I am using ccf or acf to compute the pair-wise cross-correlation function so that I can find out which shift gives me the maximum value. From the looks of it, R gives me a normalized sequence of...

    In R, I am using ccf or acf to compute the pair-wise cross-correlation function so that I can find out which shift gives me the maximum value. From the looks of it, R gives me a normalized sequence of values. Is there something similar in Python's scipy or am I supposed to do it using the fft module? Currently, I am doing it as follows:

    xcorr = lambda x,y : irfft(rfft(x)*rfft(y[::-1]))

    x = numpy.array([0,0,1,1])

    y = numpy.array([1,1,0,0])

    print xcorr(x,y)

    解决方案

    To cross-correlate 1d arrays use numpy.correlate.

    There is also matplotlib.pyplot.xcorr which is based on numpy.correlate.

    See this post on the SciPy mailing list for some links to different implementations.

    Edit: @user333700 added a link to the SciPy ticket for this issue in a comment.

    展开全文
  • 自相关函数和互相关函数的matlab 计算和作图 1. 首先说说自相关和互相关的概念 这个是信号分析里的概念他们分别表示的是两个时间序列之间和同一个时 间序列在任意两个不同时刻的取值之间的相关程度即互相关函数是...
  • 基于云计算的九分量噪声互相关函数计算及其在China Array密集台阵数据的应用.pdf
  • 时间序列分析可以定义为在给定先前值的情况下预测随机过程的未来值。 建模的一个重要部分是决定应该使用多少先行值来预测未来。 自相关函数显示两个系列之间的相关系数... 对于两个过程,还添加了互相关和部分互相关
  • 互相关值计算函数

    2018-04-11 08:44:49
    定义了一个函数用来计算两个序列的互相关值,根据给定的两个序列计算其互相关值并以图形方式输出结果。
  • 1、互相关函数,自相关函数计算和作图1.自相关和互相关的概念。l 互相关函数是描述随机信号x(t),y(t)在任意两个不同时刻t1,t2间的相关程度。l 自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2间的相关程...

    《自相关函数和互相关函数的利用MATLAB计算和作图》由会员分享,可在线阅读,更多相关《自相关函数和互相关函数的利用MATLAB计算和作图(5页珍藏版)》请在人人文库网上搜索。

    1、互相关函数,自相关函数计算和作图1.自相关和互相关的概念。l 互相关函数是描述随机信号x(t),y(t)在任意两个不同时刻t1,t2间的相关程度。l 自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2间的相关程度。互相关函数是在频域内两个信号是否相关的一个判断指标,把两测点之间信号的互谱与各自的自谱联系了起来。它能用来确定输出信号有多大程度来自输入信号,对修正测量中接入噪声源而产生的误差非常有效。-事实上,在图象处理中,自相关和互相关函数的定义如下:设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积;设两个函数分别是f(t)和g(t),则互相关函数定。

    2、义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。2.利用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);便可。3. 实现过程:在Matalb中,求解xcorr的过程事实上是利用Fourier变换中的卷积定理进行的,即R(u)=ifft(fft(f)fft(g),其中表示乘法,注:此公式仅表示形式计算,并非实际计算所用的公。

    3、式。当然也可以直接采用卷积进行计算,但是结果会与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*。

    4、dt,z,r);即在xcorr中不使用scaling。4. 其他相关问题:1) 相关程度与相关函数的取值有什么联系?相关系数只是一个比率,不是等单位量度,无什么单位名称,也不是相关的百分数,一般取小数点后两位来表示。相关系数的正负号只表示相关的方向,绝对值表示相关的程度。因为不是等单位的度量,因而不能说相关系数0.7是0.35两倍,只能说相关系数为0.7的二列变量相关程度比相关系数为0.35的二列变量相关程度更为密切和更高。也不能说相关系数从0.70到0.80与相关系数从0.30到0.40增加的程度一样大。对于相关系数的大小所表示的意义目前在统计学界尚不一致,但通常按下是这样认为的:相关系数 。

    5、相关程度 0.00-0.30 微相关 0.30-0.50实相关 0.50-0.80显著相关 0.80-1.00高度相关-3) 与matlab中相关函数xcorr()与相关度函数corrcoef()的关系:相关度函数:对于一般的矩阵X,执行A=corrcoef(X)后,A中每个值的所在行a和列b,反应的是原矩阵X中相应的第a个列向量和第b个列向量的相似程度(即相关系数)。计算公式是:C(1,2)/SQRT(C(1,1)*C(2,2),其中C表示矩阵f,g的协方差矩阵,假设f和g都是列向量(这两个序列的长度必须一样才能参与运算),则得到的(我们感兴趣的部分)是一个数。以默认的A=corrcoef(。

    6、f,g)为例,输出A是一个二维矩阵(对角元恒为1),我们感兴趣的f和g的相关系数就存放在A(1,2)=A(2,1)上,其值在-1,1之间,1表示最大的正相关,-1表示绝对值最大的负相关l 相关函数xcorr函数是通过不反折的卷积来衡量这两个信号在不同位置的相似程度假设两个序列的长度分别是m和n,则得到的是一个长度为2*max(m,n)-1的序列,也就是说,当m和n不相等的时候,在执行xcorr的时候会先对短的那个序列进行0扩充,使得m与n相等;l 相关度corrcoef函数是通过协方差矩阵来衡量这两个信号在不同局部的相似程度,计算公式是:C(1,2)/SQRT(C(1,1)*C(2,2),其中。

    7、C表示矩阵f,g的协方差矩阵,假设f和g都是列向量(这两个序列的长度必须一样才能参与运算),则得到的(我们感兴趣的部分)是一个数。以默认的A=corrcoef(f,g)为例,输出A是一个二维矩阵(对角元恒为1),我们感兴趣的f和g的相关系数就存放在A(1,2)=A(2,1)上,其值在-1,1之间,1表示最大的正相关(例如x=1;2;3, y=5;7;9),-1表示绝对值最大的负相关(例如x=1;2;3, y=12;7;2)。对于一般的矩阵X,执行A=corrcoef(X)后,A中每个值的所在行a和列b,反应的是原矩阵X中相应的第a个列向量和第b个列向量的相似程度(即相关系数)。4)互相关函数图。

    8、像的横坐标问题以下例子,主要求两个信号的相位差,按照某篇参考资料的说法,t_max对应的值就应该是它们的相位差,但是这个程序中做出的互相关函数的横坐标不是-40到+40,而是0到1200,请问这个横坐标表示的是什么意思呢?n=99;%设定每周期数据采集点数T=6;%采样周期数t=0:2*pi/(n-1):2*T*pi;%采样数y1=4*sin(t);%信号1y2=8*sin(t+pi/6);%信号2,相位差取pi/6Cc=xcorr(y1,y2);%求互相关函数y_max,t_max=max(Cc)%找出Cc的最大值及对应的t_maxsubplot(311); plot(t,y1); grid;subplot(312); plot(t,y2); grid;subplot(313); plot(Cc); grid。

    展开全文
  • 包含两个信号之间的运算,自相关与互相关运算
  • 这个是信号分析里的概念,他们分别表示的是两个时间序列之间和同一个时间序列在任意两个不同时刻的取值之间的相关程度,即互相关函数是描述随机信号x(t),y(t)在任意两个不同时刻t1,t2的取值之间的相关程度,自相关...
  • 由于MATLAB本身自带的相关函数在扩频通信中并不适合,性能欠佳。本程序是我自己编写的求自相关或互相关的MATLAB函数。可直接调用该函数。已通过验证。
  • 使用matlab验证时域和频域计算互相关函数
  • 互相关函数的频域计算

    万次阅读 多人点赞 2018-04-07 14:00:31
    互相关函数的频域计算 1.时域计算 x1(n)与x2(n)的互相关定义如下x1(n)与x2(n)的互相关定义如下x_1(n)与x_2(n)的互相关定义如下 R(τ)=E[x1(m)x2(m+τ)]R...
  • %-----------------------------------------------------------------% exa011007_xcorr.m: for example 1.10.7 and example 1.8.3% to test xcorr.m% 求两个序列的互相关函数,或一个序列的自相关函数;...
  • 互相关应用的方向等,互相关应用的方向等,互相关应用的方向等
  • 自相关函数&互相关函数

    千次阅读 2019-08-15 23:22:45
    这个是信号分析里边的概念。...实函数和,如为能量有限信号,它们之间互相关函数定义为:(注:下角数字,前面的领先) 互相关函数是两信号时间差的函数。 一般 如果和是同一信号,可记为,这...
  • 自相关函数与互相关函数

    万次阅读 2018-07-02 16:49:12
    1、概念 相关函数是描述信号X(s),Y(t)(这两个信号可以是随机的,也可以是确定的)在任意两个不同时刻s、t的取值之间的相关程度。...相关函数分为自相关和互相关。下面一一介绍(1)、自相关函数 自相...
  • 互相关函数,自相关函数计算和作图.doc
  • PAGE / NUMPAGES 自相关函数和互相关函数的matlab计算和作图 1. 首先说说自相关和互相关的概念 这个是信号分析里的概念他们分别表示的是两个时间序列之间和同一个时间序列在任意两个不同时刻的取值之间的相关程度即...
  • 一、功率信号的互相关函数、 二、功率信号的自相关函数
  • 使用fft计算序列的互相关函数

    千次阅读 2020-06-11 18:15:03
    2. 关于自相关函数和互相关函数的Matlab计算。 3. 关于小m序列和Gold序列的一些基本概念 一、学工的如果不知道如何使用DFT来求线性卷积和这种思想的重要性,他就白学了(小波老师原话) 要求:t[n]=f(n)*g(n),...
  • 自相关函数,互相关函数

    万次阅读 2016-11-15 15:20:49
    1. 首先说说自相关和互相关的概念。  这个是信号分析里的概念,他们分别表示的是两个时间序列之间和同一个时间序列在任意两个不同时刻的取值之间的相关程度,即互相关 函数是描述随机信号x(t),y(t)在任意两个...
  • 互相关函数python实现的三种方法

    千次阅读 2022-01-20 18:53:47
    用三种不同方法计算信号的互相关函数,并得到了几乎一致的结果。为了更好的理解整个过程,可在CSDN免费下载源码
  • 本程序首先产生了一个信号,然后对其进行延时,之后计算他们之间的互相关函数,找出其中的最大点,它的下标减去信号长度,即为时延。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,341
精华内容 16,536
关键字:

互相关函数的计算