⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ideal_qmf.m

📁 建立了信号从扩频、加干扰信号到解扩、求误码率的仿真模型系统。 经过小波镜像处理的与理想的状况的比较。
💻 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 + -