?? ofdm_simation.m
字號(hào):
function ofdm_simation
clear;
%Ofdm simulation
global sys_parm;
%Initinal the sys_parm
set_sys_parm;
%Initinal the ofdm_data_parm_const and ofdm_data_parm_var
set_ofdm_data_parm;
%Initial some parameters
snr = [];
log_inf_ber = [];
log_raw_ber = [];
%SNR loop
while sys_parm.SNR <= sys_parm.SNR_END
%Counters for information bits
num_inf_bits = 0;
num_inf_bit_errors = 0;
inf_ber = 0;
%Counters for raw (uncoded) bits
num_raw_bits = 0;
num_raw_bit_errors = 0;
raw_ber = 0;
%Simulation the number of packets specified
packet_count = 0;
%Every specific snr
while packet_count < sys_parm.PktsToSimulate
%Increase the packet_count
packet_count = packet_count + 1;
%Transmitter
[tx_signal, tx_inf_bits, tx_bits] = transmitter(sys_parm);
if sys_parm.NeedReceiver == 1
%General channel impulse response
cir = get_channel_ir(sys_parm);
%Channel model
rx_signal = channel(tx_signal, cir, sys_parm);
%Receiver
[rx_inf_bits, rx_bits] = receiver(rx_signal, cir, sys_parm);
%Calculate the number of bits and the error bits
num_inf_bits = num_inf_bits + length(tx_inf_bits);
num_inf_bit_errors = num_inf_bit_errors + sum(abs(rx_inf_bits - tx_inf_bits));
inf_ber = num_inf_bit_errors / num_inf_bits;
num_raw_bits = num_raw_bits + length(tx_bits);
num_raw_bit_errors = num_raw_bit_errors + sum(abs(rx_bits - tx_bits));
raw_ber = num_raw_bit_errors / num_raw_bits;
fprintf('%8s %9s %10s %8s %10s\n', ...
' Packet |', 'raw errs |', ' raw BER |', 'data errs |',' data BER |');
fprintf('%7d | %8d |%10.2e |%10d |%10.2e\n',...
packet_count, num_raw_bit_errors, raw_ber, num_inf_bit_errors, inf_ber);
end
end
%Mark the parameters
snr = [snr, sys_parm.SNR];
log_inf_ber = [log_inf_ber, inf_ber];
log_raw_ber = [log_raw_ber, raw_ber];
%Update the sys_parm.SNR
sys_parm.SNR = sys_parm.SNR + 2;
end
if sys_parm.NeedReceiver == 1
%Plot the err
figure(3)
semilogy(snr, log_inf_ber, 'r');
hold on;
grid on;
semilogy(snr, log_raw_ber, 'b');
end
end
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -