【例10-2】 设m序列的生成多项式为g(x)=1+x^3+x^4,求:
(1)m序列的输出及其自相关序列;
(2)脉冲波形成为矩形脉冲p(t)={1 0≤t≤Tc 画出m序列信号的自相关函数;
{0 其它 ,
(3)设脉冲波形为升余弦函数(滚降系数a=0),画出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);
% 求序列自相关
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序列自相关序列')
% 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(1)
subplot(221);
plot(t,mt(1:length(t)));
axis([0 63 -1.2 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);
subplot(223)
plot(t,rt1(length(st):length(st)+length(t)-1));
axis([0 63 -0.2 1.2]); title('m序列矩形成形信号的自相关');xlabel('t');
% sinc脉冲
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);
subplot(224)
t1=-55+dt:dt:Tc*L-dt;
plot(t1,rt2(1:length(t1)));
axis([0 63 -0.5 1.2]); title('m序列sinc成形信号的自相关');xlabel('t');
=========================================================================
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
=========================================================================
function[out]=sigexpand(d,M)
% 将输入的序列扩展成间隔M-1个0的序列
N=length(d);
out=zeros(1,M*N);
for i=0:N-1
out(i*M+1)=d(i+1);
end;
========================================================================