📄 receiver.m
字号:
function [data_bits, raw_bits] = receiver(rx_signal,tx_raw_inf_bits);
global sim_consts;
[n_tx_antennas, n_rx_antennas] = get_n_antennas;
if n_rx_antennas == 2 else
%sum the signal from different antennas rx_signal = sum(rx_signal,1); % Return to frequency domain
[freq_data_syms, freq_pilot_syms] = rx_timed_to_freqd(rx_signal,n_tx_antennas);
% Channel Estimation
cir = channel_estimation(freq_pilot_syms); % Get the modulated frequency signal mod_freq_data_syms = freq_data_syms./cir; % Demodulate
soft_bits = rx_demodulate(mod_freq_data_syms);
% Deinterleave if bits were interleaved
if sim_consts.InterleaveBits == 1
deint_bits = rx_deinterleave(soft_bits);
else
deint_bits = soft_bits;
end
% hard decision of soft bits, used to measure uncoded BER
n = length(deint_bits); for index = 1:n if deint_bits(index) > 0 raw_bits(index) = 1; elseif deint_bits(index) <= 0 raw_bits(index) = 0;
end end raw_bits(:,length(tx_raw_inf_bits)+1:end) = []; % depuncture
% depunc_bits = rx_depuncture(raw_bits, sim_consts.ConvCodeRate);
% Vitervi decoding
data_bits = rx_viterbi_decode(raw_bits);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -