freq_syn_timedomain.m
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:1k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function [synchronized, offset] = freq_syn_timedomain( recv_frame,WinStart, WinSize,Delay, T_sample, N_Rx_ant,FreqSyn,AddChFreq )
  2. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  3. %  利用时域延时相同的训练序列样点,进行载波频偏估计及补偿的算法
  4. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  5. if ~AddChFreq
  6.     if FreqSyn
  7.         time_idx = [ 0:length(recv_frame)-1 ] ;
  8.         
  9.         for ant = 1:N_Rx_ant
  10.             
  11.             % 延时相关,取角度
  12.             recv = recv_frame(1,WinStart + 1: WinStart + WinSize , ant);
  13.             recv_delayed = recv_frame(1 , WinStart + Delay + 1 -40 : WinStart + WinSize + Delay -40 , ant);
  14.             offset_metric = sum( recv .* conj( recv_delayed ) );
  15.             offset(ant) = - angle(offset_metric)/(2*pi*Delay*T_sample);
  16.             
  17.             % 载波频偏粗估计纠正, 方法1, 在每条接收天线上进行纠正
  18.             % synchronized(1,:,ant) = recv_frame(1,:,ant).*exp(-j*2*pi*offset(ant).*time_idx*T_sample);
  19.             
  20.         end
  21.         
  22.         % 载波频偏粗估计纠正, 方法2 , 合并一个频偏纠正值,在每条接收天线上进行纠正
  23.         offset = sum(offset)/N_Rx_ant;
  24.         time_idx = repmat(time_idx,[1,1,N_Rx_ant]);
  25.         synchronized = recv_frame.*exp(-j*2*pi*offset.*time_idx*T_sample);  
  26.         
  27.     else
  28.         synchronized = recv_frame;
  29.         offset = 0;
  30.     end
  31. else
  32.     synchronized = NaN;
  33.     offset = NaN;
  34. end