1 简介
本文阐述了扩展频谱通信技术的理论基础和实现方法,利用MATLAB提供的可视化工具Simulink建立了扩频通信系统仿真模型,详细讲述了各模块的设计,并指出了仿真建模中要注意的问题.在给定仿真条件下,运行了仿真程序,得到了预期的仿真结果.同时,利用建立的仿真系统,研究了扩频增益与输出端信噪比的关系,结果表明,在相同误码率下,增大扩频增益,可以提高系统输出端的信噪比,从而提高通信系统的抗干扰能力.
2 部分代码
%生成三类pn码,pn码长度为N位 function [my_sequence]=my_seq(N,model) switch model case 1 my_sequence=sign(my_m_seq(N,[0 0 1 1])-0.5); case 2 my_sequence=sign(my_gold_seq(N)-0.5); case 3 my_sequence=my_walsh_seq(N); end end %walsh码 function [my_walsh_sequence]=my_walsh_seq(N) walsh_code=walsh(ceil(sqrt(N))); my_walsh_sequence=zeros(1,N); for i=1:N my_walsh_sequence(i)=walsh_code(i); end end function Walse_seq=walsh(N) M = ceil(log2(N)); wn=1; %构造Hadamard矩阵 for i=1:M wn1=[wn,wn;wn,-wn]; wn=wn1; end [m,n]=size(wn); Walse_seq=reshape(wn,1,m*n); end %gold码 function [my_gold_sequence]=my_gold_seq(N) %反馈系数为[0 0 0 0 1 1]和[1 0 1 1 0 1]的m序列为一优选对 my_gold_sequence = mod((my_m_seq(N,[0 0 0 0 1 1]) + my_m_seq(N,[1 0 1 1 0 1])), 2); end function [my_m_sequence]=my_m_seq(N,coef) m=length(coef); len=2^m-1; % 得到一个周期的m序列长度 k1=fix(N/len);%取商 k2=rem(N,len);%取余数 y_seq=mseq(coef,m,len);%生成2^m-1位m序列 my_m_sequence=zeros(1,N); %生成N位m序列,循环周期为2^m-1位 for n=1:k1 for i=1:len my_m_sequence(i+(n-1)*len)=y_seq(i); end end if k2 ~= 0 for i=1:k2 my_m_sequence(k1*len+i)=y_seq(i); end end end function [seq]=mseq(coef,m,len) % 此函数用来生成m序列 % coef为反馈系数向量 backQ=0; % 对应寄存器运算后的值,放在第一个寄存器 seq=zeros(1,len); % 给生成的m序列预分配 registers = [1 zeros(1, m-1)]; % 给寄存器分配初始结果 for i=1:len seq(i)=registers(m); backQ = mod(sum(coef.*registers),2); %特定寄存器的值进行异或运算,即相加后模2 registers(2:length(registers)) = registers(1:length(registers)-1); % 移位 registers(1)=backQ; % 把异或的值放在第一个寄存器的位置 end end
3 仿真结果
4 参考文献
[1]范伟, 翟传润, 战兴群. 基于MATLAB的扩频通信系统仿真研究[J]. 微计算机信息, 2006(07S):3.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。