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

📄 ch_est.m

📁 自己写的UWB simulate。其中包括很多东西
💻 M
字号:
%发送和接收合在一块的程序
%修改于2004/11/10

%==========output parameters=============
%peak_h     估计的多径分量的幅度
%t_h        多径分量对应的延时值——相对值,以接收到的信号的起始点为零点


%==========input parameters==============
%rt         接收到的信号,由训练序列和噪声以及多经组成,训练序列全是1
%Ts         采样周期,和发送信号采样周期相同
%N_monocycle    训练序列的符号个数
%gt         本地相关信号,采样周期为Ts,单周期脉冲(一个周期内的波形),脉冲形状可以自由选择,和发射信号脉冲波形相同
%Tf         脉冲周期=脉冲持续时间+空闲时间
%Dg         脉冲持续时间
%-----------------------------------------------
function [peak_h,t_h]=ch_est(rt,Ts,N_monocycle,gt,Tf,Dg,h)


    
%================接收端估计过程======================  
    Num_Tf=Tf/Ts;
    rt_len=length(rt);
    nrt=[1:rt_len];
    Eb=Eb_halfcos(Ts,Dg);
%    figure(10);
%     subplot(3,1,1);                            %接收信号波形
%     plot([0:Ts:(rt_len-1)*Ts],rt);
    ngt=[1:length(gt)];
    
   
   [gt1,ngt1]=sigfold(gt,ngt);
    
    [ft0,nft]=conv_m(rt,nrt,gt1,ngt1);
    ft=ft0*Ts;                                 %卷积相当于能量积分,因此乘以抽样间隔
%     subplot(3,1,2);
%     plot(nft*Ts,ft/Eb);                        %和参考波形卷积的波形
      
    nft_len=length(nft);
    K0=find(nft==0);
    ft_len=nft(nft_len);                 %ft正系数部分的实际长度
    
  
   %=============
       
    for j=1:N_monocycle              %考虑信道存在码间干扰,故每80ns截取并叠加一次
       
       for n=0:Num_Tf-1                     
          TL=n*Ts;
          N0=((j-1)*Tf+TL)/Ts;
          N=round(N0);
          if ((j==1)&(N<0))|((j==N_monocycle)&(N>=ft_len))
              Zj(n+1)=0;
          else
             Zj(n+1)=ft(N+K0);  %由于ft的序号从负数开始,所以要找到序号为1所对应的实际序号K0
          end
      end
        Zk(j,:)=Zj;   %在tao处抽样的结果,得到N-1个向量
    end
    Zk0=sum(Zk)/(Eb*N_monocycle);  % Zk(tao,ak)
%==================================================

    n=[0:(length(Zk0)-1)];
    t=n*Ts;
    
%     subplot(3,1,3);
%     plot(t,Zk0);
    %eval_h=[zeros(1,20/Ts-1),Zk0(20/Ts:1:length(Zk0))];  %CM3和CM4信道条件使用这些语句,目的是消除前20ns内的伪峰值
    
    [peak_h,index_h]=findpeak(Zk0);
    t_h=(index_h-1)*Ts;
    %[peak_h,t_h]=searchpeak(eval_h,Th,Ts);

    figure(11);
    t=[0:Ts:Tf-Ts];
    plot(t,Zk0,'r');

    hold on;
    h_comp=h(1:Tf/Ts);    %CM3和CM4截取信道冲激响应前80ns内的值画图
    stem(t,h_comp,'*');grid;
    legend('Estimated paths','Actual paths');
    hold off;
    title('信道估计结果和实际信道冲激响应');
    xlabel('time(ns)');ylabel('amplitude');
   

⌨️ 快捷键说明

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