成都学院(成都大学)课程设计报告 if sum(xor(M_Seq', Recv_Data_Nois(m:m+Mseq_L-1))) > Mseq_L*Up Despread_Data_Nois(i) = 1; else
Despread_Data_Nois(i) = 0; end
图3-3.10解调后有噪声数据能量
图3-3.11解调后有噪声数据能量
14
成都学院(成都大学)课程设计报告 第4章 心得和结论
通过这次的直接序列扩频系统的设计与仿真,我加深了对扩频系统理论知识的理解,懂得了直接扩频系统的原理所在以及了解扩频码的产生原理,扩频技术应用的两个方面。初步了解和掌握现代移动通信系统的基本组成、基本原理、组网技术及典型通信系统的设计、调试,理解其工作原理。并且经过分析,通过利用MATLAB的m文件的编程及仿真,掌握了一定的软件仿真能力。在过程中也遇到了一些问题,无论是查找资料还是Matlab编写,调试程序都通过努力得以解决,同时也发现了自己在学习中存在的很多问题,例如噪声的形成之类的,还有就是对Matlab很使用的熟悉程度。软件设计以及系统流程图很重要。框图、编程、模块一步一步的进行,这样可以排除很多错误。可通过以上分析实验,利用MATLAB的m文件的编程及仿真,可以知道扩频通信系统的过程和工作原理,以及它的主要特点,尤其是它在抑制干扰方面的有效性。因此,从编程和模框图实验可知,分析扩频和解扩,PSK调制和解调,在抑制噪声方面的作用。通过仿真,说明扩频信号在抑制干扰方面的有效性。利用仿真,说明信号传输过程中的误码率。直接序列扩频通信系统具有很强的抗干扰性能,误码率低,因此其广泛用于保密通信系统中。
15
成都学院(成都大学)课程设计报告 附录
clc clear all close all
Mseq_L = 255; Data_L = 50;
%产生伪随机信号
M_Seq = idinput(Mseq_L, 'prbs', [0 1], [0 1]); figure; stairs(M_Seq); ylim([-0.5 1.5]); xlim([0 Mseq_L+10]); title('m序列');
% 随机数据,长度为50
Randm_Data = randsrc(1, Data_L, [0 1]); Randm_Data_L = Data_L * Mseq_L; figure;
stairs(Randm_Data); ylim([-0.5 1.5]); title('随机数据');
% 扩频
Spread_Data = zeros(1, Data_L*Mseq_L); contain = ones(1, Mseq_L); for i = 1:Data_L
contain = ones(1, Mseq_L)*Randm_Data(i);
Spread_Data(((i-1)*Mseq_L+1):i*Mseq_L) = xor(contain, M_Seq'); end figure;
stairs(Spread_Data(1:50)); ylim([-0.5 1.5]); title('扩频数据');
%调制
Psk_Data = pskmod(Spread_Data, 2); figure;
plot((1:50), Psk_Data(1:50)); ylim([-1.5 1.5]);
title('经BPSK调制后的数据');
16
成都学院(成都大学)课程设计报告 % 附加白噪声
Recv_Data_Nois = awgn(Psk_Data, -20, 'measured', 'dB'); figure;
stairs(Recv_Data_Nois(1:50)); title('附加白噪声数据');
%解调
Recv_Data = pskdemod(Psk_Data, 2); Recv_Data_L = length(Recv_Data); figure;
stairs(Recv_Data(1:50)); ylim([-0.5 1.5]);
title('解调无噪声数据');
Recv_Data = [Recv_Data zeros(1, Mseq_L*4)];
Recv_Data_Nois = pskdemod(Recv_Data_Nois, 2); Recv_Data_Nois_L = length(Recv_Data_Nois); figure;
stairs(Recv_Data_Nois(1:50)); ylim([-0.5 1.5]);
title('解调有噪声数据');
Recv_Data_Nois = [Recv_Data_Nois zeros(1, Mseq_L*4)];
Despread_Data = zeros(1, Data_L); Despread_Data_Nois = zeros(1, Data_L);
Up = 0.527; Dn = 0.485;
VCodes = 5;
Power = zeros(1, Mseq_L*VCodes); for i=1:Mseq_L*VCodes
Power(i) = sum(xor(M_Seq', Recv_Data(i:i+Mseq_L-1)))/Mseq_L; end
figure; plot(Power);
title('无噪声能量对比数据');
Power_Nois = zeros(1, Mseq_L*VCodes);
17
成都学院(成都大学)课程设计报告 for i=1:Mseq_L*VCodes
Power_Nois(i) = sum(xor(M_Seq', Recv_Data_Nois(i:i+Mseq_L-1)))/Mseq_L; end
figure;
plot(Power_Nois);
m = 1; i = 1;
while(m <= (Recv_Data_L-Mseq_L+1))
toVerf = Recv_Data(m: m+Mseq_L*VCodes-1); totalVCodes = 0; yesVCodes = 0; noVCodes = 0; while (totalVCodes < VCodes)
if (totalVCodes*Mseq_L+m > Recv_Data_L) break; end
power = sum(xor(M_Seq',
toVerf((totalVCodes*Mseq_L+1):(totalVCodes+1)*Mseq_L)))/Mseq_L; if((power >= Up) || (power <= Dn)) yesVCodes = yesVCodes + 1; end
totalVCodes = totalVCodes + 1; end
if(yesVCodes < totalVCodes*0.7) m = m+1; continue; end
if sum(xor(M_Seq', Recv_Data(m:m+Mseq_L-1))) > Mseq_L*Up Despread_Data(i) = 1; else
Despread_Data(i) = 0; end
m = m + Mseq_L; i = i + 1; end
m = 1; i = 1;
18