基于MATLAB的M序列产生

合集下载

基于matlab的m序列的产生和特性分析

基于matlab的m序列的产生和特性分析

基于matlab的m序列的产生和特性分析作者:耿亚南来源:《中国新通信》 2017年第15期【摘要】 m 序列是一种重要的伪随机序列。

本文借助MATLAB 平台,详细介绍了m 序列的产生原理,并仿真了由移位寄存器产生的m 序列,同时研究了m 序列的自相关函数并得到了m 序列自相关函数的图像。

仿真结果验证了该方法的正确性和可行性。

【关键字】 m 序列自相关函数 MATLAB一、引言m 序列是最长线性移位寄存器序列的简称,有着良好的自相关性,易于产生和复制,是目前广泛应用的一种伪随机序列。

其在通信领域有着广泛的应用,如扩频通信,卫星通信的码分多址,数字数据中的加密、加扰、同步、误码率测量等领域。

近几十年来,运用m 序列测量房间声学系统脉冲响应的技术研究也受到了人们的关注。

m 序列法测量技术有两大优点其一是较强的抗噪声性能,其二是运算速度快、效率高。

二、m 序列的产生2.1 m 序列的产生原理m 序列是由带线性反馈的移位寄存器产生的。

由n 级串联的移位寄存器和反馈逻辑线路可组成动态移位寄存器,如果反馈逻辑线路只由模2 和构成,则称为线性反馈移位寄存器。

m 序列的产生框图如图1 所示。

图中C0、C1…Cn 均为反馈线,其中C0= Cn=1,表示反馈连结。

因为m 序列是由循环序列发生器产生的,因此C0和Cn 肯定为1,即参与反馈。

而反馈系数C1、C2…Cn - 1若为1,参与反馈,若为0,则表示断开反馈线,即开路、无反馈连线。

2.2 MATLAB 仿真MATLAB 产生m 序列的部分程序:function[mseq]=m_sequence(fbconnection)n=length(fbconnection);N=2^n-1;register=[zeros(1,n-1) 1];mseq(1)=register(n);for i=2:Nnewregister(1)=mod(sum(fbconnection.*register),2);for j=2:nnewregister(j)=register(j-1);end;三、m 序列的自相关函数3.1 自相关函数自相关是指m 序列与逐位移位后的序列相关性的一种度量。

基于Matlab的m序列生成及性能仿真

基于Matlab的m序列生成及性能仿真
制转换为8进制
PN_mod8=reshape(PN—mod8,1,512); end
location=1; k=1: for i=1:length(reg_a11)
if reg__test==reg_all(i,:) location(k)=i; k=k+1:
%寻找初始状态,以验证其周期
end
end
合伪随机序列的基本性质,可以满足扩频序列的设计需求。
基于以上m序列移位寄存器结构,可在Matlab中用M语言编程
产生113序列的程序代码:
reg=[1 0 1 1 1 0 1 0 1 1 0 1];
%从高位到低位
re。gLtest=reg;
eoeff=[1 0 0 0 0 0 1 0 1 0 0 1 11;%高位到低位
%计算In序列自相关性
subplot(2,1,1);
plot(j,temp/length(n)); tide(7自相关性,);
axis([一1000 1000—0.1 1.2]);
酣d on; 同理可计算m序列互相关性程序。
运行程序后可返回D1序列相关函数如图2所示。
由图2可以看出,m序列具有良好的自相关特性和互相关性,符
关和互相关特性【”。
1.m序列简介
m序列是最长线性移位寄存序列的简称.是由带线性反馈的移存
器产生的周期最长的序列。它是周期为N=2r_1的线性伪随机序列,r
是移位寄存器阶数。 m序列的性质有闭:
a)均衡性,即在m序列的一个周期中,…1’和…0’的数目基本相等。
b)长度为k的游程数目占游程总数的24.其中“+”游程和“一”游程
i=l;
for k=1:(2^length(reg))
%计算一个周期的rfl序列输出

matlab生成m序列的方法

matlab生成m序列的方法

1 matlab生成m序列的方法
1 matlab生成m序列的方法
1.1 m序列基本知识点
1.2 matlab产生m序列
1.2.1 根据产生原理编写生成函数
1.2.1.1 生成m序列的函数:
1.2.1.2 调用已编写函数生成m序列
1.2.2 利用$idinput$函数
引言
m序列属于伪随机序列的一种。

在通信领域应用较为广泛。

由于其具有很好的伪噪声特性,因此在保密通信中,可以将其应用在高可靠性的保密通道中。

另外,雷达领域也有广泛应用,伪随机相位编码脉冲/连续波雷达中用到的调制信号正是m 序列。

1.1 m序列基本知识点
1. m序列的周期等于,N是m序列的级数,m序列由N级线性反馈移存
器产生。

2. m序列具有均衡性,序列中“1”和“0”的数目基本相等,“1”的个数比“0”多1。

3. m序列的循环自相关函数是双值电平。

4. m序列具有游程分布的规律。

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

2. 生成其他阶数的m序列则只需要将 primpoly(7,'all') 命令中的数字‘7’更换到
函数
函数可以成成多种不同的序列。

也可以用来产生m序列:
序列的阶数等于7
Order_number)-1),'prbs')';%生成m序列。

基于MATLAB的m序列仿真

基于MATLAB的m序列仿真

3.1 系统结构功能设计 ......................................................................................... 9 3.2 GUI 界面设计 ................................................................................................. 9 第四章 系统调试结果分析 ......................................... 11
1.2
系统设计流程图
本文通过软件 Matlab 编写程序,从而在 GUI 环境下看到 m 序列的产生、m 序列的自 相关和互相关函数图形,其系统设计流程图如图 1.1 所示: 开始
用 Matlab 编写程序产生两个 m 序列
对 m 序列进行自相关特性分析
对 m 序列进行互相关特性分析
用 Matlab GUI 显示仿真结果
Ns (2n 1) / n
其中, ( x) 为欧拉函数,其值小于等于 x ,并与 x 互质的正整数的个数(包括 1 在内)。例如对于 4 级移位寄存器,则小于 24 1 15 并与 15 互质的数为 1、2、4、 7、8、11、13、14,共 8 个,所以 (15) 8, Ns 8/ 4 2 ,所以 4 级移位寄存器最多能 产生的 m 序列数为 2。 总之,移位寄存器的反馈系数决定是否产生 m 序列,起始状态决定序列的起始 点,不同的反馈系数产生不同的码序列。 在 Matlab 的 GUI 环境中,程序代码如下:
第一章
1.1 设计内容及要求
1.1.1 设计内容

m序列产生

m序列产生

m序列产生试验目的:1.熟悉m序列,进一步了解m序列原理。

2.学会m序列的产生。

实验内容:1.编写MATLAB程序仿真程序;2.对程序做修改,进行仿真;3.分析仿真中观察的数据,撰写实验报告。

试验代码clearclcG=63;%码长%使用生成多项式(45)8=(100101)2产生第一个m序列%(n)8代表八进制sd1=[0 0 0 0 1];%寄存器初始状态PN1=[];%第一个序列for j=1:GPN1=[PN1 sd1(5)];if sd1(1)==sd1(3)temp1=0;else temp1=1;endsd1(1)=sd1(2);sd1(2)=sd1(3);sd1(3)=sd1(4);sd1(4)=sd1(5);sd1(5)=temp1;endsubplot(3,1,1)stem(PN1)title('使用生成多项式(45)8=(100101)2产生第一个m序列')%使用生成多项市(67)8=(110111)2产生第二个m序列sd2=[0 0 0 0 1]%寄存器初始状态PN2=[];for j=1:GPN2=[PN2 sd2(5)];if sd2(1)==sd2(2)temp1=0;else temp1=1;endif sd2(4)==temp1temp2=0;elsetemp2=1;endif sd2(5)==temp2temp3=0;else temp3=1;endsd1(1)=sd1(2);sd1(2)=sd1(3);sd1(3)=sd1(4);sd1(4)=sd1(5);sd1(5)=temp3;endsubplot(3,1,2)stem(PN2)title('使用生成多项式(67)8=(110111)2产生第二个m序列')%使用生成多项市(75)8=(111101)2产生第三个m序列sd3=[0 0 0 0 1]%寄存器初始状态PN3=[];for j=1:GPN3=[PN3 sd3(5)];if sd3(1)==sd3(2)temp1=0;else temp1=1;endif sd3(3)==temp1temp2=0;elsetemp2=1;endif sd3(4)==temp2temp3=0;else temp3=1;endsd3(1)=sd3(2);sd3(2)=sd3(3);sd3(3)=sd3(4);sd3(4)=sd3(5);sd3(5)=temp3;endsubplot(3,1,3)stem(PN3)title('使用生成多项式(75)8=(111101)2产生第三个m序列')。

基于Matlab产生m序列

基于Matlab产生m序列

目录前言 (1)第一章设计任务 (2)1.2设计内容 (2)1.2设计要求 (2)1.3系统框图 (2)第二章m序列的分析 (4)2.1m序列的含义 (4)2.2m序列产生的原理 (5)2.2m序列的性质 (6)2.3自相关特性 (7)第三章m序列的设计 (8)3.1特征多项式确定 (8)3.2本原多项式的确定 (9)3.3m序列的发生 (10)第四章程序调试及结果分析 (11)4.1m序列的仿真结果及分析 (12)4.2该设计的序列相关性仿真结果及分析 (13)结论 (14)参考文献 (15)附录:程序代码 (16)前言扩频通信因其具有抗干扰、抗多径衰落、抗侦察等优点在通信领域中得到广泛应用。

扩频序列的设计和选择是扩频通信的关键技术,扩频序列性能的优劣在很大程度上决定了通信系统的多址干扰和符号间干扰的大小,从而直接影响到系统的性能。

因此,深入研究扩频序列的性质,构造设计具有良好相关性的扩频序列,来满足扩频系统的要求,是直接序列扩频系统的核心课题。

白噪声是一种随机过程,它有极其优良的相关特性。

但至今无法实现白噪声的放大、调制、检测、同步及控制等,而只能用类似于白噪声统计特性的伪随机序列来逼近它,并作为扩频系统的扩频码。

常见的伪随机序列有m 序列、GOLD 序列、M 序列、Walsh 序列等。

m 序列是目前研究最为彻底的伪随机序列,m 序列容易产生,有优良的自相关和互相关特性。

序列是伪随机序列的一种情况。

他可以在很多领域中都有重要应用。

由n级移位寄存器所能产生的周期最长的序列。

这种序列必须由非线性移位寄存器产生,并且周期为2n(n为移位寄存器的级数)。

通过对伪随机码中常用的m序列的结构和性质进行了分析,本文给出了基于MATLAB平台的m序列生成算法及代码伪随机序列分析。

第一章 设计任务1.2 设计内容掌握PN 序列的相关知识,掌握m 序列的产生原理及其在matlab 中的产生方法,对特定长度的m 序列,分析其性质,及其用来构造其它序列的方法;研究伪随机序列在跳频通信中的应用方法。

直接扩频Matlab仿真实验报告m序列

直接扩频Matlab仿真实验报告m序列

西 安 邮 电 大 学实验名称:基于Matlab 直接序列扩频系统性能仿真一、 实验目的通过仿真,进一步掌握m 序列产生方法及其性能,重点掌握直接序列扩频通信系统原理及性能。

二、 实验环境Win10 Matlab2015b三、 实验内容● 产生n=7时203对应的m 序列,并给出其NRZ 波形的自相关函数;● 选用相位差16个码片的两条序列兼做地址和扩频码,构造码分系统,仿真其通信原理;●仿真AWGN 和单频干扰下系统的BER 性能。

四、 实验原理扩频通信的可行性是从香农公式引申而来2log (1+S/N)C W其中,C 为系统信道容量(bit/s );W 为系统信道带宽;N 为噪声功率S 为信号功率。

由上式可以看出,可以从两种途径提高信道容量C ,即加大带宽W 或提高信噪比S/N 。

也就是说当信道容量C 一定时,信道带宽W 和信噪比S/N 是可以互换的,增加带宽可以降低对信噪比的要求,可以使有用信号的功率接近甚至湮没在噪声功率之下。

扩频通信就是通过增加带宽来换取较低的信噪比,这就是扩频通信的基本思想和理论依据。

当信噪比无法提高时,可以加大带宽,达到提高信道容量的目的。

直接序列扩频的原理是,在发射端把有用信号与伪随机序列相乘(或者模二加),使信号的频谱展宽到一个很宽的范围,然后用扩展后的序列去调制载波。

在接收端,把接收到的信号用相同的伪随机序列相乘,有用信号与伪随机码相关,相乘后恢复为扩频前的信号。

输入的数据信息为d(t)(设基带带宽为B 1),由伪随机编码(如m 序列)调制成基带带宽为B 2的宽带信号,由于扩频信号带宽大于数据信号带宽,所以信号扩展的带宽由伪随机码控制,而与数据信号无关。

经扩频调制的信号再经射频调制后即可发送。

直扩系统的原理框图接收端收到发送来的信号,经混频得到中频信号后,首先通过同步电路捕捉并跟踪发端伪码的准确相位,由此产生与发端伪码相位完全一致的伪随机码作为扩频解扩的本地扩频码,再与中频信号进行相关解扩,恢复出扩频前的窄带信号,而在解扩处理中,干扰和噪声与伪随机码不相关故被扩展,通过滤波使之受到抑制,这样就可在较高的解扩输出信噪比条件下进行信息解调解码,最终获得信息数据。

基于MATLAB的一种m序列设计与实现

基于MATLAB的一种m序列设计与实现

i性进行验证,对工程技术人员有很大的参考价值。
关键词m序列MATLAB相关性平衡性
1 引言
扩频技术在导航、通信、测控等领域都得到广泛 应用,扩频系统的抗干扰、保密、多址、捕获与跟踪等 都与扩频码的设计密切相关,因此扩频码的生成和 性能评估是扩频系统的关键核心技术,决定了系统
的性能甚至成败。扩频系统对扩频序列的要求是:① 尖锐的自相关特性;②尽可能小的互相关值;③足 够多的序列数;④序列平衡性好;⑤工程上易实现。
technicians.
Key words m sequence,MATLAB,correlation,equilibrium
安德鲁喜获德国iCE动车组长期合同
,7康普公司全资子公司暨全球通信系统及设备领域领袖企业安德鲁无线通信公司,近日成功斩获一项德国ICE动 车组长期合同,将为其提供更先进的无线覆盖通信系统。
N=2^n一1:
register=[zeros(1,n一1)1];%初始状态 mseqfunc l(1)=register(n); %第一个输出码元
for ii=2:N
newregister(1)=mod(sum(fbeonneetion. 水register),2);
for ij=2:n, newregister(ij)=register(iji一1);
朋汲孔A 8的
一种m

王雪
(北京电子职业技术学院北京100016)

h…’‘~‘…r 11一…,^一^’…‘1…÷…H‘…h●'-……,……’。‘^n…‘~j●J一…、……_~一一…,……
}摘要扩频码设计是扩频系统的关键技术,利用计算机实现伪随机码的
;之路。本文基于MATLAB平台编制了一种m序列生成及相关性评估程序
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

13
参考资料
[1]肖国镇,梁传甲.伪随机序列及其应用[M].北京:国防工业出版社.1985 [2]林可祥,汪一飞.伪随机码的原理与应用[M].北京:人民邮电出版社.1998. [3]吴先用, 邹学玉.一种 m 序列伪码发生器的产生方法[J].西安:西安电子科技 大学出版社.2003
14
附录
clear; reg1=ones(1,7); coeff1=[1 0 0 0 0 1 1]; N=2^length(reg1)-1; %产生 m 序列 for k=1:N a_n=mod(sum(reg1.*coeff1(1:length(coeff1)-1)),2); reg1=[reg1(2:length(reg1)),a_n]; out1(k)=reg1(1); end reg2=ones(1,7); coeff2=[1 10 0 1 1 1]; N=2^length(reg2)-1; for k=1:N a_n=mod(sum(reg2.*coeff2(1:length(coeff2)-1)),2); 馈 reg2=[reg2(2:length(reg2)),a_n]; out2(k)=reg2(1); 值输出 end %产生 gold 序列 gold=mod(out1+out2,2); c=1:N; figure(1) [b1,t1]=stairs(c,out1); subplot(2,1,1);plot(b1,t1); axis([0 130 -0.1 1.1]);title('第一个 m 序列'); [b2,t2]=stairs(c,out2); subplot(2,1,2);plot(b2,t2);
5.2 实验的调试与运行结果
程序中把移位寄存器的初始值定义全为 1,抽头系数定义为[1000011]和
8
[1100111],根据公式 m 序列的长度=2n-1,可知道所得的两个 m 序列的长度都为 63,所利用的移位寄存器为 6 个。代码如下: reg1=ones(1,6); coeff1=[1 0 0 0 0 reg2=ones(1,7); coeff2=[1 0 0 1 1 1 1]; 1 1]; %寄存器初始状态 %设置系数 %寄存器初始状态 %设置系数
-------表达式 3.5 从 m 序列的自相关系数可以看出 m 序列是一个狭义伪随机码。
图 3.2 m 序列信号的自相关函数
3.3 生成 m 序列的模块
5
根据 m 序列的生成原理图,如图 3.1 所示,由图可知 m 序列是多级移位 寄存器通过线性反馈再进行模二相加产生的,最后一位一位输出观察其波形 图。程序中使用的代码如下:
互相关性: 第一个 m 序列的函数与第二个 m 序列函数的移位相乘进行积分运 算。代码如下:
10
for j=0:N-1 R(j+1)=sum(out1.*[out2(1+j:N),out2(1:j)]);
图 5.4 m 序列自相关性仿真图
11
图 5.5 两 m 序列的互相关性仿真图
5.3 错误排除
r
当 r 为奇数时, gold 序列中约有 50%的码序列归一化相关函数值为-1/p。当 r 为偶数但又不是 4 的倍数是,约有 75%的码序列归一化互相关函数值为 -1/p。 Gold 序列是 R.Gold 于 1967 年提出来的,它由两个 m 序列按下述方法 演变而来的: 把 2 个码长相同的 m 序列移位并进行模 2 加,如果相加的两个 m 序列是一对优选对,则相加的结果为一个 Gold 序列。 设有一对周期为 N=2r-1 的 m 序列优选对{a} , {b} ,以其中任意一个序 列为基准序列,如{a} ,对另一个序列{b}进行移位 i 次,得到{b}的移 位序列 {bi} , 然后与序列 {a} 进行模二加得到一个新的周期为 N 的序列 {c} , 则称新序列{c}为 Gold 序列,既 {ci}={a}+{b} i=0,1,2,....,N
A ◇
图 3.1 n 级线性移位寄存器 图中 Ci 表示反馈线的两种可能连接方式, Ci=1 表示连线接通,第 n-i 级输出加入反馈中;Ci=0 表示连线断开,第 n-i 级输出未参加反馈。 因此,一般形式的线性反馈逻辑表达式为
------表达式 3.1
将等式左边的 an 移至右边,并将 an=C0an(C0=1)带入上式,则上式可以 写成
图 2.1 Simulink 实现 m 序列 Simulink 是 MATLAB 最重要的组件之一, 它提供了一个动态系统建模, 仿 真和综合分析的集成环境。 在此环境中无需大量书写程序,而只需通过简单直观 的鼠标操作,就可构造出复杂的系统。Simulink 具有适应性广,结构及流程清晰 及仿真精细等优点,基于以上优点,Simulink 已被广泛的运用到控制理论和数字 信号处理的复杂仿真和设计。 通过比较方案一和方案二,发现方案一的有点具有通用性而方案二利用 MATLAB 的 Simulink 直接搭建模块,在移位寄存器较少的情况下利用此方法比 较简单, 可是当移位寄存器的个数增多时, 要搭建那么多的模块就显的很繁琐了, 缺乏通用性,因此本次实验选择方案一。
第四章 m 序列构造其他序列
6
Gold 序列具有三值互相关函数,其值为:
1 1 1 t (r ), , [t (r ) 2] p p p
(式 2.10)
这里,
1 2 0.5( r 1) , r为奇数 p 2 1, t (r ) (式 2.11) 0 .5 ( r 2 ) ,r为偶数但不是 4的倍数 1 2
4.1 Gold 序列的产生方框图
产生 gold 序列的程序代码如下: gold=mod(out1+out2,2);
第五章 程序调试及运行结果
5.1 仿真设计

确认程序无 误

设置仿真参数
运行,调试及数据分析
生成仿真图形
是否达到要 求


结束
图 5.1
实验仿真流程图
3.2 m 序列的基本性质
(1)均衡性。在 m 序列一个周期中‘1’的个数比‘0’要多 1 位,这表明
4
序列平均值很小。 (2)m 序列与其移位后的序列模 2 相加,所得的序列还是 m 序列,只是相 位不同而已。例如:1110100 与向又移 3 位的序列 1001110 相对应模二相加 后的序列为 0111010,相当于原序列向右移一位后的序列,仍为 m 序列。 (3)m 序列发生器中移位寄存器的各种状态,除全 0 状态外,其他状态只 在 m 序列中出现一次。 (4)m 序列发生器中,并不是任何抽头组合都能产生 m 序列。理论分析指 出,产生的 m 序列数由下式决定: --------表达式 3.4 其中φ(X)为欧拉数。例如 5 级移位寄存器产生 31 位 m 序列只有 6 个。 (5)m 序列具有良好的自相关性,其自相关系数:
15
%寄存器初始状态 %设置系数
%寄存器初始状态 %设置系数
%移位,反
%反馈 %取第一个
axis([0 130 -0.1 1.1]);title('第二个 m 序列'); figure(2) [b3,t3]=stairs(c,gold); plot(b3,t3); axis([0 130 -0.1 1.1]);title('gold 序列') out1=2*out1-1; out2=2*out2-1; %自相关函数 for j=0:N-1 rho(j+1)=sum(out1.*[out1(1+j:N),out1(1:j)])/N; end j=-N+1:N-1; rho=[fliplr(rho(2:N)),rho]; figure(3) plot(j,rho); axis([-10 10 -0.1 1.2]);title('第一个 m 序列的自相关函数') %互相关函数 for j=0:N-1 R(j+1)=sum(out1.*[out2(1+j:N),out2(1:j)]); end j=-N+1:N-1; R=[fliplr(R(2:N)),R]; figure(4) plot(j,R); axis([-N N -20 20]);title('两个 m 序列的互相关函数'); %变为双极性序列
-------表达式 3.2
定义一个与上式相对应的多项式
--------表达式 3.3
其中 x 的幂次表示元素的相应位置。 该式为线性反馈移位寄存器的特征
3
多项式,特征多项式与输出序列的周期有密切关系。当 F(x)满足下列三个条 件时,就一定能产生 m 序列: (1)F(x)是不可约的,即不能再分解多项式; (2)F(x)可整除 xn+1,这里 p=2n+1; (3)F(x)不能整除 xn+1,这里 q<q. 满足上述条件的多项式称为本原多项式,这样产生 m 序列的充要条件 就变成了如何寻找本原多项式。
N=2^length(reg1)-1; for k=1:N a_n=mod(sum(reg1.*coeff1(1:length(coeff1)-1)),2); reg1=[reg1(2:length(reg1)),a_n]; out1(k)=reg1(1); end
其中 N 为 m 序列的长度,值为(26-1) 。由程序已定义了移位寄存器的初 始状态和抽头系数,在此基础上进行反馈,后进行模二加,所得的结果为输 出的第一个值, 初始状态向左移移位, 而所得的输出值填补上变成新的序列, 在进行第二次反馈和模二加,依次循环 N 次,产生 m 序列
2
第三章 m 序列的产生及性质
3.1 m 序列的产生原理、结构及产生
m 序列是最长线性反馈移位寄存器序列的简称,m 序列是由带线性反馈的移 位寄存器产生的。 由 n 级串联的移位寄存器和反馈逻辑线路可组成动态移位寄存器,如果反馈 逻辑线路只由模 2 和构成,则称为线性反馈移位寄存器。 带线性反馈逻辑的移位寄存器设定初始状态后,在时钟触发下,每次移位后 各级寄存器会发生变化, 其中任何一级寄存器的输出,随着时钟节拍的推移都会 产生一个序列,该序列称为移位寄存器序列。 n 级线性移位寄存器的如图 3.1 所示:
相关文档
最新文档