matlab生成m序列的方法

matlab生成m序列的方法


文章目录

  • matlab生成m序列的方法
    • 1.m序列基本知识点
    • 2.matlab产生m序列
      • 2.1根据产生原理编写生成函数
        • 2.1.1生成m序列的函数:
        • 2.1.2调用已编写函数生成m序列
      • 2.2利用 i d i n p u t idinput idinput函数

引言

m序列属于伪随机序列的一种。在通信领域应用较为广泛。由于其具有很好的伪噪声特性,因此在保密通信中,可以将其应用在高可靠性的保密通道中。另外,雷达领域也有广泛应用,伪随机相位编码脉冲/连续波雷达中用到的调制信号正是m序列。

1.m序列基本知识点

  1. m序列的周期等于 2 N − 1 2^N-1 2N1,N是m序列的级数,m序列由N级线性反馈移存器产生。
  2. m序列具有均衡性,序列中“1”和“0”的数目基本相等,“1”的个数比“0”多1。
  3. m序列的循环自相关函数是双值电平。
  4. m序列具有游程分布的规律。

2.matlab产生m序列

具体产生原理可参考相关资料(通信原理第七版,樊昌信、曹丽娜),这里只介绍matlab实现方法。

2.1根据产生原理编写生成函数

2.1.1生成m序列的函数:

function[mg]=m_generate(f)
n=length(f);%移位寄存器长度
N=2^n-1;%伪随机码的周期
register=[zeros(1,n-1) 1];
for i=1:N
    newregister(1)=mod(sum(f.*register),2);
    for j=2:n
        newregister(j)=register(j-1);
    end
    register=newregister;
    mg(i)=register(n);
end

2.1.2调用已编写函数生成m序列

%***************************************
%             伪随机序列产生
%***************************************
% 产生伪随机序列,7阶m序列,周期为127
% 利用primpoly(7,'all')指令,产生本原多项式:D^7+D^6+D^5+D^4+1,并调用编写的m_generate()函数生成伪随机序列
mg=m_generate([0 0 0 1 1 1 1 ]);

得到的变量"mg"就是周期为127的m序列。

注意:

  1. 先要利用 primpoly(7,‘all’) 命令生成对应的本原多项式(可在命令窗生成),选择其中一个多项式将其系数矩阵添加到函数m_generate([0 0 0 1 1 1 1 ]);(如黄色标记的矩阵)。

matlab生成m序列的方法_第1张图片

  1. 生成其他阶数的m序列则只需要将 primpoly(7,‘all’) 命令中的数字‘7’更换到需要的阶数即可。

2.2利用 i d i n p u t idinput idinput函数

matlab中的 i d i n p u t idinput idinput函数可以成成多种不同的序列。也可以用来产生m序列:

Order_number=7;%m序列的阶数等于7
mg=idinput((2^(Order_number)-1),'prbs')';%生成m序列

这种产生方法就很简单了,改变阶数就可以得到不同周期长度的m序列。

更多关于 i d i n p u t idinput idinput函数的使用可以到matlab中文官网查阅

https://ww2.mathworks.cn/help/ident/ref/idinput.html

你可能感兴趣的:(matlab生成m序列的方法)