我是靠谱客的博主 含蓄小刺猬,最近开发中收集的这篇文章主要介绍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

最后

以上就是含蓄小刺猬为你收集整理的matlab生成m序列的方法的全部内容,希望文章能够帮你解决matlab生成m序列的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部