📄 transmitter.m
字号:
% Generates transmitted signal for one packet.
function [tx_signal, inf_bits, tx_bits] = transmitter
global sim_consts;
% Generate the information bits
inf_bits = floor(rand(1,10000)*2);
% Convolutional encoding
tx_bits = tx_conv_encoder(inf_bits);
%Puncturing
%tx_bits = tx_puncture(coded_bit_stream);
% Generate number bits that is an integer multiple of OFDM symbols
rdy_to_mod_bits = tx_make_int_num_ofdm_syms(tx_bits);
if sim_consts.InterleaveBits == 1
%Interleave padded bit stream
rdy_to_mod_bits = tx_interleaver(rdy_to_mod_bits);
end
%Modulate
mod_syms = tx_modulate(rdy_to_mod_bits);
% Transmit diversity
mod_syms = tx_diversity(mod_syms);
%Add pilot symbols
if sim_consts.UseTxDiv == 0
mod_ofdm_syms = tx_add_pilot_syms(mod_syms);
else
mod_ofdm_syms(1,:) = tx_add_pilot_syms(mod_syms(1,:));
mod_ofdm_syms(2,:) = tx_add_pilot_syms(mod_syms(2,:));
end
% Tx symbols to time domain
time_syms = tx_freqd_to_timed(mod_ofdm_syms);
% Add cyclic prefix
time_signal = tx_add_cyclic_prefix(time_syms);
% normalize the average signal power to 1
tx_signal = [time_signal]*64/sqrt(52)/sqrt(size(time_signal,1));
%Power amplifier model
if sim_consts.UseTxPA == 1
if sim_consts.UseTxDiv ~= 1
[tx_signal, pwr_in, pwr_out] = tx_power_amplifier(tx_signal, 1, 1, 1, 2, size(tx_signal,2));
% normalize average tx power to one
tx_signal(1,:) = tx_signal(1,:)/sqrt(pwr_out);
else
% first antenna
[tx_signal(1,:), pwr_in, pwr_out] = tx_power_amplifier(tx_signal(1,:), 1, 1, 1, 2, size(tx_signal(1,:),2));
% normalize average tx power to one
tx_signal(1,:) = tx_signal(1,:)/sqrt(pwr_out);
% second antenna
[tx_signal(2,:), pwr_in, pwr_out] = tx_power_amplifier(tx_signal(2,:), 1, 1, 1, 2, size(tx_signal(2,:),2));
% normalize average tx power to one
tx_signal(2,:) = tx_signal(2,:)/sqrt(pwr_out);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -