logo资料库

Matlab实现M序列的产生及其自相关序列学习资料.doc

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
M a t l a b 实 现 M 序 列 的 产 生 及 其 自 相 关 序 列
电子信息工程 专业课程设计任务书 学生姓名 题 目 专业班级 电信 1 班 学号 M 序列产生器的 MATLAB 设计与实现 课题性质 工程技术研究 指导教师 课题来源 同组姓名 自拟课题 无 了解 m 序列的产生、输出及其自相关序列,观察各种成形信号 的波形。 主要内容 任务要求 1、利用 Matlab 实现 M 序列的产生及其自相关序列。 2、观察成形信号波形。 1.樊昌信,曹丽娜编著,通信原理(第六版),国防工业出版 社,2006 2.吴先用,邹学玉,一种 m 序列伪码发生器的产生方法[J].测 参考文献 控技术,2003,,22(9) 3.肖国镇,梁传甲,王育民.伪随机序列及其应用。[M].长沙: 国防工业出版社,1985. 4.吕辉,何晶,王刚。伪随机序列中本原多项式生成算法[J],计 审查意见 算机工程。 指导教师签字: 教研室主任签字: 2010 年 12 月 27 日
1 需求分析 伪随机信号既有随机信号所具有的优良的相关性,又有随机信号所不具备的 规律性. 因此,伪随机信号既易于从干扰信号中被识别和分离出来,又可以方便 地产生和重复,其相关函数接近白噪声的相关函数, 有随机噪声的优点,又避免 了随机噪声的缺点. 伪随机序列具有可确定性、可重复性,易于实现相关接受或 匹配接受,故有很好的抗干扰性能. 因此伪随机序列在相关辩识、伪码测距、导 航、遥控遥测、扩频通信、多址通信、分离多径、误码测试、线形系统测量、 数据加扰、信号同步等方面均有广泛的应用. m 序列是伪随机序列中最重要的 一种,是最长线性移位寄存器序列,m 序列易于实现,具有优良的自相关特 性,在直扩通信系统中用于扩展要传递的信号。可以通过移位寄存器,利用 MATLAB 编程产生 m 序列。 2 概要设计 m 序列是最长线性反馈移位寄存器序列的简称,m 序列是由带线性反馈的 移位寄存器产生的. 由 n 级串联的移位寄存器和和反馈逻辑线路可组成动态移位寄存器,如果 反馈逻辑线路只由模 2 和构成,则称为线性反馈移位寄存器。 带线性反馈逻辑的移位寄存器设定初始状态后,在时钟触发下,每次移位 后各级寄存器会发生变化。其中任何一级寄存器的输出,随着时钟节拍的推移 都会产生一个序列,该序列称为移位寄存器序列。 n 级线性移位寄存器的如图 1 所示:  1c c  0 1  2c   3c nc  1  1nc  1na  2na  3na   1a 0a 输 出 图 1 n 级线性移位寄存器
图中 iC 表示反馈线的两种可能连接方式, iC =1 表示连线接通,第 n-i 级输 出加入反馈中; iC =0 表示连接线断开,第 n-i 级输出未参加反馈。 因此,一般形式的线性反馈逻辑表达式为 a  C a 1  C a 2 2 将等式左面的 na 移至右面,并将 1   n n n   a   C a 0 n 0( C a C 0 n n (mod 2)   C a i n i  1 i  1)  代入上式,则上式可改写 n 为 定义一个与上式相对应的多项式 0 n   i  0 C a  1 i n 其中 x 的幂次表示元素的相应位置。式称为线性反馈移位寄存器的特征多 ( ) F x n   i  0 i C x i 项式,特征多项式与输出序列的周期有密切关系.当 F(x)满足下列三个条件 时,就一定能产生 m 序列: (1) F(x)是不可约的,即不能再分解多项式; (2) F(x)可整除 1px  ,这里 2 1n  ; (3) F(x)不能整除 1qx  ,这里 q
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 序列特性决定 的,它是一种伪随机序列。
分享到:
收藏