Matlab实现M序列的产生及其自相关序列学习资料
m序列 matlab code实现流程
m序列 matlab code实现流程一、引言m序列是一种具有良好性质的伪随机序列,广泛应用于通信、密码学等领域。
本文将介绍如何使用Matlab编写m序列的代码,并给出实现流程。
二、代码实现流程1. 初始化参数我们需要初始化一些参数,包括m序列的阶数n和初始状态寄存器的初值。
可以根据应用需要进行设置。
2. 生成m序列接下来,我们通过循环迭代的方式生成m序列。
在每一次迭代中,我们根据当前状态寄存器的值计算下一个状态寄存器的值,并将该值作为m序列的输出。
具体的实现代码如下:```matlabmSeq = zeros(1, 2^n - 1);reg = initReg;for i = 1:2^n - 1mSeq(i) = reg(n);nextReg = zeros(1, n);for j = 1:nnextReg(j) = mod(sum(reg(1:j-1)), 2);endreg = [nextReg reg(1:n-1)];end```其中,mSeq是用来存储m序列的数组,reg是用来存储当前状态寄存器的数组。
3. 输出m序列生成m序列后,我们可以将其输出,以便后续的应用。
可以使用Matlab的disp函数将m序列打印出来,或者将mSeq保存为文本文件。
具体的实现代码如下:```matlabdisp(mSeq);```或```matlabfileID = fopen('mSeq.txt', 'w');fprintf(fileID, '%d\n', mSeq);fclose(fileID);```4. 示例为了更好地理解m序列的生成过程,我们可以进行一个简单的示例。
假设我们设置n=3、初始状态寄存器的值为[1 0 0],则根据上述代码,可以得到对应的m序列为[1 1 0 1 1 0 0]。
5. 结果分析m序列具有良好的性质,包括平衡性、最长线性周期等。
在matlab中生成m序列
在matlab中⽣成m序列实验环境为matlab2013b1、⾸先编写⼀个mseq.m⽂件,内容为:function[mseq]=m_sequence(fbconnection)n=length(fbconnection);N=2^n-1;register=[zeros(1,n-1) 1]; %移位寄存器的初始状态mseq(1)=register(n); %m序列的第⼀个输出码元for i=2:Nnewregister(1)=mod(sum(fbconnection.*register),2);for j=2:nnewregister(j)=register(j-1);end;register=newregister;mseq(i)=register(n);end2、在matlab中打开这个⽂件3、在matlab的命令⾏窗体中执⾏primpoly(7,'all')这个命令的⽬的是得到7阶M序列的全部本原多项式。
假设想得到其它阶的m序列,⾃⾏改动数字7就可以。
4、得到的结果为Primitive polynomial(s) =D^7+D^1+1D^7+D^3+1D^7+D^3+D^2+D^1+1D^7+D^4+1D^7+D^4+D^3+D^2+1D^7+D^5+D^2+D^1+1D^7+D^5+D^3+D^1+1D^7+D^5+D^4+D^3+1D^7+D^5+D^4+D^3+D^2+D^1+1D^7+D^6+1D^7+D^6+D^3+D^1+1D^7+D^6+D^4+D^1+1D^7+D^6+D^4+D^2+1D^7+D^6+D^5+D^2+1D^7+D^6+D^5+D^3+D^2+D^1+1D^7+D^6+D^5+D^4+1D^7+D^6+D^5+D^4+D^2+D^1+1D^7+D^6+D^5+D^4+D^3+D^2+1ans =1311371431451571671711851911932032112132292392412472535、输⼊mseq([1 0 0 0 0 0 1])6、便可得到⼀个127位的m序列,整理之后为1000000111111101010100110011101110100101100011011110110101101100100100011100001011111001010111001101000100111100010100001100000说明。
基于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序列的产生
2012年01月第02期科技视界Science &technology viewSCIENCE &TECHNOLOGY VIEW 科技视界作者简介:刘艳华,盐城工学院信息工程学院教师。
基于matlab的移位寄存器法m序列的产生刘艳华(盐城工学院信息工程学院江苏盐城224051)【摘要】扩频通信是在民用和军用都有广泛应用的一种通信技术,自从其诞生就受到了广泛关注。
扩频通信中频谱的扩展是通过一个独立的伪随机序列来完成的。
其中m 序列是最常用的一种伪随机码,本文在matlab 平台上通过仿真,来研究如何用移位寄存器产生m 序列,虽然matlab 中有现成的m 序列产生模块,但是它的相位是不可以调节的,而本文产生的m 序列相位可以调节。
详细讲解了m 序列的产生原理,和matlab 仿真过程,最后给出了仿真结果,结果表明该方法是可行的。
【关键词】移位寄存器;扩频;m 序列;Design of m-sequence Generator Based on Shift Register with MatlabLIU Yan-hua(Yancheng Institute of Technology,School of Information Engineering,Yancheng Jiangsu,224051)【Abstract 】Spread spectrum communication is widely used in both civilian and military communications,Itis potential and promising which attracts wide attention since its emergence.The spectrum expansion of spreadspectrum communication is through of an independent pseudo-random sequence to complete.m-sequence is one of the most common sequence of pseudo-random code,this paper is in matlab platform to study how to use shift registers to generate m-sequence,although there is ready-made matlab m-sequence generation module,but its phase is not regulation,and phase of m-sequence generated by this paper can be adjusted.Explain in detail theprinciples of the m sequence generation,and the matlab simulation process,the final simulation results,the re⁃sults show that the simulation is feasible.【Key words 】Shift register;Spread spectrum;m-sequence0引言所谓扩频,是扩展频谱的简称。
基于Matlab的m序列生成及性能仿真
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序列的方法
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序列。
m序列实验报告
实验报告--m序列的产生及其特性实验班级:XXXXXX学号:XXXXX姓名:XXXXXM序列的产生及其特性实验一、实验目的掌握m序列的特性、产生方法及运用二、实验内容(1)编写MATLAB程序生成并观察m序列,识别其特征(2)观察m序列的相关特性三、实验原理m序列是有n级线性移位寄存器产生的周期为2n −1的码序列,是最长线性移位寄存器序列的简称。
码分多址系统主要采用两种长度的m序列:一种是周期为215 −1的m序列,又称短PN序列;另一种是周期为242 −1的m序列,又称为长PN码序列。
m序列主要有两个功能:①扩展调制信号的带宽到更大的传输带宽,即所谓的扩展频谱;②区分通过多址接入方式使用同一传输频带的不同用户的信号。
四、实验分析在实验中我选择的是n=6的级数,选择了103、147、155这三个反馈系数1:当反馈系数会Ci=(103)8=(1000011)2原理框图2: 当反馈系数会Ci=(147)8=(1100111)2原理框图3: 当反馈系数会Ci=(155)8=(1101101)2原理框图五、实验程序clearclose all;clcG=127;%使用多项式(103)8=(1000011)2产生第一个m序列sd1=[0 0 0 0 0 1];%寄存器的初始状态PN1=[];%第一个序列for j=1:GPN1=[PN1 sd1(1)];if sd1(1)==sd1(2)temp1=0;else temp1=1;endsd1(1)=sd1(2);sd1(2)=sd1(3);sd1(3)=sd1(4);sd1(4)=sd1(5);sd1(5)=sd1(6);sd1(6)=temp1;endsubplot(3,1,1)stem(PN1)title('使用生成多项式(103)8=(1000011)2产生第一个m序列')%使用生成多项式(147)8=(1100111)2产生第二个m序列sd2=[0 0 0 0 0 1];%寄存器的初始状态PN2=[];%第一个序列for j=1:GPN2=[PN2 sd2(1)];if sd2(1)==sd2(2)temp1=0;else temp1=1;endif sd2(5)==temp1temp2=0;else temp2=1;endif sd2(6)==temp2temp3=0;else temp3=1;endsd2(1)=sd2(2);sd2(2)=sd2(3);sd2(3)=sd2(4);sd2(4)=sd2(5);sd2(5)=sd2(6);sd2(6)=temp3;endsubplot(3,1,2)stem(PN2)title('使用生成多项式(147)8=(1100111)2产生第二个m序列')%使用生成多项式(155)8=(1101101)2产生第三个m序列sd3=[0 0 0 0 0 1];%寄存器的初始状态PN3=[];%第一个序列for j=1:GPN3=[PN3 sd3(1)];if sd3(1)==sd3(2)temp1=0;else temp1=1;endif sd3(4)==temp1temp2=0;else temp2=1;endif sd3(5)==temp2temp3=0;else temp3=1;endsd3(1)=sd3(2);sd3(2)=sd3(3);sd3(3)=sd3(4);sd3(4)=sd3(5);sd3(5)=sd3(6);sd3(6)=temp3;endsubplot(3,1,3)stem(PN3)title('使用生成多项式(155)8=(1101101)2产生第三个m序列')六、实验结果七、m序列的相关性质PN1 =0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1PN2 =0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1PN3 =0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 11)均衡性在m序列的一个周期中,0和1的数目基本相等,1的数目比0的数目多一个,由PN1可知总共有32个1和31个0.2)游程分布M序列中取值相同的那些相继的元素合称为一个“游程”。
基于MATLAB的m序列的产生及相关特性仿真(精)
XUEBAO 2009.10.20*[收稿日期]2009-07-28[作者简介]刘新永(1975-,男,解放军蚌埠坦克学院教育技术中心,讲师,研究方向:通信与网络技术。
蔡凤丽(1978-,女,安徽电子信息职业技术学院,讲师,研究方向:通信与信息系统。
裴晓根(1975-,男,解放军蚌埠坦克学院信息指挥教研室,助讲,研究方向:军事通信。
No.52009General No.44Vol.82009年第5期第8卷(总第44期安徽电子信息职业技术学院学报JOURNALOF ANHUI VOCATIONAL COLLEGE OF ELECTRONICS&INFORMATION TECHNOLOGY[文章编号]1671-802X(200905-0014-03基于MATLAB 的m 序列的产生及相关特性仿真刘新永1,蔡凤丽2,裴晓根3(1、3.解放军蚌埠坦克学院,安徽蚌埠233050;2.安徽电子信息职业技术学院,安徽蚌埠233060[摘要]本文主要是介绍MATLAB 在m 序列的产生及其相关特性分析方面的应用,研究了基于MATLAB 完成m序列simulink 硬件仿真方法,并且利用MATLAB 对不同长度的几种m 序列进行相关特性的分析。
[关键词]m 序列;simulink 硬件仿真;自相关[中图分类号]TN95[文献标识码]B一、m 序列的产生原理m 序列是最长线性反馈移存器序列的简称,它是由带线性反馈的移存器产生的周期最长的一种序列。
如图1所示为n 级移位寄存器,其中有若干级经模2加法器反馈到第1级。
不难看出,在任何一个时刻去观察移位寄存器的状态,必然是2n 个状态之一,其中每一状态代表一个n 位的二进制数字;但是,必须把全0排斥在外,因为一旦出现全0状态,则以后的序列将恒为0,所以,寄存器的起始状态可以是非全0的2n -1状态之一。
这个电路的输出序列是从寄存器移出的,尽管移位寄存器的状态每一移位节拍改变一次,但无疑是循环的。
基于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 序列产生方法及其性能,重点掌握直接序列扩频通信系统原理及性能。
二、 实验环境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序列的产生
p aei n t euai , n h s f sq ec e eae yti p p r a eajs d E pani d tite h s o rg lt n a dp aeo e u n eg n rt b s a e nb du t . x li n e lh s o m- d h c e a
s iss w h tt e smu ai n i e sb e u t ho t a h i l to sf a i l .
【 e od]h g t ; ra et mm s une K y rsSi r ie S ed pc ;-e ec w t f e s rp s r u q
等。 m序列是最常用的一种扩频码 , 它是最大长度线
性反 馈移位 寄 存器 序列 的简 称 。它是 用带 线性 反馈
的移位寄存器产生 的, 是周期最长的序列。 它具有很 强的相关性 . 规律性和系统性 。 表现出的统计特性和 白噪声的采样序列相同, 如果不知道其生成方法 , 看 上去 就 和真 的随机 序列 一样 。 伪随机序列的用处很广泛 , 在雷达 、 遥控系统、 多址通信 、 保密通信、 P 导航等领域都有应用。由 GS 于其 具有 的社 会 和科 学价 值 , 随 机序列 的构 造 、 伪 生
s e t m o p cr u c mmu iain i tru h o n id p n e tp e d — a d m e u n e t o lt. s q e c so e nc t s h o g fa n e e d n su o r n o s q e c oc mpee m— e u n e i n o
m序列产生和性能的MATLAB仿真
电厂检修业务的进入战略 就进入新业务战略而言,业务拓展可以分为由
点到线、由线到网的进入策略,存在着购并外部现有 企业、从头开始自创新企业以及与外部业务结盟开 展新业务3种作法,简称购并、自创、结盟。作为电 厂检修业务,浙江火电有着很强的技术基础,人员可 通过短期培训获得,且具备一定的资金实力和融资 能力,自创新企业不存在障碍,但考虑市场资源的获 得,可以考虑与拥有检修市场的单位进行结盟,提高 市场竞争能力,扩大市场规模。因此,最好的进人方 式就是以自主创新为主,以结盟为辅。
尺m)。fⅣ
’
【一1
m=壳Ⅳ_j}=o,±l,±2,…。。
。
其他m
2
MA吼AB仿真
为在MATLAB中对m序列发生器和序列性能
进行仿真,可傲絮下定义,将移位寄存器状态设置成 向量mregister=[al,a2,03,…,aN],将连接向量设 为向量g=[g,,92,93,…,gN],由图l可得模2加法 器的输进等于反馈量back,也帮是a,的下一个德,
m=zeros(1,31);
mregister=minitial; n=0:k=0:
万 方数据
水利电力机械
2007年12月
5火电施工企业业务组合和选择发展战略
从上述分析中可以看出,浙江火电宜以火电施 工业为基础,大力发展钢结构加工业和电厂检修业 务,退出物流行业。
5.1
警誉芋磊薯君翥望盏霎{娄馨等嚣喾需嚣嘉兰主
n2=[0:n一1];
subplot(2,1,1) stem(nl,m) ylabel(’m sequence') subplot(2,1,2) plot(n2,rE) ylabel(’R(m)0
MATLAB仿真m序列和Gold序列自相关与互相关
MATLAB仿真m序列和Gold序列自相关与互相关MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
本章正是运用MATLAB来仿真m序列和Gold序列的相关特性,以及OCDMA 系统的误码率同用户数N的关系曲线。
su1 仿真过程在理论分析的基础上,下面使用附录上两段程序,通过MATLAB仿真得出m序列和Gold序列的自己相关性。
这段m序列产生程序采用了8个移位寄存器,将最后两个移位寄存器的值进行异或处理反馈给第一个移位寄存器,然后向前移位,输出最后一个移位寄存器的值,Gold序列的产生只是将两个m序列中的一个进行延时移位,再进行异或,产生的主要原理和m序列并无较大差异。
在这两段程序个前半部分m序列和Gold序列生成的基础上,只要将y1=xcorr(x1)改为y1=xcorr(x1,x2)即可求出它们的互相关仿真。
2 仿真结果在系统中采用上述序列仿真得到自相关和互相关特性曲线如图1 , 2及图3 所示。
图1 m 序列的自相关曲线图4-2 m 序列与Gold序列的自相关曲线图4-3 m 序列与Gold 序列的互相关曲线附录程序1X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi初T态(0101), Yi为移位寄存器各级输出m=120; %置M序列总长度for i=1:m %1#Y8=X8; Y7=X7; Y6=X6; Y5=X5; Y4=X4; Y3=X3; Y2=X2; Y1=X1;X8=Y7; X7=Y6; X6=Y5; X5=Y4; X4=Y3; X3=Y2; X2=Y1;X1=xor(Y7,Y8); %异或运算if Y8==0U(i)=-1;elseU(i)=Y8;endendM=U%绘图i1=it=1:1:i1;x1=[(2*M)-1]’;%将运行结果m序列M从单极性序列变为双极性序列y1=xcorr(x1);%求自相关性t=1:1:i1;plot(t,y1(1:i1));axis([1,120,-12,288])%绘出信号的相关图gridxlabel('t')ylabel('相关性')title('移位寄存器产生的M序列的相关性')程序2function c=gold()n=7;a=[1 1 1 1 1 1 1 1];co=[];for v=1:2^n-1co=[co,a(1)];a(8)=mod(a(5)+a(1),2);a(1)=a(2);a(2)=a(3);a(3)=a(4);a(4)=a(5);a(5)=a(6);a(6)=a(7);a(7)=a(8);endm1=co;b=[1 0 1 0 0 0 0 1];co=[];for v=1:2^n-1co=[co,b(1)];m=mod(b(5)+b(1),2);p=mod(b(6)+m,2);b(8)=mod(b(5)+b(1),2);b(1)=b(2);b(2)=b(3);b(3)=b(4);b(4)=b(5);b(5)=b(6);b(6)=b(7);b(7)=b(8);endm2=co;c=xor(m1,m2);x2=[(2*c)-1]’;%将运行结果Gold序列c从单极性序列变为双极性序列y1=xcorr(x2);%求自相关性t=1:1:120;plot(t,y1(1:120));axis([1,120,-12,288])%绘出信号的相关图gridxlabel('t')ylabel('相关性')title('移位寄存器产生的Gold序列的相关性')。
m序列的生成及其相关性的matlab分析
%matlab程序:生成m序列和相关性分析clc;N=5;connections=gfprimfd(N,'all');%生成级数为5时所有本原多项式系数序列矩阵f1=connections(2,:); %取一组本原多项式序列,此系数为45(100101)f2=connections(3,:); %取另一组本原多项式序列,此系数为75(111101)registers1=[0 0 0 0 1];%给定寄存器的初始状态registers2=[0 0 0 0 1];%取相同的初始状态L=2^N-1; %周期长度sum2=0;sum1=0;for k=1:Lseq1(k)=registers1(N); %第一组m序列seq2(k)=registers2(N); %第二组序列for j=1:N %进行模2加sum1=sum1+f1(j+1)*registers1(j); %各级寄存器送参与模2加的值sum1=mod(sum1,2);sum2=sum2+f2(j+1)*registers2(j); %各级寄存器送参与模2加的值sum2=mod(sum2,2);endfor t=N:-1:2 %寄存器移位registers1(t)=registers1(t-1);registers2(t)=registers2(t-1);endregisters1(1)=sum1; registers2(1)=sum2;sum1=0; sum2=0;enddisp(f1); %显示反馈系数序列disp(seq1); %显示第一组m序列m1=xcorr(seq1,’unbiased’);%计算自相关函数figure;stem(m1/max(m1));title('m1的自相关函数'); %画出m1序列的自相关函数disp(f2);disp(seq2);m2=xcorr(seq2,’unbiased’);figure;stem(m2/max(m2));title('m2的自相关函数');%画出m2序列的自相关函数R12= xcorr(seq1,seq2,’unbiased’)figure;plot(R12/max(R12));title('m2,m1的互相关函数');%画出m1,m2序列的互相关特性s=fftshift(abs(fft(seq1,2*L)).^2); s=s/max(s);figure;plot(s);分析:由图知m 序列具有良好的自相关特性,但其互相关特性并不理想,存在多值。
MATLAB利用IDINPUT函数产生M序列
MATLAB利⽤IDINPUT函数产⽣M序列stairs(ms) title('M序列') ylim([-0.51.5])结果如下同时,matlab给出如下警告Warning:The PRBS signal delivered is the12first values of a full sequence of length15.即函数的输出为周期为15(⼤于12的第⼀个2^n-1的值)PRBS信号的前12个值组成的序列。
如ms=idinput(15,'prbs',[01],[01]);figurestairs(ms)title('M序列')ylim([-0.51.5])可以看到指定12时的序列为指定15时的序列的前⾯部分。
对于M>1时,ms=idinput([12,1,2],'prbs',[01],[01]); figurestairs(ms)title('M序列')ylim([-0.51.5])结果如下Matlab给出的响应警告为Warning:The period of the PRBS signal was changed to7.Accordingly, the length of thegenerated signal will be14.对于正弦信号和的产⽣,貌似⽤的不多,语法还挺复杂,等⽤的时候再看吧。
⽅法产⽣’rgs’信号的带通信号使⽤的是⼀个8阶巴特沃斯滤波器,使⽤idfilt做的⾮因果滤波,这个是可信赖的⽅法。
对于’rbs’信号,使⽤的是相同的滤波器,但是是在⼆值化之前,这意味着频率成分并不保证是精确的。
产⽣⾼斯随机信号clcclear allclose all%⾼斯随机信号u=idinput(1000,'rgs');figurestairs(u)title('⾼斯随机信号') figurehist(u,-4:4)title('⾼斯随机信号的分布')产⽣⼆值随机信号clc clear allclose all%⼆值随机信号u=idinput(100,'rbs'); figurestairs(u)title('⼆值随机信号')ylim([-1.51.5])产⽣⼆值伪随机信号(M序列)合理的选择输⼊激励信号,能有效的激励起系统的动态信号。
M序列的matlab产生方法
M序列是工程中常用的输入信号,它的性质类似于白噪声,而白噪声是理论上最好的输入信号,可见M序列的价值。
下面介绍M序列的matlab产生方法。
idinput函数产生系统辨识常用的典型信号。
格式u = idinput(N,type,band,levels)[u,freqs] = idinput(N,'sine',band,levels,sinedata)N产生的序列的长度,如果N=[N nu],则nu为输入的通道数,如果N=[P nu M],则nu指定通道数,P为周期,M*P为信号长度。
默认情况下,nu=1,M=1,即一个通道,一个周期。
Type指定产生信号的类型,可选类型如下Band指定信号的频率成分。
对于’rgs’、’rbs’、’sine’,band = [wlow, whigh]指定通带的范围,如果是白噪声信号,则band=[0, 1],这也是默认值。
指定非默认值时,相当于有色噪声。
对于’prbs’,band=[0, B],B表示信号在一个间隔1/B(时钟周期)内为恒值,默认为[0, 1]。
Levels指定输入的水平。
Levels=[minu, maxu],在type=’rbs’、’prbs’、’sine’时,表示信号u的值总是在minu和maxu之间。
对于type=’rgs’,minu指定信号的均值减标准差,maxu指定信号的均值加标准差,对于0均值、标准差为1的高斯白噪声信号,则levels=[-1, 1],这也是默认值。
说明对于PRBS信号,如果M>1,则序列的长度和PRBS周期会做调整,使PRBS的周期为对应一定阶数的最大值(即2^n-1,n为阶数);如果M=1,PRBS的周期是大于N 的相应阶数的值。
在多输入的情形时,信号被最大平移,即P/nu为此信号能被估计的模型阶次的上界。
上面的意思可如下理解:对于M=1时,ms = idinput(12, 'prbs', [0 1], [0 1]);figurestairs(ms)title('M序列')ylim([-0.5 1.5])结果如下同时,matlab给出如下警告Warning: The PRBS signal delivered is the 12 first values of a full sequence of length 15.即函数的输出为周期为15(大于12的第一个2^n-1的值)PRBS信号的前12个值组成的序列。
matlab产生m序列
之前不懂系统辨识的理论,输入信号随便用了一个阶跃信号,后来发现阶跃信号其实很菜,不足以激励起系统的全部动态特性,额,实。
验数据立马弱爆了。
M 序列是工程中常用的输入信号,它的性质类似于白噪声,而白噪声是理论上最好的输入信号,可见M 序列的价值。
下面介绍M 序列的matlab 产生方法,看到很多论坛产生M 而序列的程序复用性不高,matlab 就提供了产生M 序列的专门函数,这里尝试一下。
idinput 函数产生系统辨识常用的典型信号。
格式u idinputNtypebandlevelsufreqs idinputNsinebandlevelssinedataN 产生的序列的长度,如果NN nu,则nu 为输入的通道数,如果NP nu M,则nu 指定通道数,P 为周期,MP 为信号长度。
默认情况下,nu1,M1,即一个通道,一个周期。
Type 指定产生信号的类型,可选类型如下…rgs‟ 高斯随机信号…rbs‟ (默认)二值随机信号…prbs‟ 二值伪随机信号(M 序列)…sine‟ 正弦信号和Band 指定信号的频率成分。
对于‟rgs‟、‟rbs‟、‟sine‟,band wlow whigh指定通带的范围,则如果是白噪声信号,band0 1,这也是默认值。
指定非默认值时,相当于有色噪声。
对于‟prbs‟,band0 B,B 表示信号在一个间隔1/B(时钟周期)内为恒值,默认为0 1。
Levels 指定输入的水平。
在Levelsminu maxu,type‟rbs‟、‟prbs‟、‟sine‟时,表示信号u 的值总是在minu 和maxu 之间。
对于type‟rgs‟,minu指定信号的均值减标准差,maxu 指定信号的均值加标准差,对于0均值、标准差为1 的高斯白噪声信号,则levels-1 1,这也是默认值。
说明对于PRBS 信号,如果M1,则序列的长度和PRBS 周期会做调整,使PRBS 的周期为对应一定阶数的最大值(即2n-1,n 为阶数);如果M1,PRBS 的周期是大于N 的相应阶数的值。
m序列的生成与仿真
M序列的生成原理与仿真1.1 m序列的生成r 级非退化的移位寄存器的组成如图1 所示,移位时钟源的频率为Rc。
r 级线性移位寄存器的反馈逻辑可用二元域GF(2)上的r 次多项式表示(1)图(1)r 级线性移位寄存器式(1)称为线性移位寄存器的特征多项式,其给出的表示反馈网络的而逻辑关系式是现行的。
因此成为线性移位寄存器。
对于动态线性移位寄存器,其反馈逻辑也可以用线性移位寄存器的递归关系式来表示(2)以式(1)为特征多项式的r 级线性反馈移位寄存器所产生的序列,其周期N≤2r−1。
假设以GF(2)域上r次多项式(1)为特征多项式的r级线性移位寄存器所产生的非零序列{ a i }的周期为N =2r−1,称序列为{ a i }是最大周期的r 级线性移位寄存器序列,简称m序列。
构造一个产生m 序列的线性移位寄存器,首先要确定本原多项式。
本原多项式确定后,根据本原多项式可构造出m 序列移位寄存器的结构逻辑图。
仿真时以n=6的6级移位寄存器为例,产生本源多项式的方法:n=6; %以6级寄存器为例,connections=gfprimfd(n,'all');f1=connections(4,:); %取一组本原多项式序列根据本院多项式确定的反馈系数做出反馈移位寄存器如图(2)所示图(2)m 序列发生器1.2 m 序列自相关函数1.2.1周期自相关函数编写周期自相关函数和非周期自相关函数,实验结果如下图(2)和(3)所示:图(2)m 序列周期自相关函数结论:周期自相关函数R (k )={63 k =0−1 otℎersm 序列周期自相关函数1.2.2非周期自相关函数图(3) m 序列非周期自相关函数1.3 m 序列的互相关函数选用的两个m 序列为一对优选对,以211作为基准本原多项式(反馈系数10001001),217作为配对本原多项式(反馈系数10001111),生成两个m 序列,求出互相关函数如图(4)和(5):、图(4)m 序列互相关函数结论:互相关函数的取值{-1,-17,15}m 序列非周期自相关函数m 序列周期互相关函数m序列非周期互相关函数图(5)m序列非周期互相关函数1.4 附:matlab代码clear;clc;%%------生成m序列-----%%n=6; %以6级寄存器为例,connections=gfprimfd(n,'all');f1=connections(4,:); %取一组本原多项式序列registers1=[1 0 0 0 0 0 ];%给定寄存器的初始状态L=2^n-1; %周期长度sum1=0;for k=1:Lseq(k)=registers1(n); %m序列for j=1:n %进行模2加sum1=sum1+f1(j+1)*registers1(j); %各级寄存器送参与模2加的值sum1=mod(sum1,2);endfor t=n:-1:2 %寄存器移位registers1(t)=registers1(t-1);endregisters1(1)=sum1;sum1=0;end% %%----------------------自相关函数-------------------------%%% %-------非周期自相关函数--------%%a=1-2*seq;b=a;for i=1:LR(i)=sum(a.*b)b=[0 b(1:62)]endplot(R)title('m序列非周期自相关函数');% %-------周期自相关函数------%%% a=1-2*seq;% b=a;% for i=1:L% R(i)=sum(a.*b)% b=[b(63) b(1:62)]% end% plot(R);% title('m序列周期自相关函数');%%-------利用公式编写自相关函数验证---------------%% % a=seq1;% b=[a(1,63),a(1,1:62)];% L=length(b);% n=400;% x=1:n;% for k=1:n% c=xor(a,b);% D=sum(c);% A=L-D;% R(k)=(A-D)/(A+D);% b=[b(L),b(1:L-1)];% end% plot(x,R);% title('gold序列的自相关函数');% xlabel('τ');% ylabel('R(τ)');% grid;。
Matlab实现M序列的产生及其自相关序列学习资料
Ma t l ab 实现M 序列的产生及其自相关序列电子信息工程专业课程设计任务书1需求分析伪随机信号既有随机信号所具有的优良的相关性,又有随机信号所不具备的 规律性•因此,伪随机信号既易于从干扰信号中被识别和分离出来 ,又可以方便 地产生和重复,其相关函数接近白噪声的相关函数,有随机噪声的优点,又避免 了随机噪声的缺点•伪随机序列具有可确定性、可重复性,易于实现相关接受或 匹配接受,故有很好的抗干扰性能•因此伪随机序列在相关辩识、伪码测距、导 航、遥控遥测、扩频通信、多址通信、分离多径、误码测试、线形系统测量、 数据加扰、信号同步等方面均有广泛的应用•m 序列是伪随机序列中最重要的 一种,是最长线性移位寄存器序列,m 序列易于实现,具有优良的自相关特性,在直扩通信系统中用于扩展要传递的信号。
可以通过移位寄存器,利用MATLABS 程产生m 序列。
2概要设计m 序列是最长线性反馈移位寄存器序列的简称,m 序列是由带线性反馈的移位寄存器产生的•由n 级串联的移位寄存器和和反馈逻辑线路可组成动态移位寄存器,如果 反馈逻辑线路只由模2和构成,则称为线性反馈移位寄存器。
带线性反馈逻辑的移位寄存器设定初始状态后,在时钟触发下,每次移位 后各级寄存器会发生变化。
其中任何一级寄存器的输出,随着时钟节拍的推移 都会产生一个序列,该序列称为移位寄存器序列。
n 级线性移位寄存器的如图1所示:图1 n 级线性移位寄存器* a n 1*■ a n 2 * a n 3图中C 表示反馈线的两种可能连接方式, C =1表示连线接通,第n-i 级输出加入反馈中;C i =0表示连接线断开,第n-i 级输出未参加反馈。
因此,一般形式的线性反馈逻辑表达式为a n C 1a n 1 C 2a n 2 LC n a 0将等式左面的 a n 移至右面,并将 a n C 0a n (C 0 为n0 C i a n 1i0 定义一个与上式相对应的多项式nF(x)C i x ii0其中x 的幕次表示元素的相应位置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M a t l a b实现M序列的产生及其自相关序
列
电子信息工程专业课程设计任务书
1 需求分析
伪随机信号既有随机信号所具有的优良的相关性,又有随机信号所不具备的规律性. 因此,伪随机信号既易于从干扰信号中被识别和分离出来,又可以方便地产生和重复,其相关函数接近白噪声的相关函数, 有随机噪声的优点,又避免了随机噪声的缺点. 伪随机序列具有可确定性、可重复性,易于实现相关接受或匹配接受,故有很好的抗干扰性能. 因此伪随机序列在相关辩识、伪码测距、导航、遥控遥测、扩频通信、多址通信、分离多径、误码测试、线形系统测量、数据加扰、信号同步等方面均有广泛的应用. m序列是伪随机序列中最重要的一种,是最长线性移位寄存器序列,m序列易于实现,具有优良的自相关特性,在直扩通信系统中用于扩展要传递的信号。
可以通过移位寄存器,利用MATLAB编程产生m序列。
2 概要设计
m 序列是最长线性反馈移位寄存器序列的简称,m 序列是由带线性反馈的移位寄存器产生的.
由n级串联的移位寄存器和和反馈逻辑线路可组成动态移位寄存器,如果反馈逻辑线路只由模2和构成,则称为线性反馈移位寄存器。
带线性反馈逻辑的移位寄存器设定初始状态后,在时钟触发下,每次移位后各级寄存器会发生变化。
其中任何一级寄存器的输出,随着时钟节拍的推移都会产生一个序列,该序列称为移位寄存器序列。
n级线性移位寄存器的如图1所示:
图1 n级线性移位寄存器
图中i C 表示反馈线的两种可能连接方式,i C =1表示连线接通,第n-i 级输出加入反馈中;i C =0表示连接线断开,第n-i 级输出未参加反馈。
因此,一般形式的线性反馈逻辑表达式为
112201
(mod 2)n n n n n i n i i a C a C a C a C a ---==⊕⊕⊕=∑L
将等式左面的n a 移至右面,并将00(1)n n a C a C ==代入上式,则上式可改写为
10
0n i n i C a -==∑
定义一个与上式相对应的多项式
()n
i i i F x C x ==∑
其中x 的幂次表示元素的相应位置。
式称为线性反馈移位寄存器的特征多项式,特征多项式与输出序列的周期有密切关系.当F(x)满足下列三个条件时,就一定能产生m 序列:
(1) F(x)是不可约的,即不能再分解多项式; (2) F(x)可整除1p x +,这里21n p =-; (3) F(x)不能整除1q x +,这里q<p.
满足上述条件的多项式称为本原多项式.这样产生m 序列的充要条件就变成了如何寻找本原多项式. 根据m 序列的特征方程:
2
0120
()n
n
i n i i f x c c x c x c x c x ==++++=∑L
并根据其联接多项式编写Matlab 程序.
3 运行环境
硬件环境:Window xp 软件环境:Matlab 6.5
4 开发工具和编程语言
Matlab 6.5
5 详细设计
主程序Untitled.m :
%m序列发生器及其自相关 mseq.m
clear all;
close all;
g=19;%G=10011;
state=8;%state=1000
L=1000;
%m序列产生
N=15;
mq=mgen(g,state,L);
%m序列自相关
ms=conv(1-2*mq,1-2*mq(15:-1:1))/N;
figure(1)
%subplot(222)
stem(ms(15:end));
axis([0 63 -0.3 1.2]);title('m序列自相关序列') figure(2)
%m序列构成的信号(矩形脉冲)
N_sample=8;
Tc=1;
dt=Tc/N_sample;
t=0:dt:Tc*L-dt;
gt=ones(1,N_sample);
mt=sigexpand(1-2*mq,N_sample);
mt=conv(mt,gt);
figure(2)
%subplot(221);
plot(t,mt(1:length(t)));
axis([0 63 -0.3 1.2]);title('m序列矩形成形信号')
st=sigexpand(1-2*mq(1:15),N_sample);
s=conv(st,gt);
st=s(1:length(st));
rt1=conv(mt,st(end:-1:1))/(N*N_sample);
figure(3)
%subplot(223)
plot(t,rt1(length(st):length(st)+length(t)-1));
axis([0 63 -0.3 1.2]);title('m序列矩形成形信号的自相关');xlabel('t');
Tc=1;
dt=Tc/N_sample;
t=-20:dt:20;
gt=sinc(t/Tc);
mt=sigexpand(1-2*mq,N_sample);
mt=conv(mt,gt);
st2=sigexpand(1-2*mq(1:15),N_sample);
s2=conv(st2,gt);
st2=s2;
rt2=conv(mt,st2(end:-1:1))/(N*N_sample);
figure(4)
%subplot(224);
t1=-55+dt:dt:Tc*L-dt;
plot(t,mt(1:length(t)));
plot(t1,rt2(1:length(t1)));
axis([0 63 -0.5 1.2]);title('m序列since成形信号的自相关');xlabel('t')
调用的子程序如下:
(1)mgen.m:
function [out] = mgen(g,state,N)
%输入 g:m序列生成多项式(10进制输入)
%state:寄存器初始状态(10进制输入)
%N:输出序列长度
% test g=11;state=3;N=15;
gen = dec2bin(g)-48;
M = length(gen);
curState = dec2bin(state,M-1) - 48;
for k =1:N
out(k) = curState(M-1);
a = rem(sum( gen(2:end).*curState),2);
curState = [a curState(1:M-2)];
end
(2)mseq.m
%m序列发生器及其自相关 mseq.m
clear all;
close all;
g=19;%G=10011;
state=8;%state=1000
L=1000;
(3)sigexpand.m:
function [out] = sigexpand(d,M)
N = length(d);
out = zeros(M,N);
out(1,:)=d;
out = reshape(out,1,M*N);
6 调试分析
在调试程序中出现过以下问题:Undefined function or variable
'sigexpand'.后来查出是子程序定义和调用方面出的差错,经过修改,成功排除了错误。
m序列的输出波形在每次运行程序后不尽相同,这是由m序列特性决定的,它是一种伪随机序列。
7 测试结果
图2 m序列自相关序列
图3 m序列矩形成形信号
图4 m序列矩形成形信号的自相关
图5 m序列since成形信号的自相关
8 参考文献
1.樊昌信,曹丽娜编著,通信原理(第六版),国防工业出版社,2006 2.吴先用,邹学玉,一种m序列伪码发生器的产生方法[J].测控技术,2003,,22(9)
3.肖国镇,梁传甲,王育民.伪随机序列及其应用。
[M].长沙:国防工业出版社,1985.
4.吕辉,何晶,王刚。
伪随机序列中本原多项式生成算法[J],计算机工程。
心得体会
本次课程设计完全实现了设计要求,利用软件实现m序列的生成及成形信号,通过这次实践不但加深了我对m序列的了解,而且对MATLAB编程有了很好的掌握,在不断的程序调错中提高了自己寻错的能力。
m序列可以软件实现,也可以硬件实现,但是通过本次设计可以看到软件设计的许多优点。
在课程设计的过程中,我查询了大量的资料,通过相关资料的查阅,还掌握了通信领域的有关知识,扩大了知识面。
课程设计是一个十分有价值、有意义的实践活动,把一个课题设计好不是一步到位的,而是一个经过反复修改,不断调试的过程,其间有困难也有乐趣,使我对工程实践有了一个更加深刻的认识。