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代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
**完整代码获取关注微信公众号天天matlab**