五、matlab程序及仿真结果图
1、生成m序列及m序列性质
实验产生7位m序列,频率100Hz,模拟线性反馈移位寄存器序列,原理图如下:
clear all; clc;
X1=0;X2=0;X3=1;
m=350; %重复50遍的7位单极性m序列 for i=1:m
Y3=X3; Y2=X2; Y1=X1; X3=Y2; X2=Y1; X1=xor(Y3,Y1); L(i)=Y1; end
for i=1:m
M(i)=1-2*L(i); %将单极性m序列变为双极性m序列 end
k=1:1:m; figure(1)
subplot(3,1,1) %做m序列图 stem(k-1,M); xlabel('k');
ylabel('M序列');
title('移位寄存器产生的双极性7位M序列') ; subplot(3,1,2) ym=fft(M,4096); magm=abs(ym); %求双极性m序列频谱 plot(fm,magm(1:2048)*24096); title('双极性7位M序列的频谱') [a,b]=xcorr(M,'unbiased'); subplot(3,1,3) %求双极性m序列自相关函数 plot(b,a);
title('双极性7位M序列的自相关函数');
由上图可以看出,7位m序列为1,-1,-1,-1,1,-1,1。另外,自相关函数的图形比较尖锐,最大值为1,最小值为-17,符合理论结果。
2、生成50位随机待发送二进制比特序列,并进行扩频编码
生成的信息码频率为1007Hz,利用m序列编码后,频率变为100Hz。 N=50;a=0;
x_rand=rand(1,N); %产生50个0与1之间随机数 for i=1:N
if x_rand(i)>=0.5 %大于等于0.5的取1,小于0.5的取0 x(i)=1;a=a+1; else x(i)=0; end end
t=0:N-1; figure(2) %做信息码图 subplot(2,1,1) stem(t,x);
title('扩频前待发送二进制信息序列'); tt=0:349; subplot(2,1,2) l=1:7*N; y(l)=0; for i=1:N k=7*i-6;
y(k)=x(i);
k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i); end s(l)=0;
for i=1:350 %扩频后,码率变为1007*7=100Hz s(i)=xor(L(i),y(i)); end
tt=0:7*N-1; stem(tt,s);
title('扩频后的待发送序列码');
3、对扩频前后信号进行BPSK调制,观察其时域波形
BPSK调制采用2kHz信号cos(2*2000*t)作为载波 figure(3)
subplot(2,1,2) fs=2000;
ts=0:0.00001:3.5-0.00001;%为了使信号看起来更光滑,作图时采样频率为100kHz % ps=cos(2*pi*fs*ts);
s_b=rectpulse(s,1000); %将冲激信号补成矩形信号
s_bpsk=(1-2.*s_b).*cos(2*pi*fs*ts);%扩频后信号BPSK调制时域波形,(1-2.*s_b)
是1,-1序列
plot(ts,s_bpsk); xlabel('s');
axis([0.055,0.085,-1.2,1.2])
title('扩频后bpsk信号时域波形'); subplot(2,1,1)
s_bb=rectpulse(x,7000);
s_bpskb=(1-2.*s_bb).*cos(2*pi*fs*ts);%无扩频信号BPSK调制时域波形 plot(ts,s_bpskb); xlabel('s');
axis([0.055,0.085,-1.2,1.2]);
title('扩频前bpsk信号时域波形')
可以看出,1007Hz的无扩频信号每0.07s时由于序列极性变换产生相位变换,100Hz的扩频后调制信号每0.01s由于序列极性变换产生相位变换。