在通信系统中,捕获、同步等过程都会涉及到相关处理,而相关又分为时域相关和频域相关,这里主要对时域相关的处理进行简单介绍。

时域相关指的是本地码(PN码,M码等具有良好的自相关性的码)和接受到的信号进行相关处理,通过相关值来判断相关性的强弱,进而确定相关位置(即获得捕获位置、同步位置等)。时域相关计算本质就是本地码和输入信号乘积求和(复数信号是信号和本地码的共轭相乘求和)算出相关值。

相关计算和卷积计算机理比较相似,所以时域相关处理也可用时域卷积处理近似表示。根据这个结论,我们可以用MATLAB提供的三种函数来进行时域相关处理:xcorr、conv和filter。

xcorr:MATLAB自带的求互相关的函数;

conv:MATLAB自带的求卷积的函数,时域相关运算和卷积运算相似,所以用conv也可以求相关位置;

filter:MATLAB自带的滤波器函数,filter函数可以生成FIR滤波器,而FIR滤波器原理就是进行卷积运算的,只是注意卷积核作为FIR滤波器的系数即可。

这篇文章先对xcorr求相关进行讲解。

互相关函数:

时滞相关性 python 时域相关性_数据

互相关计算步骤:

1、平移相关核y(t)的位置到τ,使它位于x(t)上方;

2、已x(t)的值作为权重和对应y(t)相乘;

3、讲上述对应位置乘积相加,求得的结果就是y(t)平移τ位置后的相关值;(如果刚好对齐的话,τ=0)

MATLAB代码解释:

1、生成1023bit PN码

    %%%%%%%%%% 生成1023bit PN码 %%%%%%%%%%
    initial_A = [0 1 0 0 1 0 1 1 1 1]; 
    initial_B = [0 0 0 1 0 0 1 0 0 1];
    for i=1:1023
        ......
    end
  cacoede = caCode; %1023bit PN码

2、生成数据,数据格式为:PN码+随机数

data_ca=[cacoede data];

3、参数LagTime 设置data_ca和本地PN码偏移位置

LagTime = -3;    % Arbitrary Integer if(LagTime > 0 ):y lag x at LagTime;  else if(LagTime = 0):y align x;

仿真结果:

1、输入数据data_ca超前cacoede 3个位置,LagTime = -3时

[acor,lag] = xcorr([zeros(1,abs(LagTime)),cacoede],data_ca);%数据y超前x数据LagTime,y滞后lag时间后和x数据对齐

plot(lag,acor)

时滞相关性 python 时域相关性_时滞相关性 python_02

2、输入数据data_ca超前cacoede 0个位置,LagTime = 0时

[acor,lag] = xcorr(cacoede,data_ca);%数据y超前x数据LagTime,y滞后lag时间后和x数据对齐

plot(lag,acor)

时滞相关性 python 时域相关性_数据_03

3、输入数据data_ca滞后cacoede 3个位置,LagTime = 3时

[acor,lag] = xcorr(cacoede,[zeros(1,LagTime),data_ca]);%数据y超前x数据LagTime,y滞后lag时间后和x数据对齐

plot(lag,acor)

时滞相关性 python 时域相关性_数据_04

通过实验仿真可以得出,利用xcorr求输入数据和本地码相关,相关位置是正确的。