📄 ideal_qmf.m
字号:
% 2采样理想情况,无干扰,即信号+白噪声,普通DSSS系统
%与经过镜像滤波器处理相比较
%这个程序建立了信号从扩频、加干扰信号到解扩、求误码率的仿真模型系统。
echo off
clear
tic
Lc=64;
N=100; %数据长度
po=1;
M=2; %一个chip中的采样点数
fd=1; %数据速率
f_pn=Lc*fd; % chip 速率
fs=M*f_pn; % 采样频率
Ts=1/fs; %抽样间隔
%SJR_in_dB=10;
snr_in_dB=-4:2:8;
level=3;
T=2.^level;
for m=1:length(snr_in_dB);
Num_err1=0;
Num_err2=0;
Num_err3=0;
snr=10^(snr_in_dB(m)/10);
sgma=1; %噪声的标准方差设置为固定值
Eb=2*sgma^2*snr; %达到设定信噪比所需的信号幅度平方
E_chip=Eb/(Lc*M); %每码片的能量
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%产生M序列64
pn1=M_pn1([1 1 0 0 1 1]);
pn=2*pn1-1;
for i=1:Lc
pn_seq((i-1)*M+1:i*M)=pn(i)*ones(1,M);
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%产生数据流
for qq=1:N
temp1=rand(1,po);
for i=1:po
if (temp1(i)<0.5),
data(i)=-1;
else
data(i)=1;
end;
end;
trans_sig=sqrt(E_chip)*kron(data(i),pn_seq); %已扩信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%经过重构滤波器处理
sig=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];
temp=rand;
%%选择走哪组滤波器组
%%选择第一组滤波器组,低通-低通-低通,解扩时,走对称滤波器组低通-低通-低通
if (temp<1/T) %temp< 0.125
channel=1;
sig(channel)=data(i);
sig_spread=spread_num(sig,channel);
end;
%%选择第二组滤波器组,高通-低通-低通,解扩时,走对称滤波器组:高通-低通-低通
if((temp>1/T)&(temp<2/T)) % 0.125<temp<0.25
channel=2;
sig(channel)=data(i);
sig_spread=spread_num(sig,channel);
end;
%%选择第三组滤波器组,低通-高通-低通,解扩时,走对称滤波器组:低通-高通-低通
if((temp>2/T)&(temp<3/T)) % 0.25<temp<0.375
channel=3;
sig(channel)=data(i);
sig_spread=spread_num(sig,channel);
end;
%%第四组:高通-高通-低通,解扩时:低通-高通-高通
if((temp>3/T)&(temp<4/T)) %0.375<temp<0.5
channel=4;
sig(channel)=data(i);
sig_spread=spread_num(sig,channel);
end;
%%第五组:低通-低通-高通,解扩时:高通-低通-低通
if((temp>4/T)&(temp<5/T)) %0.5<temp<0.625
channel=5;
sig(channel)=data(i);
sig_spread=spread_num(sig,channel);
end;
%%第六组:高通-低通-高通,解扩时:高通-低通-高通
if((temp>5/T)&(temp<6/T)) %0.625<temp<0.75
channel=6;
sig(channel)=data(i);
sig_spread=spread_num(sig,channel);
end;
%%第七组:低通-高通-高通,解扩时:高通-高通-低通
if((temp>6/T)&(temp<7/T)) %0.75<temp<0.875
channel=7;
sig(channel)=data(i);
sig_spread=spread_num(sig,channel);
end;
%%第八组:高通-高通-高通,解扩时:高通-高通-高通
if((temp>7/T)&(temp<8/T)) %0.875<temp<1
channel=8;
sig(channel)=data(i);
sig_spread=spread_num(sig,channel);
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%产生高斯白噪声
noise=randn(1,Lc*fd*M);
white_noise=sgma*noise;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%产生接收信号
sig_rec1=trans_sig+white_noise;
sig_rec2= sqrt(Eb)*sig_spread'+white_noise;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%接受信号经过分解滤波器还原
if ( channel==1)
DEF=[0 0 0];
end_sig=de_num(DEF,sig_rec2');
end;
if ( channel==2)
DEF=[0 0 1];
end_sig=de_num(DEF,sig_rec2');
end;
if ( channel==3)
DEF=[0 1 0];
end_sig=de_num(DEF,sig_rec2');
end;
if ( channel==4)
DEF=[0 1 1];
end_sig=de_num(DEF,sig_rec2');
end;
if ( channel==5)
DEF=[1 0 0];
end_sig=de_num(DEF,sig_rec2');
end;
if ( channel==6)
DEF=[1 0 1];
end_sig=de_num(DEF,sig_rec2');
end;
if ( channel==7)
DEF=[1 1 0];
end_sig=de_num(DEF,sig_rec2');
end;
if ( channel==8)
DEF=[1 1 1];
end_sig=de_num(DEF,sig_rec2');
end;
sig_rec3=end_sig';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:po;
sig_des1=sig_rec1.*pn_seq;
%判决
temp11=sum(sig_des1);
if temp11>=0;
de_data(i)=1;
else
de_data(i)=-1;
end;
if de_data(i)~=data(i);
Num_err1=Num_err1+1;
end;
temp12= sig_rec3(channel);
if temp12>=0;
de_data(i)=1;
else
de_data(i)=-1;
end;
if de_data(i)~=data(i);
Num_err2=Num_err2+1;
end;
end;
end;
p1(m)=Num_err1/N;
p2(m)=Num_err2/N;
end;
semilogy(snr_in_dB,p1,'-or',snr_in_dB,p2,'-*b');grid;%%,snr_in_dB,p3,'-+g'
axis([-4,8,0.00001,1]);
legend('DSSS','PR-QMF');
title('DSSS与PR-QMF在AWGN下');
xlabel('Eb/N0');
ylabel('误码率Pe');
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -