在通信系统中,捕获、同步等过程都会涉及到相关处理,而相关又分为时域相关和频域相关,这里主要对时域相关的处理进行简单介绍。
时域相关指的是本地码(PN码,M码等具有良好的自相关性的码)和接受到的信号进行相关处理,通过相关值来判断相关性的强弱,进而确定相关位置(即获得捕获位置、同步位置等)。时域相关计算本质就是本地码和输入信号乘积求和(复数信号是信号和本地码的共轭相乘求和)算出相关值。
相关计算和卷积计算机理比较相似,所以时域相关处理也可用时域卷积处理近似表示。根据这个结论,我们可以用MATLAB提供的三种函数来进行时域相关处理:xcorr、conv和filter。
xcorr:MATLAB自带的求互相关的函数;
conv:MATLAB自带的求卷积的函数,时域相关运算和卷积运算相似,所以用conv也可以求相关位置;
filter:MATLAB自带的滤波器函数,filter函数可以生成FIR滤波器,而FIR滤波器原理就是进行卷积运算的,只是注意卷积核作为FIR滤波器的系数即可。
这篇文章先对xcorr求相关进行讲解。
互相关函数:
互相关计算步骤:
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)
2、输入数据data_ca超前cacoede 0个位置,LagTime = 0时
[acor,lag] = xcorr(cacoede,data_ca);%数据y超前x数据LagTime,y滞后lag时间后和x数据对齐
plot(lag,acor)
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)
通过实验仿真可以得出,利用xcorr求输入数据和本地码相关,相关位置是正确的。