📄 transmitter.asv
字号:
% 产生一个分组的发射比特
function [tx_signal, inf_bits, tx_bits] = transmitter(sim_options);
global sim_consts;
%产生信息比特
inf_bits = randn(1, sim_options.PacketLength) > 0;
%卷积编码
coded_bit_stream = tx_conv_encoder(inf_bits);
%keyboard
%比特打孔
tx_bits = tx_puncture(coded_bit_stream, sim_options.ConvCodeRate);
%keyboard
% 产生是OFDM符号整数倍的比特。
rdy_to_mod_bits = tx_make_int_num_ofdm_syms(tx_bits, sim_options);
%keyboard
if sim_options.InterleaveBits == 1
%交织
rdy_to_mod_bits = tx_interleaver(rdy_to_mod_bits, sim_options);
end
%keyboard
%调制
mod_syms = tx_modulate(rdy_to_mod_bits, sim_options.Modulation);
%keyboard
% 发射分集
mod_syms = tx_diversity(mod_syms, sim_options);
%keyboard
%添加导引符号
if ~sim_options.UseTxDiv
mod_ofdm_syms = tx_add_pilot_syms(mod_syms, sim_options);
else
mod_ofdm_syms(1,:) = tx_add_pilot_syms(mod_syms(1,:), sim_options);
mod_ofdm_syms(2,:) = tx_add_pilot_syms(mod_syms(2,:), sim_options);
end
%keyboard
% 将发射信号转到时域
time_syms = tx_freqd_to_timed(mod_ofdm_syms);
%keyboard
%添加循环前缀
time_signal = tx_add_cyclic_prefix(time_syms);
%keyboard
%构造前导
preamble = tx_gen_preamble(sim_options);
%keyboard
%级联前导和数据并 Concatenate preamble and data part and normalize the average signal power to 1
tx_signal = [preamble time_signal]*64/sqrt(52)/sqrt(size(time_signal,1));
%keyboard
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -