Matlab实现M序列的产生及其自有关序列

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

电子信息工程专业课程设计任务书

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 ---==⊕⊕

⊕=∑

将等式左面的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

满足上述条件的多项式称为本原多项式.这样产生m 序列的充要条件就变成了如何寻找本原多项式. 根据m 序列的特征方程:

2

0120

()n

n

i n i i f x c c x c x c x c x ==+++

+=∑

并根据其联接多项式编写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;

相关文档
最新文档