receiver.m

来自「ofdm系统仿真」· M 代码 · 共 37 行

M
37
字号
%Receiver
function [data_bits, rx_bits] = receiver(rx_signal, cir, sys_parm)
    %Packet search    
    [rx_signal, thres_idx] = rx_find_packet_edge(rx_signal, sys_parm);
    
    %Frequency error estimation and correction
    rx_signal = rx_frequency_sync(rx_signal, thres_idx, sys_parm);
    
    %Fine time synchronization
    fine_time_est = rx_fine_time_sync(rx_signal, sys_parm);
%     fprintf('Fine time estimation is : %d\n', fine_time_est + thres_idx);
    
    %Time synchronized signal
    sync_time_signal = rx_signal(fine_time_est: length(rx_signal));
    
    %FFT operation, downsample and separate the data
    [freq_tr_syms, freq_data_syms, freq_pilot_syms] = rx_timed_to_freqd(sync_time_signal, sys_parm);
    
    %Channel estimation
    channel_est = rx_estimate_channel(freq_tr_syms, cir, sys_parm);
    
    %Phase tracker, returns phase error corrected symbols
    freq_data_syms = rx_phase_tracker(freq_data_syms, freq_pilot_syms, channel_est, sys_parm);
    
    %Channel equalization
    freq_data_syms = rx_channel_equalization(freq_data_syms, channel_est, sys_parm);
    
    %Demodulate
    rx_bits = rx_demodulate(freq_data_syms, sys_parm);
    
    %Define trellis.   
    trellis = poly2trellis(7, [155 171]);  
    %Traceback length for decoding
    tb = 10; 
    %Decode.
    data_bits = vitdec(rx_bits, trellis, tb,'trunc','hard'); 
end

⌨️ 快捷键说明

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