receiver.m
来自「OFDM系统的仿真代码MATLAB环境下」· M 代码 · 共 52 行
M
52 行
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 + =
减小字号Ctrl + -
显示快捷键?