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

📄 rx_fine_time_sync.m

📁 MATLAB Simulation of OFDM System
💻 M
字号:


function fine_time_est = rx_fine_time_sync(input_signal, sim_options);

global sim_consts;

[n_tx_antennas, n_rx_antennas] = get_n_antennas(sim_options);

if sim_options.FineTimeSync
   %定时搜索窗口的大小设为130,注意前导中有10个短训练符合(长16×10)
   start_search=130;
   end_search=200;
   %通过计算接收信号与前64样值长训练符号为参考信号的相关系数实现的。
   %符号定时在长训练符号的起点。
   %获取时域的长训练符合
   long_tr_symbols = tx_freqd_to_timed(sim_consts.LongTrainingSymbols);
   
   if sim_options.UseTxDiv 
       %为什么要交换?
       %注意在长训练符号之前有循环前缀,回忆在tx_gen_preamble.m中有
       %if ~sim_options.UseTxDiv
       %long_trs_signal = [long_tr_symbol(64-2*16+1:64) long_tr_symbol long_tr_symbol];
       %else
       % long_trs_signal(1,:) = sqrt(2)*[long_tr_symbol(64-16+1:64) long_tr_symbol ...
        % zeros(1,80)];
        % 所以要变成下面的形式。这样才得到相同序列的互相关,有最大值。
      long_trs = [long_tr_symbols(49:64) long_tr_symbols(1:48)];
   else
      long_trs = [long_tr_symbols(33:64) long_tr_symbols(1:32)];
   end
   
   time_corr_long = zeros(n_rx_antennas,end_search-start_search+1);
   
   for k=1:n_rx_antennas   
      % 计算互相关函数,参考《OFDM无线局域网》39页(2.11)式。    
      for idx=start_search:end_search
         time_corr_long(k,idx-start_search+1) = sum((input_signal(k,idx:idx+63).*conj(long_trs)));
      end
   end
   
   %如果采用了两个接收天线求和。
   time_corr_long = sum(abs(time_corr_long),1);
   [max_peak_long,long_search_idx] = max(abs(time_corr_long));
   %与互相关系数的最大绝对值对应的n值(此处为idx)就是符号定时的估计值。
   %为什么还要加16或32?因为定时在循环前缀之后,长训练符号的起点,故要加上循环前缀的长度。
   if sim_options.UseTxDiv
      fine_time_est = start_search-1 + long_search_idx+16;
   else
      fine_time_est = start_search-1 + long_search_idx+32;
   end
   
else
   % Magic numbers
   if ~sim_options.UseTxDiv
      fine_time_est = 194;  % Why is 194?  130+64
   else
      fine_time_est = 194-16;
   end
end

%keyboard

⌨️ 快捷键说明

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