matlab生成m序列的方法

引言

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

    m序列的周期等于 2 N − 1 2^N-1 2N−1,N是m序列的级数,m序列由N级线性反馈移存器产生。
    m序列具有均衡性,序列中“1”和“0”的数目基本相等,“1”的个数比“0”多1。
    m序列的循环自相关函数是双值电平。
    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序列。

注意:

    先要利用 primpoly(7,‘all’) 命令生成对应的本原多项式(可在命令窗生成),选择其中一个多项式将其系数矩阵添加到函数m_generate([0 0 0 1 1 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值