PN序列自相关特性分析

PN序列就是伪随机序列(Pseudo—Noise Code),所谓的伪就是说这个序列随机性很强,统计特性很好但并不是真正的随机数,体现PN序列具有周期性。PN序列是由通过线性反馈移位寄存器实现的,移位寄存器的级数决定了其周期性的长短。

Matlab 代码:
参考:https://wenku.baidu.com/view/e44cdf6227d3240c8447ef44.html
https://ww2.mathworks.cn/help/comm/ref/commsrc.pn.html

clear all; close all; clc;
SampleTime=1/8;
sim('pn');%调用了simulink生成的模块
len=length(pn13);
N=7;%周期
N_sample=64;
gt=ones(1,N_sample);%每个码元对应的载波,即脉冲成型

pn1=pn13';
pntemp1=sigexpand(pn1,N_sample);
pnx1=conv(pntemp1,gt);


pn2=pn15';
pntemp2=sigexpand(pn2,N_sample);%码元扩展
pnx2=conv(pntemp2,gt);%码元成型

spn=conv(1-2*pn1,1-2*pn1(N:-1:1))/N;%自相关函数
dpn=conv(1-2*pn1,1-2*pn2(N:-1:1))/N;%互相关函数


t=0:1/N_sample:len-1/N_sample;
figure(1);
subplot(4,1,1)
plot(t,pnx1(1:length(t)));
axis([0 61 -0.5 1.5]);
title('PN13波形');
subplot(4,1,2);
plot(t,pnx2(1:length(t)));
axis([0 61 -0.5 1.5]);
title('PN15波形');
subplot(4,1,3);
stem(1:61,spn(15:75));
axis([0 61 -1.5 1.5]);
title('PN13自相关波形');
subplot(4,1,4);
stem(1:61,dpn(15:75));
axis([0 61 -1.5 1.5]);
title('PN(N=3)互相关波形');

simulink的使用:
新建了一个simulink文件pn.mdl,从Library Browser添加PN序列发生器,示波器,以及导出数据的ToWorkspace。连线完成下图的连线。
PN序列自相关特性分析_第1张图片

关于PN序列发生器的配置:
有三个地方需要注意:
1序列的生成多项式
2寄存器的初始值(位数表示寄存器的个数,同时决定了周期长度,比如下面:周期=2^3-1=7)
3采样时间间隔(体现在示波器中能看到的序列长度)
PN序列自相关特性分析_第2张图片

To Workspace的配置:
设置的变量名可以直接在代码中使用
输出数据以二维数组的形式输出,也可以选其他格式
PN序列自相关特性分析_第3张图片

运行结果分析:
PN序列自相关特性分析_第4张图片

你可能感兴趣的:(matlab)