基于MATLAB的m序列仿真.docx
- 文档编号:4347386
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:18
- 大小:194.35KB
基于MATLAB的m序列仿真.docx
《基于MATLAB的m序列仿真.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的m序列仿真.docx(18页珍藏版)》请在冰豆网上搜索。
基于MATLAB的m序列仿真
本科学生毕业论文(设计)
题目基于MATLAB的M/M排队模型仿真
学院
专业
学生姓名
学号
指导教师职称
论文字数
完成日期年月日
摘要
m序列是最长线性移位寄存器序列,m序列最早应用于扩频通信,有着优良的自相关特性以及很强的抗干扰能力和很好的通信隐蔽性。
本文首先介绍了扩频通信中m序列的基本性质,然后再介绍m序列产生的原理以及自相关、互相关特性。
通过软件Matlab来仿真分析产生的m序列及其自相关和互相关函数图形。
最后通过软件仿真来验证理论分析的正确性。
关键词:
移位寄存器,m序列,Matlab仿真分析
Abstract
Msequenceisthelongestlinearshiftregistersequences,itappliedinspread-spectrumcommunicationfirstly,ithasgoodautocorrelationpr-operties,stronganti-interferenceabilityandgoodcommunicationconce-alment.
Thepaperintroducesthebasicperformanceofmsequencefirtly,Thenintroducesitsgeneratingprinciple,autocorrelationandcross-correlationproperties.ThroughtheMatlabtoannlyzemsequence’sproduction,thefigureofitsautocorrelationandcross-correlationproperties.Atlast,theresultsshowthecorrectnessofthemethod.
Keywords:
shiftregister,msequence,Matlabsimulationandanalysis
第一章设计要求和引言
1.1设计内容及要求
1.1.1设计内容
在MATLAB环境下制作一个GUI,利用Matlab语言生成m序列并对m序列相关特性进行仿真。
1.1.2设计要求
1)根据多项式生产m序列;
2)分析m序列的相关性;
3)利用MatlabGUI显示仿真结果。
1.2系统设计流程图
第二章m序列的产生及性质
2.1m序列产生原理及结构
伪随机序列有很多种,其中最基本最常用的一种是最长线性反馈移位寄存器序列,也称作m序列,通常由反馈移位寄存器产生。
m序列是最长线性移位寄存器序列的简称。
它是由多级移位寄存器或其他延迟元件通过线性反馈产生的最长的码序列。
由于m序列容易产生、规律性强、有许多优良的性能,在扩频通信中最早获得广泛的应用。
由m级寄存器构成的线性移位寄存器如图2.1所示,通常把m称为这个移位寄存器的长度。
每个寄存器的反馈支路都乘以Ci。
当Ci=0时,表示该支路断开;当Ci=1时,表示该支路接通。
显然,长度为m的移位寄存器有2n种状态,除了全零序列,能够输出的最长序列长度为N=2n-1。
此序列便称为最长移位寄存器序列,简称m序列。
m序列每移位一次,就出现一种状态,在移位若干次后,一定能重复出现前某一状态,其后的过程便周而复始了。
反馈线位置不同将出现不同周期的不同序列,我们希望找到线性反馈的位置,能使移存器产生的序列最长,即达到周期P=2n-1。
按图中线路连接关系,可以写为:
该式称为递推方程。
图2.1m序列发生器的结构
为了获得一个m序列,反馈抽头是不能任意的。
在研究长度为m的序列生成及其性质时,常用一个n阶多项式f(x)描述它的反馈结构,即:
式中,c0=1,cm=1。
这一方程称为特征多项式。
式中xi仅指明其系数ci的值(1或0),x本身的取值并无实际意义,也不需要去计算x的值。
例如,若特征方程为f(x)=1+x+x4则它仅表示x0,x1和x4的系数c0=c1=c4=1,其余为零。
经严格证明:
若反馈移位寄存器的特征多项式为本原多项式,则移位寄存器能产生m序列。
特征多项式与输出序列的周期有密切关系.当F(x)满足下列三个条件时,就一定能产生m序列:
(1)F(x)是不可约的,即不能再分解多项式;
(2)F(x)可整除
这里p=2n-1
(3)F(x)不能整除
,这里q
m序列发生器中,并不是任何抽头组合都能产生m序列。
一个线性反馈移动寄存器能否产生m序列,决定于它的反馈系数ci(i=0,1,2,…,n),表2-1中列出了部分m序列的反馈系数ci,按照下表中的系数来构造移位寄存器,就能产生相应的m序列。
级数
周期P
反馈系数
(采用八进制)
3
7
13
4
15
23
5
31
45,67,75
6
63
103,147,155
7
127
203,211,217,235,277,313,325,345,367
8
255
435,453,537,543,545,551,703,747
9
511
1021,1055,1131,1157,1167,1175
10
1023
2011,2033,2157,2443,2745,3471
11
2047
4005,4445,5023,5263,6211,7363
12
4095
10123,11417,12515,13505,14127,15053
13
8191
20033,23261,24633,30741,32535,37505
14
16383
42103,51761,55753,60153,71147,67401
15
32765
100003,110013,120265,133663,142305
表2-1部分m序列的反馈系数表
根据表2-1中的八进制的反馈系数,可以确定m序列发生器的结构。
以7级m序列反馈系数Ci=(211)8为例,首先将八进制的系数转化为二进制的系数即Ci=(010001001)2,由此我们可以得到各级反馈系数分别为:
C0=1、C1=0、C2=0、C3=0、C4=1、C5=0、C6=0、C7=1,由此就很容易地构造出相应的m序列发生器。
根据反馈系数,其他级数的m序列的构造原理与上述方法相同。
需要说明的是,表2-1中列出的是部分m序列的反馈系数,将表中的反馈系数进行比特反转,即进行镜像,即可得到相应的m序列。
例如,取C4=(23)8=(10011)2,进行比特反转之后为(10011)2=(31)8,所以4级的m序列共有2个。
其他级数m序列的反馈系数也具有相同的特性。
理论分析指出,n级移位寄存器可以产生的m序列个数由下式决定:
其中,
为欧拉函数,其值小于等于
,并与
互质的正整数的个数(包括1在内)。
例如对于4级移位寄存器,则小于
并与15互质的数为1、2、4、7、8、11、13、14,共8个,所以
,所以4级移位寄存器最多能产生的m序列数为2。
总之,移位寄存器的反馈系数决定是否产生m序列,起始状态决定序列的起始点,不同的反馈系数产生不同的码序列。
在Matlab的GUI环境中,程序代码如下:
r=5;N=2^r-1;%移位寄存器的长度和序列的长度
s1(1:
5)=[10000];%initialvalue1
s2(1:
5)=[10001];%initialvalue1
f1=[100101];%特征多项式f=x^5+x^2+1;
f2=[111101];%特征多项式f=x^5+x^4+x^3+x^2+1;
forn=r+1:
N%进行循环
s1(n)=mod(sum(s1(n-r:
n-1).*f1(1:
r)),2);%通过模2加产生m1序列
end
stem(s1);%绘制生成m序列的图形
title('生成m序列')
2.2m序列的基本性质
(1)平衡特性
在m序列中一个周期N=2n-1内“1”的数目比“0”的数目多l位。
此特性保证了做平衡调制时,扩展频谱具有较高的载波抑制度。
(2)游程特性
在表2-2中列出长为15位的游程分布。
游程长度(比特)
游程数目
所包含的比特数
“1”的
“0”的
1
2
2
4
2
1
1
4
3
0
1
3
4
1
0
4
游程总数8
合计15
表2-2111101*********游程分布
一般说来,m序列中长为k(1kn-2)的游程数占游程总数的l/2k。
仅有一个包含n-1个“0”的游程,也只有一个包含n个“1”的游程
(3)线性叠加性
m序列和其移位后的序列逐位模二相加,所得的序列还是m序列,只是相移不同而已。
例如1110100与向右移三位后的序列1001110逐位模二相加后的序列为0111010,相当于原序列向右移一位后的序列,仍是m序列。
(4)m序列发生器中移位寄存器的各种状态,除全0状态外,其他状态只在m序列中出现一次。
如7位m序列中顺序出现的状态为111,110,101,010,100,00l和011,然后再回到初始状态111。
(5)m序列自相关特性
m序列的自相关函数由下式计算(当
≠0时):
即A表示相同的位数,D表示不同的位数(注意当m序列用±1表示,则A对应“和序列”的1,D对应“和序列”的-1)。
令p=A+D=2n-1,则m序列的自相关系数为:
当
=0时,m序列的自相关函数
出现峰值1;当
偏离0时,相关函数曲线很快下降;当1
N-1时,相关函数值为
1/N;当
=N时,又出现峰值,如此周而复始。
当m序列周期很大时,其自相关函数与白噪声类似。
相关检测就是利用这一特性,在“有”或“无”信号相关函数值的基础上来识别信号,检测或同步自相关函数值为1的码序列。
m序列的自相关函数曲线如图2.2所示:
图2.2m序列的自相关函数特性
结合公式和图2.2可知,当序列的周期很大时,m序列的自相关函数波形变得十分尖锐而接近冲击函数,而这正是高斯白噪声的自相关函数。
在Matlab的GUI环境中,程序代码如下:
r=5;N=2^r-1;%移位寄存器的长度和序列的长度
s1(1:
5)=[10000];%initialvalue1
s2(1:
5)=[10001];%initialvalue1
f1=[100101];%特征多项式f=x^5+x^2+1;
f2=[111101];%特征多项式f=x^5+x^4+x^3+x^2+1;
forn=r+1:
N%进行循环
s1(n)=mod(sum(s1(n-r:
n-1).*f1(1:
r)),2);%通过模2加产生m1序列
end
s1=2*s1-1;%变为双极性m序列
forj=0:
N-1
s3(j+1)=sum(s1.*[s1(1+j:
M),s1(1:
j)])/M;%互相关函数分析
end
plot(j,rho);
axis([-3030-0.51.5]);%设定j的位置范围为(-30,30),rho的位置范围为(-
0.5,1.5)
title('m序列的自相关函数')
(6)m序列的互相关性
其指的是相同周期N=2n-1的两个不同序列一致性的程度。
其互相关值越接近0,说明两m序列的差别越大,其互相关性越弱。
当m序列做CDMA系统的地址码时,必须选择互相关值很小的m序列组,以避免用户之间相互干扰(即多址干扰MAI)。
对于两个周期N=2n-1的m序列S1和S2,其互相关函数描述如下:
设m序列S1与其后移
位的序列S2逐位模2加所得的序列为S1+S2+
,“0”的位数为A(S1和S2相同的位数),“1”的位数为D(S1和S2不同的位数),则互相关函数可由下式计算:
在Matlab的GUI环境中,程序代码如下:
r=5;N=2^r-1;%移位寄存器的长度和序列的长度
s1(1:
5)=[10000];%initialvalue1
s2(1:
5)=[10001];%initialvalue1
f1=[100101];%特征多项式f=x^5+x^2+1;
f2=[111101];%特征多项式f=x^5+x^4+x^3+x^2+1;
forn=r+1:
N%进行循环
s1(n)=mod(sum(s1(n-r:
n-1).*f1(1:
r)),2);%通过模2加产生m1序列
end
forn=r+1:
N%进行循环
s2(n)=mod(sum(s2(n-r:
n-1).*f2(1:
r)),2);%通过模2加产生m2序列
end
s1=2*s1-1;%变为双极性m序列
s2=2*s2-1;%变为双极性m序列
forj=0:
N-1
s3(j+1)=sum(s1.*[s2(1+j:
M),s2(1:
j)])/M;%互相关函数分析
end
plot(j,rho);
axis([-3030-0.50.5]);%设定j的位置范围为(-30,30),rho的位置范围为
(-0.5,0.5)
title('m序列的互相关函数')
第三章系统软件设计
3.1系统结构功能设计
本系统实现的功能是通过MATLAB环境下制作一个GUI来生成m序列及m序列的自相关函数和m序列的互相关函数。
系统模块设计说明:
系统通过GUI界面设计生成m序列及m序列的自相关函数和m序列的互相关函数。
在软件程序中,先设定m序列的移位寄存器的长度,从而得到m序列的周期长度,然后再设定两个移位寄存器序列,通过查表得到相应的两个特征多项式,通过Matlab语言相应的产生m序列以及自相关函数和互相关函数,组成完整的m序列系统,编写m文件,代码如附录。
3.2GUI界面设计
如图3.1所示,界面一共有一个下拉菜单popumenu1,两个静态文本框statictext,一个axes1。
图3.1m序列仿真GUI界面图
它们的功能描述如表3-1所示:
控件名
功能描述
statictext
显示m序列仿真分析
statictext
显示选项框
popupmenu1
选择axes1坐标轴要显示的图形
axes1
显示popupmenu1中被选择的函数的图形
表3-1GUI界面功能描述
第四章系统调试结果分析
4.1调试过程
4.1.1调试步骤
第一步:
打开matlab,运行m文件或者fig文件后,系统会打开“基于MATLAB环境下的GUI的m序列仿真演示系统”。
第二步:
在Popupmenu1下拉菜单中选择生成mx序列,m序列的自相关函数和m序列的互相关函数的任一选项,即可在axes1中得到相应的要显示的图形。
第三步:
观察得到的图形,并与理论分析相比较,验证理论与仿真结果是否一致。
4.1.2调试过程分析
整个m序列仿真过程并不是一帆风顺,刚开始由于对GUI环境的不熟悉,出现了很多错误。
比如,由于不会使用GUI软件,导致一开始仿真结果不能在GUI界面中显示,最后在老师和同学的指导和热心帮助下,完成了整个仿真过程。
后来仿真完成后,由于对理论知识理解的还不是特别的深刻,所以不能判断仿真结果是否正确,最后经过查阅资料和书籍,验证了仿真结果的正确性。
下面按照整个m序列仿真过程,选择其中一些具有重要对比意义的步骤分析系统性能及调试结果。
一、打开GUI系统界面。
运行m文件或fig文件后,可看到如图4.1所示界面。
图4.1GUI环境下系统运行界面
二、观察m序列生成图形
在下拉菜单中选择生成m序列,则得到如图4.2所示的图形界面。
图4.2生成m序列图形
由输入程序知,输入的移位寄存器长度为5,所以可知得到的m序列的周期为25-1=31,与图4.2对比,结果一致。
输入的第一个移位寄存器序列为[10000],由理论分析知,特征多项式f1=[100101],通过公式s1(n)=mod(sum(s1(n-r:
n-1).*f1(1:
r)),2)得到m序列,经过理论分析得到与图形相一致的结果,即生成的m序列为1000010101110110001111100110100。
三、观察m序列的自相关函数图形
在下拉菜单中选择m序列的自相关函数,则得到如图4.3示的图形界面。
图4.3m序列的自相关函数图形
由理论分析知,m序列的自相关函数的自相关系数为:
当N=31时,则自相关系数在
时,R(τ)=1,
时,R(τ)=
1/31,经与图4.3对比后,发现理论与仿真结果一致。
四、观察m序列的互相关函数图形
在下拉菜单中选择m序列的互相关函数,则得到如图4.4的图形界面。
图4.4m序列的互相关函数图形
由理论分析知,m序列的自相关函数的互相关系数为:
经过理论分析,与仿真结果对比后,发现与仿真结果一致。
4.2调试故障分析
m序列产生原理是通由最长线性反馈移位寄存器序列得到,在系统调试时,一开始,发现不能运行,经过检查分析后,发现程序中输入的显示图形代码错误,经过修改后,可以得到正确的图形,但是输出的图形不能在GUI环境下生成。
经过老师的指导和同学的帮助后,可以在GUI环境下运行仿真。
但是在绘制三个函数的图形中,不能正确显示仿真结果。
经过检查程序代码后,发现输入的特征多项式不符合移位寄存器的长度值与抽头的位置关系,经过修改后,得到了正确的仿真结果图形。
在最后的改进中,发现许多程序代码都是重复的,因此想到了使用多选的选择菜单,利用switch语句来精简程序代码。
经过改进后,在能同样实现相同的功能情况下,程序代码简单了许多,符合程序编码的规则。
最后经过检查,发现仿真结果与理论分析一致,完成了仿真调试过程。
第五章实验总结与结论
本文通过MATLAB集成环境下的m文件及GUI界面工具来仿真分析m序列的生成,自相关函数及互相关函数。
通过GUI界面对m序列整个过程进行了仿真分析,仿真结果与理论分析对比后,验证了理论分析的正确性。
在实验过程中,充分利用了MATLAB的优势,及其精简的编写了程序代码,实现了确定了移位寄存器的长度及其具体序列后,就能生成相应的m序列,并能由生成的m序列去仿真分析其自相关函数及互相关函数。
由图形可更加直观明了的看出m序列的基本特性。
本次课程设计很好的完成了GUI环境下应有的功能,基本达到了本次设计的要求。
通过这次的课程设计,提高了对MATLAB的应用能力,了解了如何使用MATLAB语言来仿真分析我们理论上学到的专业知识,进一步加深了对MATLAB语言的理解,也学会了如何使用GUI工具。
在编写程序代码时,又提高了自己编写语言的能力以及逻辑思维的能力。
通过这次课程设计,进一步加深了对m序列的理解,通过理论与软件仿真的结合,提高了学习的效率,同时也锻炼了自己独立思考问题,发现问题,分析问题,解决问题的能力。
通过两个人的合作锻炼了我们互补互助,互相沟通交流的能力。
当然,由于能力有限,本文还有许多不足。
比如,可以在GUI界面下自由输入移位寄存器序列的值,从而得到相应的m序列。
或者还可以输入任意长度的移位寄存器值,然后可找到相应的特征多项式,从而得到相应的m序列。
作为一名大学生,我们不见要学会理论知识,更应该有探索钻研的精神,要学会不断地发现问题,更要有一种不怕吃苦,努力向上的精神。
参考文献
[1]樊昌信.通信原理.北京:
国防工业出版社,2008.
[2]郝文化.MATLAB图形图像处理应用教程.北京:
中国水利水电出版社,2002.
[3]楼顺天.基于Matlab7.x的系统分析与设计—信号处理.西安:
西安电子科技大学出版
社,2005
[4]刘树棠.现代通信系统使用MATLAB.西安:
西安交通大学出版社,2001
[5]查光明.熊贤祚.扩频通信lM].西安:
西安电子科技大学出版社,1990
[6]田日才.扩频通信[M].北京:
清华大学出版社,2007.
[7]孙屹,李妍.MATLAB通信仿真开发手册[M].北京:
国防工业工业出版社,2006
附录
程序代码:
(1)主程序
axes(handles.axes1);mm=0;
val=get(handles.popupmenu1,'value');%获取多选按钮的value值
switchval
case1
mm=1;
case2
mm=2;
case3
mm=3;
end
mxulie(mm);
(2)mxulie(mm)调用程序
functionmxulie(mm)
r=5;N=2^r-1;%移位寄存器的长度和序列的长度
s1(1:
5)=[10000];%initialvalue1
s2(1:
5)=[10001];%initialvalue1
f1=[100101];%特征多项式f=x^5+x^2+1;
f2=[111101];%特征多项式f=x^5+x^4+x^3+x^2+1;
forn=r+1:
N;%进行循环
s1(n)=mod(sum(s1(n-r:
n-1).*f1(1:
r)),2);%通过模二加产生m1序列
end;
forn=r+1:
N;%进行循环
s2(n)=mod(sum(s2(n-r:
n-1).*f2(1:
r)),2);%通过模二加产生m2序列
end;
s11=2*s1-1;%变为双极性m序列
forj=0:
N-1
s3(j+1)=sum(s11.*[s11(1+j:
N),s11(1:
j)])/N;%m序列自相关函数分析
end
j=-N+1:
N-1;%进行循环
rho1=[fliplr(s3(2:
N)),s3];%获取m序列自相关函数的图形
s111=2*s1-1;%变为双极性m序列
s222=2*s2-1;%变为双极性m序列
forj=0:
N-1
s33(j+1)=sum(s111.*[s222(1+j:
N),s222(1:
j)])/N;%m序列互相关函数分析
end;
j=-N+1:
N-1;
rho2=[fliplr(s33(2:
N)),s33];%获取m序列互相关函数的图形
(3)输出显示部分
switchmm
case1
stem(s1);%绘制生成m序列的图形
title('生成m序列');
case2
plot(j,rho1);%绘制m序列自相关函数图形
axis([-3030-0.51.5]);
title('m序列的自相关函数')
case3
plot(j,rho2);
axis([-3030-0.50.5]);%设定j的位置范围为(-30,30),rho2
的位置范围为(-0.5,0.5)
title('m序列的互相关函数')
end;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 序列 仿真