利用N级移位寄存器产生M序列

1.1问题描述

编程产生一组伪随机信号(M序列),它的幅值和长度可随意调整,将产生的M序列信号存入数据文件。

2.2 方法思路

伪随机信号PRBS亦称M序列可利用下图3-3-9所示的n级移位寄存器来产生。
在这里插入图片描述
本次采用的是7级移位寄存器,根据下表3-3-3可知N1取4,设采样时间为1,M序列的周期为2^7-1=127。
在这里插入图片描述
根据以下图3-3-10所示的流程图,即可产生M序列。
在这里插入图片描述

3.3 实验结果

在这里插入图片描述
在这里插入图片描述

2.4 实验代码(Matlab)

%%%采用伪随机信号发生器生成M序列
%%%状态递推公式为:Y(k)=Y(k-n)模二和Y(k-N1)
%%%本次选取7级移位寄存器即n=7,由课本上表3-3-3可知此时N1取4时,可以产生周期为2^7-1=127的M序列(采样时刻为1)
y=[1 1 0 1 1 0 1];%%%初始化7级移位寄存器,保证其初值不全为0
n=length(y);%%%获得移位寄存器的级数
T=2^n-1;%%%M序列的周期
%%%%%采用递推公式生成M序列
for i = 1:1:T
    Y(i)=y(7);%%%第n级的输出即是M序列的两种状态
    M(i)=mod(y(7)+y(4),2);%第n级与第N1级模二加结果,此时分别为74
    %%%%移位寄存器工作原理%%%
    y(7)=y(6);
    y(6)=y(5);
    y(5)=y(4);
    y(4)=y(3);
    y(3)=y(2);
    y(2)=y(1);
    y(1)= M(i)
end
figure
stairs(Y,'r'); %画出周期为127的M序列
title('周期为127的M序列');
ylim([-0.2 1.2])
%%%%%%利用M序列生成可以用于实际对象的伪随机信号X%%%%%%
a=1;%随机信号的幅值
for i=1:1:T
    if Y(i)==1
        X(i)=a;
    else
        X(i)=-a;
    end
end
figure
stairs(X,'b'); %画出伪随机信号
title('幅值为1的伪随机信号');
ylim([-1.2 1.2])
xlswrite('D:\桌面\M序列.xlsx',X','sheet1');

猜你喜欢

转载自blog.csdn.net/qq_45063357/article/details/121853364