M序列的matlab产生方法

合集下载

智能控制 M序列的产生

智能控制 M序列的产生

做一个M 序列一、实验内容:利用MATLAB 语言产生一个M 序列m 序列是最长线性反馈移位寄存器序列的简称,m 序列是由带线性反馈的移位寄存器产生的.由n 级串联的移位寄存器和和反馈逻辑线路可组成动态移位寄存器,如果反馈逻辑线路只由模2和构成,则称为线性反馈移位寄存器。

带线性反馈逻辑的移位寄存器设定初始状态后,在时钟触发下,每次移位后各级寄存器会发生变化。

其中任何一级寄存器的输出,随着时钟节拍的推移都会产生一个序列,该序列称为移位寄存器序列。

n 级线性移位寄存器的如图1所示:图1 n 级线性移位寄存器图中i C 表示反馈线的两种可能连接方式,i C =1表示连线接通,第n-i 级输出加入反馈中;i C =0表示连接线断开,第n-i 级输出未参加反馈。

因此,一般形式的线性反馈逻辑表达式为112201(mod 2)nn n n n i n i i a C a C a C a C a ---==⊕⊕⊕=∑将等式左面的n a 移至右面,并将00(1)n n a C a C ==代入上式,则上式可改写为100ni n i C a -==∑定义一个与上式相对应的多项式1n a -2n a -3n a -∑∑∑∑1c 2c 3c 1n c -01c =1n c =0a 1a 输出()ni i i F x C x ==∑其中x 的幂次表示元素的相应位置。

式称为线性反馈移位寄存器的特征多项式,特征多项式与输出序列的周期有密切关系.当F(x)满足下列三个条件时,就一定能产生m 序列:(1) F(x)是不可约的,即不能再分解多项式; (2) F(x)可整除1px +,这里21n p =-; (3) F(x)不能整除1q x +,这里q<p.满足上述条件的多项式称为本原多项式.这样产生m 序列的充要条件就变成了如何寻找本原多项式.根据m 序列的特征方程:20120()nn i n i i f x c c x c x c x c x ==++++=∑并根据其联接多项式编写Matlab 程序.二、源程序如下:%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:Nout(k) = curState(M-1);a = rem(sum( gen(2:end).*curState),2); curState = [a curState(1:M-2)];end(2)mseq.m%m序列发生器及其自相关 mseq.mclear all;close all;g=19;%G=10011;state=8;%state=1000L=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);四、仿真波形:测试结果:图2 m序列自相关序列图3 m序列矩形成形信号图4 m序列矩形成形信号的自相关图5 m序列since成形信号的自相关。

m序列 matlab code实现流程

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序列

在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序列的产生

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序列的方法

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序列实验报告

实验报告--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序列中取值相同的那些相继的元素合称为一个“游程”。

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 序列,分析其性质,及其用来构造其它序列的方法;研究伪随机序列在跳频通信中的应用方法。

4进制m序列matlab

4进制m序列matlab

4进制m序列matlab什么是4进制m序列?在数字和通信领域中,m序列是一种特殊的伪随机序列。

m序列是由m位二进制数组成,其中每个m位二进制数都是通过使用特定的反馈多项式生成。

这里的"m"代表序列中的二进制位数。

当m等于1时,m序列退化为标准的伯努利二进制随机序列,而当m大于1时,则可以构造出更长且更复杂的伪随机序列。

在本文中,我们将探讨4进制m序列在Matlab中的实现以及其在通信系统中的应用。

第一步:生成4进制m序列要在Matlab中生成4进制m序列,我们可以使用反馈多项式和移位寄存器来实现。

首先,我们需要选择适当的反馈多项式。

常用的4进制m序列的反馈多项式为"1 + z^3 + z^4",其中z代表数字滤波器的延迟因子。

然后,我们创建一个移位寄存器,其长度为m位,并将其初始化为一个非零的状态。

接下来,我们使用反馈多项式和移位寄存器的当前状态来计算下一个状态,并将其存储在一个数组中。

重复这个过程,直到我们获得所需长度的序列为止。

在Matlab代码中,这个过程如下所示:matlabfunction sequence = generate_m_sequence(m, length)feedback_polynomial = [1, 0, 0, 0, 1]; % Feedback polynomial: 1 +z^3 + z^4shift_register = [1, 1, 1, 1]; % Initial state of shift registersequence = zeros(1, length); % Initialize sequence arrayfor i = 1:lengthsequence(i) = shift_register(1); % Store current state in sequence arrayfeedback_bit = mod(sum(shift_register .* feedback_polynomial), 2); % Calculate feedback bitshift_register = circshift(shift_register.', -1).'; % Shift register to the leftshift_register(end) = feedback_bit; % Update last bit with feedback bitendend通过调用上述函数,我们可以生成4进制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序列产生第一章设计内容及要求基于MATLAB产生m序列要求:1.通过matlab编程产生m序列的产生原理及其产生方法。

2.对特定长度的m序列,分析其性质,及其用来构造其它序列的方法。

第二章m序列设计方案的选择2.1 方案一MATLAB编程非常简单,无需进行变量声明,可以很方便的实现m序列。

2.2 方案二图2.1 Simulink实现m序列Simulink是MATLAB最重要的组件之一,它提供了一个动态系统建模,仿真和综合分析的集成环境。

在此环境中无需大量书写程序,而只需通过简单直观的鼠标操作,就可构造出复杂的系统。

Simulink具有适应性广,结构及流程清晰及仿真精细等优点,基于以上优点,Simulink已被广泛的运用到控制理论和数字信号处理的复杂仿真和设计。

通过比较方案一和方案二,发现方案一的有点具有通用性而方案二利用MATLAB的Simulink直接搭建模块,在移位寄存器较少的情况下利用此方法比较简单,可是当移位寄存器的个数增多时,要搭建那么多的模块就显的很繁琐了,缺乏通用性,因此本次实验选择方案一。

第三章m序列的产生及性质3.1 m序列的产生原理、结构及产生m序列是最长线性反馈移位寄存器序列的简称,m序列是由带线性反馈的移位寄存器产生的。

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

带线性反馈逻辑的移位寄存器设定初始状态后,在时钟触发下,每次移位后各级寄存器会发生变化,其中任何一级寄存器的输出,随着时钟节拍的推移都会产生一个序列,该序列称为移位寄存器序列。

n级线性移位寄存器的如图3.1所示:◇A图3.1 n级线性移位寄存器图中C i表示反馈线的两种可能连接方式,C i=1表示连线接通,第n-i级输出加入反馈中;C i=0表示连线断开,第n-i级输出未参加反馈。

因此,一般形式的线性反馈逻辑表达式为------表达式3.1将等式左边的a n移至右边,并将a n=C0a n(C0=1)带入上式,则上式可以写成-------表达式3.2定义一个与上式相对应的多项式--------表达式3.3 其中x的幂次表示元素的相应位置。

基于matlab的移位寄存器法m序列的产生

基于matlab的移位寄存器法m序列的产生
i o e ta n r mii i h ata t d te to i c t me g n e s p tn i la d p o sng wh c tr cs wi e at n in sn e is e r e c .Th pe tu e p n in o p e d e s cr m x a so f s r a
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分析

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 序列具有良好的自相关特性,但其互相关特性并不理想,存在多值。

M序列的matlab产生方法

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个值组成的序列。

m序列伪随机码产生及应用仿真matlab

m序列伪随机码产生及应用仿真matlab

序列伪随机码产生及应用仿真matlab一、概述随机序列是一种具有随机性质的数字序列,可用于信息传输、通信系统、密码学、雷达等领域。

伪随机序列是一种经过数学算法产生的序列,其具有类似与随机序列的统计特性,但实际上是确定性的。

在通信系统中,伪随机序列广泛应用于码分多址技术、扩频通信、混沌通信等领域。

本文将介绍伪随机码的产生原理,并使用matlab进行仿真实现,以加深对该技术的理解。

二、伪随机码的产生原理伪随机码的产生主要包括线性反馈移位寄存器(LFSR)、加法(XOR)运算和乘法(AND)运算等步骤。

下面以LFSR为例,介绍伪随机码的产生原理。

1. LFSR原理LFSR是一种利用移位寄存器和反馈逻辑电路构成的伪随机码产生器。

在LFSR中,存在一个移位寄存器和一个反馈逻辑电路。

移位寄存器中存储了若干比特的信息,经过时钟信号的控制完成信息的移位操作。

而反馈逻辑电路则根据寄存器中的信息产生反馈信号,从而实现伪随机序列的产生。

2. 伪随机码的产生过程(1)初始化LFSR。

将移位寄存器中的初始状态设置为一个非零的值。

(2)循环移位寄存器。

根据时钟信号的控制,移位寄存器中的信息进行移位操作。

(3)根据反馈逻辑电路的输出,生成伪随机序列。

通过反馈逻辑电路生成的反馈信号,即为伪随机序列的一部分。

三、matlab仿真实现matlab是一种功能强大的科学计算软件,具有丰富的绘图和仿真功能。

下面将使用matlab进行伪随机码的产生和仿真实现。

1. 产生伪随机码在matlab中,可以使用shiftregister函数实现LFSR的移位寄存器功能。

结合matlab的位运算功能,可以方便地实现伪随机码的产生。

以下是一个简单的matlab代码示例:```matlab定义LFSR的初始状态state = [1 0 1 0 1];定义LFSR的反馈多项式polynomial = [5 2];产生伪随机码for i = 1:10获取LFSR的输出output = state(end);计算新的状态new_state = mod(sum(state(polynomial)), 2);更新状态state = [new_state, state(1:end-1)];显示输出disp(output);end```上述代码中,通过定义LFSR的初始状态和反馈多项式,使用循环产生了10个伪随机码的输出。

用matlab产生M序列极其逆M序列

用matlab产生M序列极其逆M序列

用matlab产生M序列极其逆M序列①用产生M序列,②以此M序列为基础产生逆M序列,③并将逆M序列的复制变为-a和+a。

解:(1)产生M序列,用一个4级移位寄存器生成M序列。

程序及结果如下(可执行文件xiti3见文件夹中):%产生M序列x=[0 1 0 1 1 0 1 1 1];%给移位寄存器初始化N=50;%N为脉冲数目M=[];%存放M序列for i=1:Na=xor(x(4),x(9));%x(4)与x(9)取异或赋值给aM(i)=x(9);%把x(9)里的值赋给M[]产生M序列for j=9:-1:2x(j)=x(j-1);%实现移位寄存器的循环移位endx(1)=a;%把x(4)与x(9)取异值a给x(1)endfigure(1)%创建图形1stairs(1:N,M)%把M序列以阶梯图形显示hold onaxis([0,N,0,1.2])%图形横轴从0到N,纵轴从0到1.2title('M序列');%图形标题为‘M序列’xlabel('时序脉冲');%横轴为‘时序脉冲’(2)用0、1方波序列与M序列取异或得逆M序列。

程序及结果如下(可执行文件xiti3见文件夹中):%产生逆M序列f=zeros(1,length(M));%f为方波序列f(1)=1;for i=2:Nf(i)=f(i-1);endNM=xor(M,f);%M序列与方波异或赋值给NMfigure(2)stairs(1:N,NM)hold onaxis([0,N,0,1.2])title('逆M序列');xlabel('时序脉冲');(3)将逆M序列的复制变为-a和+a,程序及结果如下(可执行文件xiti3见文件夹中):%将逆M序列的幅值变为a和-aa=5;%a为指定的幅值A=NM.*a*2;A=A-a;figure(3)stairs(1:N,A);axis([0,N,-a-1,a+1]);hold ontitle('幅值为a的逆M序列');xlabel('时序脉冲');。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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]);
figure
stairs(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个值组成的序列。


ms = idinput(15, 'prbs', [0 1], [0 1]);
figure
stairs(ms)
title('M序列')
ylim([-0.5 1.5])
可以看到指定12时的序列为指定15时的序列的前面部分。

对于M>1时,
ms = idinput([12,1,2], 'prbs', [0 1], [0 1]);
figure
stairs(ms)
title('M序列')
ylim([-0.5 1.5])
结果如下
Matlab给出的响应警告为
Warning: The period of the PRBS signal was changed to 7. Accordingly, the length of the generated signal will be 14.
对于正弦信号和的产生,貌似用的不多,语法还挺复杂,等用的时候再看吧。

方法
产生’rgs’信号的带通信号使用的是一个8阶巴特沃斯滤波器,使用idfilt做的非因果滤波,这个是可信赖的方法。

对于’rbs’信号,使用的是相同的滤波器,但是是在二值化之前,这意味着频率成分并不保证是精确的。

产生高斯随机信号
clc
clear all
close all
% 高斯随机信号
u = idinput(1000, 'rgs');
figure
stairs(u)
title('高斯随机信号')
figure
hist(u, -4:4)
title('高斯随机信号的分布')
产生二值随机信号
clc
clear all
close all
% 二值随机信号
u = idinput(100, 'rbs');
figure
stairs(u)
title('二值随机信号')
ylim([-1.5 1.5])
产生二值伪随机信号(M序列)
合理的选择输入激励信号,能有效的激励起系统的动态信号。

白噪声的平稳谱的性质决定了它是一个很好的输入信号,但它在工程中不易实现,而M序列具有近似白噪声的性质,可保证良好的辨识精度。

clc
clear all
close all
% 二值伪随机信号(M序列)
n = 8; % 阶次
p = 2^n -1; % 循环周期
ms = idinput(p, 'prbs');
figure
stairs(ms)
title('M序列')
ylim([-1.5 1.5])
结果
验证M序列的性质如下
∙-1和1的个数差1
sum(ms==1) % 1的个数
sum(ms==-1) % -1的个数
ans =
127
ans =
128
∙存在直流分量
mean(ms) % 直流分量
ans =
-0.0039
∙相关函数
a = zeros(length(ms)*10, 1); % 采样for i = 1:10
a(i:10:end) = ms;
end
c = xcorr(a, 'coeff'); % 自相关函数figure
plot(c)
title('相关函数')
自相关函数接近于δ函数。

∙谱密度
figure
pwelch(a) % 谱密度
说明M序列不含基频的整数倍的频率成分。

产生逆M序列
谱分析表明,M序列含有直流成分,将造成对辨识系统的“净扰动”,这通常不是所希望的。

而逆M序列将克服这一缺点,是一种比M序列更为理想的伪随机码序列。

clc
clear all
close all
% 二值伪随机信号(M序列)
n = 8; % 阶次
p = 2^n -1; % 循环周期
ms = idinput(p, 'prbs', [], [0 1]);
figure
stairs(ms)
title('M序列')
ylim([-0.5 1.5])
% 产生逆M序列
s = 0;
ims = zeros(2*p, 1);
mstemp = [ms; ms];
for i = 1:2*p
ims(i) = xor(mstemp(i), s);
s = not(s);
end
ims(ims==0) = -1;
figure
stairs(ims)
title('逆M序列')
ylim([-1.5 1.5])
-1和1的个数差1
sum(ims==1) % 1的个数
sum(ims==-1) % -1的个数
ans =
255
ans =
255
∙无直流分量
mean(ims) % 直流分量
ans =
∙相关函数
a = zeros(length(ims)*10, 1); % 采样for i = 1:10
a(i:10:end) = ims;
end
c = xcorr(a, 'coeff');
figure
plot(c)
∙谱密度
figure
pwelch(a)。

相关文档
最新文档