📄 transmitter.m
字号:
% Generates transmitted signal for one packet.
function [tx_signal,inf_bits, tx_bits] = transmitter(SimulationParameters);
global SimulationConstants;
%number of transmit antennas
modulation=SimulationParameters.ModulationType;
if modulation == 'BPSK '
Bits=1;
elseif modulation == 'QPSK '
Bits=2;
end
num_data_carriers=SimulationConstants.NumDataSubc;
% Generate the information bits
if SimulationParameters.ZeroPad
inf_bits=randn(1,num_data_carriers*Bits*10)> 0;
else
inf_bits=randn(1,SimulationParameters.FFTPoints*Bits*10)> 0;
end
save length(inf_bits);
% Convolutional encoding
coded_bit_stream = tx_conv_encoder(inf_bits);
%Puncturing
tx_bits = tx_puncture(coded_bit_stream, SimulationParameters.ConvCodeRate);
%no vblast option
if SimulationParameters.VBLAST~=1
% Generate number bits that is an integer multiple of OFDM symbols
rdy_to_mod_bits = tx_round_ofdm_syms(tx_bits, SimulationParameters);
%Interleave padded bit stream
if SimulationParameters.InterleavingBits == 1 & SimulationParameters.ZeroPad~=1
rdy_to_mod_bits = tx_interleaver(rdy_to_mod_bits, SimulationParameters);
end
%Modulate
mod_syms_prov = tx_modulate(rdy_to_mod_bits, SimulationParameters.ModulationType);
% Transmit diversity
mod_syms = tx_diversity(mod_syms_prov,SimulationParameters);
% Tx symbols to time domainclc
time_syms = tx_convert_to_time(mod_syms,SimulationParameters);
% Add cyclic prefix
time_signal = tx_add_cyclic_prefix(time_syms,SimulationParameters);
% Construction of the preamble
preamble = tx_gen_preamble(SimulationParameters);
%check if there is zero padding
if SimulationParameters.ZeroPad~=1
numdatasubc=1;
else
numdatasubc=SimulationConstants.NumDataSubc;
end
% Concatenate preamble and data part and normalize the average signal power to 1
tx_signal = [preamble time_signal]*SimulationParameters.FFTPoints/sqrt(numdatasubc)/sqrt(size(time_signal,1));
else % go vblast
% # of transmit antennas
M=SimulationParameters.M;
% Generate number bits that is an integer multiple of OFDM symbols
rdy_to_mod_bits = tx_round_ofdm_syms(tx_bits, SimulationParameters);
%Modulate
mod_syms_prov = tx_modulate(rdy_to_mod_bits, SimulationParameters.ModulationType);
% Transmit diversity
mod_syms = tx_diversity_vblast(mod_syms_prov, SimulationParameters);
% Tx symbols to time domain
time_syms = tx_convert_to_time(mod_syms,SimulationParameters);
% Add cyclic prefix
time_signal = tx_add_cyclic_prefix(time_syms,SimulationParameters);
% Construction of the preamble(though not used in this simulator, channel
% estimation facility is provided for the user with vblast).
preamble = tx_gen_preamble_vblast(SimulationParameters);
%check if there is zero padding
if SimulationParameters.ZeroPad~=1
numdatasubc=1;
else
numdatasubc=SimulationConstants.NumDataSubc;
end
% Concatenate preamble and data part and normalize the average signal power to 1
tx_signal = [preamble time_signal]*SimulationParameters.FFTPoints/sqrt(numdatasubc)/sqrt(M);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -