www.pudn.com > tryGUI.rar > dssignal.m


%发送和接收合在一块的程序 
%修改于2004/11/15 
%发送BPSK信号 
%适合于CM3和CM4信道,估计时每80ns平均一次 
%======================发送信号部分=========================== 
 
clear; 
clf; 
 
    %=======第一部分:基本参数======== 
    SNR_db=5;                   %输入信噪比 
    Dg=0.5;                     %高斯脉冲宽度 
    Ts=0.05;                     %信号采样周期 
 
    Tf=80;                      %Tf=80,duty_cycle=1:160 
    Num_Tf=Tf/Ts;               %每个符号持续时间内采样点个数 
 
    Eb=Eb_halfcos(Ts,Dg);       %一个脉冲周期内的码元能量 
     
     %信道估计需要的训练序列长度 
    N_monocycle=10;            
    A=ones(1,10); 
  
    %码元同步需要的训练序列 
    N_Syn=12; 
     
    %数据长度 
    N_Data=1000; 
    Sim_Data=randn(1,N_Data);      %产生数据序列; 
    %--------------------------------------------- 
     
     
     %========第二部分:生成基本波形========== 
     %产生占空比1:160的半余弦脉冲波形,脉冲波形的占空比可以通过Num_Tf调整 
    for n=0:Num_Tf-1 
        gt(n+1)=halfcos_generator(Dg,n*Ts);    
    end 
     
     
    %========第三部分:生成信道冲激响应及高斯白噪声========== 
    Th=Dg;                      %信道冲激响应间隔 
    h0=UWB_SV_channel(2,4,Th);            %信道冲激响应 
    h1=h0(:,2); 
    h=n_upsample(h1,Th,Ts); 
    %============= 
     
     
    Noise_sigma=0%sqrt(Eb/(1*Dg*10^(SNR_db/10)));  %S/N=(Eb/T)/(N0*B)   高斯白噪声 
     
    
 
    
    %============第四部分:信道估计过程========================== 
    %信道估计过程 
    st0=(A'*gt)'; 
    st=reshape(st0,1,[]);                %理想发送信号 
    figure(1); 
    subplot(2,1,1); 
    plot(0:Ts:(length(st)-1)*Ts,st); 
     title('理想发射信号'); 
    xlabel('time(ns)');ylabel('amplitude'); 
 
    rt0=conv(st,h);                       
    rt_len=length(rt0);                 %通过信道后的信号 
    %subplot(4,1,3); 
    %plot([0:Ts:(rt_len-1)*Ts],rt0); 
 
   %------------------ 
 
    rt=rt0   +Noise_sigma*randn(1,rt_len);                            %接收信号 
    subplot(2,1,2); 
    plot([0:Ts:(rt_len-1)*Ts],rt); 
     title('经过SV信道(CM4,信道冲激响应间隔0.5ns,SNR=5dB)'); 
    xlabel('time(ns)');ylabel('amplitude'); 
     
    [peak_h,t_h]=ch_est(rt,Ts,N_monocycle,gt,Tf,Dg,h); 
     
    [Tao,Atten]=selectpath(peak_h,t_h,4);     %选择比较大的多径分量;N_path表示所需要的多径数 
%===================信道估计过程到此结束===================== 
 
 
     
    %==============第五部分:同步以及信号接收============== 
    B=[1,1,1,1,1,-1,-1,1,1,-1,1,-1,1]; 
    Train_seq=B; 
     
     
     
   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);    %卷积编码后的数据 
   pn_code=B; 
   %syn_training=spreadgren(randn(1,12),pn_code);     %同步训练序列 
   spread_Data=spreadgren(coded_Data,pn_code);        %扩频并且加上训练序列(未扩频的)后的数据 
   %trans_data=[syn_training,spread_Data]; 
    
   
      
    Train_st0=(Train_seq'*gt)'; 
    Train_st1=reshape(Train_st0,1,[]);                %理想发送信号 
     Train_rt=conv(Train_st1,h);   
     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('理想发射信号'); 
    xlabel('time(ns)');ylabel('amplitude'); 
     subplot(3,1,2); 
     plot(0:Ts:(length(Train_rt)-1)*Ts,Train_rt); 
     gtext('经过SV信道的信号(CM4,信道冲激响应间隔0.5ns,无噪声'); 
    xlabel('time(ns)');ylabel('amplitude'); 
 
     yt=MRC_combine(Tao,Atten,Train_rt,Tf,Ts,length(Train_seq));     %多径合并过程,不进行相关积分 
      
      
     subplot(3,1,3); 
     plot(0:Ts:(length(yt)-1)*Ts,yt); 
     gtext('Rake接收机合并结果'); 
    xlabel('time(ns)');ylabel('amplitude'); 
      
     %肖婕桢和刘娜的程序从此开始============= 
   %===================== 
    %===================== 
     %===================== 
      %===================== 
       %=====================