⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receiver.m

📁 外文经典书“Space-time codes and MIMO systems”第九章matlab源代码
💻 M
字号:


function [data_bits, raw_bits] = receiver(rx_signal, cir, SimulationParameters);

global SimulationConstants;

[n_tx_antennas, n_rx_antennas] = get_n_antennas(SimulationParameters);

%no vblast option
if SimulationParameters.VBLAST~=1

%remove cyclic prefix
if ~SimulationParameters.TxDiv %single tx. antenna
    rx_signal=rx_signal(:,33:length(rx_signal));
else
    rx_signal=rx_signal(:,33-16:length(rx_signal));
end


% Return to frequency domain
[freq_tr_syms, freq_data_syms] = rx_convert_to_freq(rx_signal, SimulationParameters);

% Channel estimation
channel_est = rx_estimate_channel(freq_tr_syms, cir, SimulationParameters);
  
% receiver diversity processing
[freq_data_syms] = rx_diversity(freq_data_syms, ...
   channel_est, SimulationParameters);

% Demodulate
soft_bits = rx_demodulate(freq_data_syms, SimulationParameters);

% Deinterleave if bits were interleaved
if SimulationParameters.InterleavingBits & SimulationParameters.ZeroPad~=1
   	 deint_bits = rx_deinterleave(soft_bits, SimulationParameters);
else
   	 deint_bits = soft_bits;
end

% hard decision of soft bits, used to measure uncoded BER
raw_bits = deint_bits > 0;

% depuncture
depunc_bits = rx_depuncture(deint_bits, SimulationParameters.ConvCodeRate);

viterbi_input=depunc_bits ;
% Viterbi decoding
data_bits = rx_viterbi_decode(viterbi_input);

else % go VBLAST

rx_signal=rx_signal(:,33:length(rx_signal));

% Return to frequency domain
[freq_tr_syms, freq_data_syms] = rx_convert_to_freq_vblast(rx_signal, SimulationParameters);

if SimulationParameters.ChannelEstimation_LSE~=1
    channel_est=form_matrix(SimulationParameters); %perfect channel knowledge
end
   
%invoke vblast algorithm
[raw_bits]=vblast_method(freq_data_syms,channel_est,SimulationParameters);
data_bits=[];
end

⌨️ 快捷键说明

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