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

📄 fine_freq_syn.m

📁 OFDM的详细仿真代码
💻 M
字号:
function [fine_freq_out,offset] = fine_freq_syn( timed_sym,WinStart2, WinSize2, Delay3, T_sample,N_Rx_ant,delta_fc,TurnOn )

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 精频偏估计

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if TurnOn
    
    time_idx = [ 0 : length(timed_sym) - 1 ] ;
    for ant = 1:N_Rx_ant
        
        % 延时相关,取角度
        recv = timed_sym(1,WinStart2  : WinStart2 + WinSize2 - 1, ant);
        recv_delayed = timed_sym(1,WinStart2 + Delay3 : WinStart2 + WinSize2 + Delay3 - 1, ant);
        
        offset_metric = sum( recv .* conj( recv_delayed ) );
        offset(ant) = - angle(offset_metric)/(2*pi*Delay3*T_sample);
        
        % 载波频偏粗估计纠正, 方法1, 在每条接收天线上进行纠正
        % fine_freq_out(1,:,ant) = recv_frame(1,:,ant).*exp(-j*2*pi*offset(ant).*time_idx*T_sample);
    end
    
    % 载波频偏粗估计纠正, 方法2 , 合并一个频偏纠正值,在每条接收天线上进行纠正
    offset = sum(offset)/N_Rx_ant;
    time_idx = repmat(time_idx,[1,1,N_Rx_ant]);
    fine_freq_out = timed_sym.*exp(-j*2*pi*offset.*time_idx*T_sample);
    
    % 计算载波频偏纠正误差
    %err_freq2 = delta_fc - offset;
else
    fine_freq_out = timed_sym;
end

⌨️ 快捷键说明

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