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 + -
显示快捷键?