📄 receiver.m
字号:
%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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -