📄 channel.m
字号:
% Channel model
function rx_signal = channel(tx_signal, cir, sys_parm)
global ofdm_data_parm_const;
%Channel effect
if sys_parm.ChannelMode == 2
rx_signal = filter(cir, tx_signal);
else
rx_signal = conv(cir, tx_signal);
end
len = length(rx_signal);
%Add noise
%Calculate noise variance
noise_var = sys_parm.TotNumSubc * sys_parm.OverSamp / ofdm_data_parm_const.UsedNumSubc / (10 ^ (sys_parm.SNR / 10)) / 2;
noise = sqrt(noise_var) * (randn(1, len) + j * randn(1, len));
begin_noise = sqrt(noise_var) * (randn(1, ofdm_data_parm_const.StartNoiseSamples) + ...
j * randn(1, ofdm_data_parm_const.StartNoiseSamples));
%End noise is added to prevent simulation from crashing from incorrect timing in receiver
end_noise = sqrt(noise_var) * (randn(1, ofdm_data_parm_const.EndNoiseSamples) + ...
j * randn(1, ofdm_data_parm_const.EndNoiseSamples));
%Add noise
rx_signal = rx_signal + noise;
%Begin noise samples are inserted before the packet to test the packet search algorithm
rx_signal = [begin_noise, rx_signal, end_noise];
%Create frequency offset
rx_signal = create_freq_offset(rx_signal, sys_parm.FreqErr);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -