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

📄 sim_main.m

📁 超宽带系统链路matlab仿真程序 超宽带系统简单仿真平台
💻 M
字号:
%发送和接收合在一块的程序
%修改于2004/11/29
%评注:信噪比较低时会出现误码率,加上扩频码(barker码13)低占空比情况下也具有较好的性能
%发送BPSK信号
%适合于CM3和CM4信道,估计时每80ns平均一次
%======================发送信号部分===========================

clear;


    %=======第一部分:基本参数========
    %SNR_db=5;                   %输入信噪比
    Dg=0.5;                     %高斯脉冲宽度
    Ts=0.05;                     %信号采样间隔

    Tf=80;                      %Tf=80,duty_cycle=1:160
    Num_Tf=Tf/Ts;               %每个符号持续时间内采样点个数
    Num_pluse= Dg/Ts;

    Eb=Eb_halfcos(Ts,Dg);       %一个脉冲周期内的码元能量
    
     %信道估计需要的训练序列长度
    N_monocycle=10;           
    A=ones(1,N_monocycle);
    
    %数据长度
     N_Data=100;
     
      %========第二部分:生成基本波形==========
     %产生占空比1:160的半余弦脉冲波形,脉冲波形的占空比可以通过Tf调整
    gt=waveshape(Dg,Ts,Tf);
    gt_len=length(gt);
    
    %========第三部分:生成信道冲激响应及高斯白噪声==========
    Th=Dg;                      %信道冲激响应间隔
    h0=UWB_SV_channel(2,4,Th);            %信道冲激响应
    h1=h0(:,2);
    h=n_upsample(h1,Th,Ts);
    
    clear h0 h1 Th;
    %=============
    
    pn_code=[1,1,1,1,1,-1,-1,1,1,-1,1,-1,1];
    %pn_code=1;
    N_symbol = length (pn_code);                          % PN码长度
    
    gt1=waveshape(Dg,Ts,5);                               %实际的数据波形,占空比为1:Tf1
    
snrstep=0.5;
SNR_db=[0:snrstep:8];
snr_len=length(SNR_db);
sim_times=2;
for p=1:sim_times        %第p次仿真,每次仿真中都计算snr_len种SNR_db情况下的误码率
  for k=1:snr_len    
    
   
    Sim_Data=randn(1,N_Data)>0;      %产生数据序列;
  
    %---------------------------------------------
    
    Noise_sigma=sqrt(Eb/(1*Dg*10^(SNR_db(k)/10)));  %S/N=(Eb/T)/(N0*B)   高斯白噪声
    
   

   
    %============第四部分:信道估计过程==========================
    %信道估计过程
    st=gt'*A;
    st=reshape(st,1,[]);                %理想发送信号
%     figure(1);
%     subplot(2,1,1);
%     plot(0:Ts:(length(st)-1)*Ts,st);

    rt=conv(st,h);                      
    rt_len=length(rt);                 %通过信道后的信号
    %subplot(4,1,3);
    %plot([0:Ts:(rt_len-1)*Ts],rt0);

   %------------------

    rt=rt +Noise_sigma*randn(1,rt_len);                            %接收信号
%     subplot(2,1,2);
%     plot([0:Ts:(rt_len-1)*Ts],rt);
    
    [peak_h,t_h]=ch_est(rt,Ts,N_monocycle,gt,Tf,Dg,h);
    
    N_path=4;
    
    [Tao,Atten]=selectpath(peak_h,t_h,N_path);     %选择比较大的多径分量;N_path表示所需要的多径数
    
    clear st rt rt_len peak_h t_h;
%===================信道估计过程到此结束=====================


    
    %==============第五部分:同步以及信号接收==============
    
    
    
   %g=[1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 1];    %卷积编码生成矩阵
   %k0=1;                                   %编码器一次输入个数

   %coded_Data=cnv_encd(g,k0,Sim_Data);    %卷积编码后的数据
   %Total_Num=length(coded_Data);
   
   %syn_training=spreadgren(randn(1,12),pn_code);     %同步训练序列
   spread_Data=spreadgren(Sim_Data,pn_code);        %扩频并且加上训练序列(未扩频的)后的数据,[1,-1]
   %trans_data=[syn_training,spread_Data];
   
%     Total_symbol=N_Data*N_symbol;
%     for i=1:Total_symbol
%         tempa=spread_Data(i);
%         for j=1:gt_len
%             tempb=gt(j);
%             k=(i-1)*gt_len+j;
%             Train_st1(k)=tempa*tempb;
%         end
%     end
    Train_st0=gt1'*spread_Data;
    Train_st1=reshape(Train_st0,1,[]);                %理想发送信号
     Train_rt=conv(Train_st1,h);  
     
     clear Train_st0 Train_st1 spread_Data;
     
     Train_rtlen=length(Train_rt);
     Train_rt=Train_rt + Noise_sigma*randn(1,Train_rtlen);                            %接收信号
     
     
     
%      figure(2);
%      subplot(3,1,1);
%      plot(0:Ts:(length(Train_st1)-1)*Ts,Train_st1);
%      title('理想发射信号');
%      gtext('time(ns)');ylabel('amplitude');
%      subplot(3,1,2);
%      plot(0:Ts:(length(Train_rt)-1)*Ts,Train_rt);
%      title('接收机输入信号(CM4,信道冲激响应间隔0.5ns,SNR=5dB)');
%      gtext('time(ns)');ylabel('amplitude');
     %ref_st=reshape((pn_code'*gt)',1,[]);
     %yt=MRC_combine(Tao,Atten,Train_rt,Tf,Ts,N_Data*N_symbol);     %多径合并过程,不进行相关积分
     yn=MRC_Rake(Tao,Atten,Train_rt,Dg,10,Ts,N_Data,pn_code,gt1);
     
     
%      subplot(3,1,3);
%      plot(0:Ts:(length(yt)-1)*Ts,yt);
%      title('RAKE多径合并结果(CM4,信道冲激响应间隔0.5ns,SNR=5dB)');
%      xlabel('time(ns)');ylabel('amplitude');
     
     %肖婕桢和刘娜的程序从此开始=============
   %=====================
    %=====================
     %=====================
      %=====================
       %===================== 
    




    err_bit_rate(p,k)=sum(abs(yn-Sim_Data))/N_Data;
    clear yn Sim_Data;
    clear Tao Atten Train_rt Noise_sigma;
  end
end
ave_err=sum(err_bit_rate)/sim_times;
%[decoder_output,survivor_state,cumulated_metric]=viterbi(g,k0,Rx_Dispread);


% %画图
% figure(3);
% plot(0:Ts:79*Ts,gt(1:80));
% title('半余弦脉冲波形');
% xlabel('time(ns)');ylabel('amplitude');
% 
% temp=ones(1,100);
% source_data=reshape((Sim_Data'*temp)',1,[]);
% out_data=reshape((Rx_Dispread'*temp)',1,[]);
% figure(4);
% subplot(2,2,1);
% plot(source_data);axis([0 1000 -0.5 1.5 ]);
% title('发射数据');
%     
% subplot(2,2,2);
% plot(4500*Ts:Ts:14500*Ts,Train_st1(4500:14500));axis([4500*Ts 14500*Ts -1 1]);
% title('理想发射波形');
% xlabel('time(ns)');ylabel('amplitude');
% subplot(2,2,3);
% plot(out_data);axis([ 0 1000 -0.5 1.5]);
% title('判决结果');
% subplot(2,2,4);
% plot(4500*Ts:Ts:14500*Ts,Train_rt(4500:14500));axis([4500*Ts 14500*Ts -0.5 0.5]);
% %plot(Train_rt(4500:14500));axis([0 10000 -0.5 0.5 ]);
% title('接收机输入信号');
% xlabel('time(ns)');ylabel('amplitude');
    
       
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -