m序列的仿真验证
一、实验目的:利用matlab验证m序列的产生方法及其自相关特性
二、实验要求:设m序列的生成多项式为g(x )=1 x3 x4,求出
)1) m序列的输出及其自相关序列
)2)脉冲成形为p(t )=1
0
0其他
画出该m序列信号自相关函数
(3)脉冲波形进行馀弦变换(=0),绘制其m序列信号自相关函数。
源代码
clear 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 ) 153360-1:1 ) )/N;
图形(1)。
辅助(222 )。
stem(ms ) 153360end );
axis([063-0.31.2]; title(m序列自相关序列) )。
由%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 );
图形(1)。
辅助(221;
plot(t,mt ) 1:长度t );
axis([063-0.31.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 );
辅助(223 )。
plot(t,rt1 ) length(ST ) : length (ST ) length(t )-1 );
axis([063-0.31.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 );
辅助(224;
t1=-55 dt:dt:Tc*L-dt;
%plot(t,mt ) 1:长度(t );
plot(T1,RT2 ) 1: length (t1 );
axis([063-0.51.2]; title(m系列since成形信号的自相关); xlabel(t ) )。
所需的函数程序
function[out]=SIGexpand(d,m ) ) ) ) ) ) ) ) )。
n=length(d );
out=Zeros(m,n );
out (1, )=d;
out=reshape(out,1,M*N );
函数[ out ]=mgen (g,state,n ) )。
%输入g:m序列生成多项式(十进制输入) ) ) ) ) ) ) ) ) ) ) ) )。
%state:寄存器初始状态(十进制输入) ) ) ) ) ) ) ) ) )。
%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 );
自定义状态
=[acurstate(1:m-2 ) ]
结束
实验结果: