www.gusucode.com > ofdm结合2x2的m.. > ofdm结合2x2的m...构的WLAN环境数据传输仿真程序matlab版,包括信道估计和同步等模块/channel.m
function rx_signal = channel(tx_signal, cir, sim_options); global sim_consts; [n_tx_antennas, n_rx_antennas] = get_n_antennas(sim_options); % Channel effect rx_signal = zeros(n_rx_antennas, size(tx_signal,2)+size(cir,2)-1); for rx_ant = 1:n_rx_antennas for tx_ant = 1:n_tx_antennas rx_signal(rx_ant,:) = rx_signal(rx_ant,:) + ... conv(tx_signal(tx_ant,:), cir((rx_ant-1)*n_tx_antennas+tx_ant,:)); end end len = size(rx_signal, 2); % Add noise % calculate noise variance % 64/52 scale factor normalizes the noise with the used subcarrier number noise_var = 64/52/(10^(sim_options.SNR/10))/2; noise = sqrt(noise_var) * (randn(n_rx_antennas, len) + j*randn(n_rx_antennas, len)); extra_noise = sqrt(noise_var) * (randn(n_rx_antennas,sim_consts.ExtraNoiseSamples) + ... j*randn(n_rx_antennas, sim_consts.ExtraNoiseSamples)); % end noise is added to prevent simulation from crashing from incorrect timing in receiver end_noise = sqrt(noise_var) * (randn(n_rx_antennas,170) + j*randn(n_rx_antennas, 170)); % add noise rx_signal = rx_signal+noise; % extra noise samples are inserted before the packet to test the packet search algorithm rx_signal = [extra_noise rx_signal end_noise]; %Create frequency offset rx_signal = create_freq_offset(rx_signal, sim_options.FreqError);