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

📄 sym_timing.m

📁 OFDM的详细仿真代码
💻 M
字号:
function [timed_sym , err_sym_timing] = sym_timing( coarse_freq_out ,N_subc,PrefixRatio,N_sym,N_tran_sym,known_training,...
    Window2 ,TimingAhead, N_Rx_ant,TurnOn )

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 和已知的序列求相关, 得到符号定时位置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if TurnOn
    
    % 得到已知的训练序列的时域样点值
    len_ofdm_sym = (N_subc + N_subc*PrefixRatio);
    syn_frame = sqrt(N_subc) * ifft( fftshift( known_training , 1 ) );
    cp = syn_frame(N_subc - N_subc*PrefixRatio + 1:N_subc ,:,:);
    training_frame = [cp;syn_frame];
    
    % 只是单发送天线情况,多发送天线使用什么序列??
    training_frame = reshape(training_frame,[1, len_ofdm_sym*N_tran_sym ]);  
    
    for ant = 1: N_Rx_ant
        recv_tmp = coarse_freq_out(:,:,ant);
        
        training_timing = training_frame( 1, len_ofdm_sym + 1:len_ofdm_sym + Window2 );
        
        % 和已知的序列求相关,得到符号定时位置的估计
        
        % 搜索第二个OFDM符号, 开始搜索的位置是len_ofdm_sym*3/4, 结束搜索的位置len_ofdm_sym*5/4  
        cnt = 1;
        start_sample = len_ofdm_sym*3/4;
        end_sample = len_ofdm_sym*5/4;
        for start_idx = start_sample:end_sample      
            correlation(cnt) = sum( (recv_tmp(start_idx : start_idx + Window2 - 1).*conj(training_timing)) );
            cnt = cnt + 1;
        end          
        [max_value max_idx] = max(correlation); 
        timing_idx = max_idx + start_sample - 1;    % 最佳定时值: len_ofdm_sym + 1
        
        idx_cnt(ant) = timing_idx - TimingAhead;         
        
    end
    
    % 计算得到多条天线的加权定时位置
    idx = sum(idx_cnt)/N_Rx_ant;
    
    % 定时截取
    timed_sym = coarse_freq_out( 1, idx :idx + (N_sym + N_tran_sym - 1)*len_ofdm_sym - 1 , :);
    
    % 计算定时误差的样点数
    err_sym_timing = ( len_ofdm_sym + 1) - idx ;
    
else
    
    timed_sym = coarse_freq_out( 1, N_subc*(1+PrefixRatio) + 1:N_subc*(1+PrefixRatio)*(N_sym + N_tran_sym), :);
    err_sym_timing = 0;
    
end

⌨️ 快捷键说明

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