直接序列扩频.docx
《直接序列扩频.docx》由会员分享,可在线阅读,更多相关《直接序列扩频.docx(10页珍藏版)》请在冰豆网上搜索。
直接序列扩频
一、实验目的:
1、熟悉MATLAB语言的基本用法;
2、掌握MATLAB语言中数据信号的产生;
3、掌握直接序列扩频信号的产生;
4、掌握直接序列扩频信号的解扩方法;
5、掌握MATLAB语言中信号频谱的绘制方法。
二、实验原理:
(1)利用MATLAB随机产生数据比特;利用MATLAB随机生成PN序列;将数据比特与PN序列相乘完成信号扩频;将扩频信号与PN序列再次相乘完成解扩。
图1直接序列扩频系统原理图
(2)最大相关峰值解扩,就是设置一个标准门限,然后通过条件判断将信号值变为1,-1,从而将原先加噪的扩频信号解扩。
三、实验步骤:
程序代码:
Wave_test2.m
clearall;
clc;
%***********************
%基本要求内容
len=5;%要产生的数据长度;
N=10;%一个符号用10个采样点表示
signal=randi([01],1,len);%randi产生的数据范围[0,1],产生的大小1*len
signal2=2*signal-1;%将数据范围变为[-1,1]
signal3=repmat(signal2,N,1);%将数据进行复制,将signal2复制为N行1列
signal4=reshape(signal3,1,N*len);%将signal3变形为1行N*len列
figure
(1);
subplot(411);
stem(signal4);
title('原始采样信号');
%***********
%产生PN码,长度为为N*Len
PN1=randi([01],1,N*len);
PN2=2*PN1-1;
subplot(412);
stem(PN2);
title('PN序列');
%************
ds1=signal4.*PN2;%进行扩频
subplot(413);
stem(ds1);
title('扩频信号');
%************
ds2=ds1.*PN2;
subplot(414);
stem(ds2);
title('解扩信号');
%********************************
%画频谱图
NS=512;
fft_signal4=fft(signal4,NS);
fft_PN2=fft(PN2,NS);
fft_ds1=fft(ds1,NS);
fft_ds2=fft(ds2,NS);
figure
(2);
subplot(411);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_signal4)));
title('原始采样信号频谱');
subplot(412);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_PN2)));
title('PN码频谱');
subplot(413);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_ds1)));
title('扩频信号频谱');
subplot(414);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_ds2)));
title('解扩信号频谱');
%********************************************
%提高要求内容。
coef=[011];%反馈系数
reg=[001];%移位寄存器初始状态
len=50;%需要生产的m序列的长度
m_code=zeros(1,len);
m=3;%移位寄存器级数
fori=1:
len
m_code(i)=reg(end);
reg_next=mod(sum(reg.*coef),2);
reg=[reg_nextreg(1:
m-1)];
end
figure(3);
subplot(311);
stem(signal4);
title('原始信号');
%******
subplot(312);
stem(m_code);
title('m序列');
%*********
PN3=2*m_code-1;%将m序列变为[-11]形成PN3码
subplot(313);
stem(PN3);
title('用m序列产生的PN3');
%*****************************
%画频谱
NS=512;
fft_signal4=fft(signal4,NS);
fft_m_code=fft(m_code,NS);
fft_PN3=fft(PN3,NS);
figure(4);
subplot(311);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_signal4)));
title('原始采样信号频谱');
subplot(312);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_m_code)));
title('m序列频谱');
subplot(313);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_PN3)));
title('PN3频谱');
%***************************
%加噪声并相对峰值解扩
figure(5);
ds3=signal4.*PN3;%用PN3对信号扩频
subplot(311);
stem(ds3);
title('用PN3进行扩频后的信号');
ds3_addnoise=awgn(ds3,1,'measured');%对扩频信号加噪
subplot(312);
stem(ds3_addnoise);
title('对扩频后的信号添加一个高斯噪声');
%********
%利用最大相关峰值解扩
k=0.25;%门限
ds3_addnoise=(ds3_addnoise+1)./2;
k=(k+1)/2;
ds4=1*(ds3_addnoise>k);
ds4=2*ds4-1;
subplot(313);
stem(ds4);
title('最大相关峰值解扩');
%*********************
%画频谱
figure(6);
fft_ds3=fft(ds3,NS);
fft_ds3_addnoise=fft(ds3_addnoise,NS);
fft_ds4=fft(ds4,NS);
subplot(311);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_ds3)));
title('扩频信号频谱');
subplot(312);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_ds3_addnoise)));
title('加噪声后的信号频谱');
subplot(313);
plot((-NS/2+1):
NS/2,abs(fftshift(fft_ds4)));
title('最大相关峰值接扩后信号频谱');
四、结果与分析:
1.基本要求的实验结果:
Figure1
Figure2
Figure2
2.提高要求的实验结果
Figure3
Figure4
Figure5
Figure6
2.实验分析
(1)对于基本实验要求部分,是一个理论上的信号扩频与解扩的模拟,在扩频信号没有收到噪声干扰的情况下,解扩出的信号与原始信号完全相同。
这位实际提供了理论支撑,而要应对实际中噪声等各种因素的影响就要求设计出不同的加扩解扩的算法。
(2)提高要求的实验内容部分,就是加上了一个噪声来对加扩后的信号进行干扰。
这时,解扩方法采用最大相关峰值解扩。
通过解扩后信号与加扩前的信号对比发现,这种解扩方法的还原度比较高,但有一定的随机性。
对于实际应用来说,这种加扩,解扩方法显然也不可取。
(3)扩频技术就是扩展频谱通信技术,主要是使用伪随机序列码对基带信号进行频谱的扩展,提高信号抗干扰性能和信号的隐蔽性,并且能够使得信号在较差的环境下传输。
通过对扩频技术的了解,以及理论分析,最后通过使用Matlab软件对直接序列扩频的仿真,得到以下结论:
实现了信号的频谱扩展。
扩频通信使用高速率的伪随机码序列对基带信号进行扩频调制,低速码元被调制在了高速的伪随机码序列上。
在频谱图上分析可知,基带信号的频谱被扩展到一个更宽的频谱上,使得信号的频谱均匀的分布在很宽的频谱上,从而提高了信号的抗干扰能力,以及信号的隐蔽性。
五、心得体会
(1)通过该课题设计,加强我对信号与系统课程的理解和掌握。
Matlab是一种高性能的用于工程计算的编程软件,它具有强大的数学计算、算法推导、建模仿真、图形绘制等功能,在信号处理方面有着得天独厚的优势。
(2)理论上的研究仿真都只能为实际提供理论依据以及思考方向,在面临实际问题是,还是必须结合实际问题来在理论的基础上找到合适的解决办法。
THANKS!
!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考