www.gusucode.com > ofdm结合2x2的m.. > ofdm结合2x2的m...构的WLAN环境数据传输仿真程序matlab版,包括信道估计和同步等模块/runsim.m

    

function runsim(sim_options)

% set constants used in simulation
set_sim_consts;

% Set Random number generators initial state
% reset random number generators based on current clock value
rand('state',sum(100*clock));
randn('state',sum(100*clock));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Main simulation loop
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Initialize simulation timer
start_time = clock;

% Initialize trellis tables for Viterbi decoding
rx_init_viterbi;

% counters for information bits
num_inf_bits          = 0;
num_inf_bit_errors    = 0;
num_inf_packet_errors = 0;
inf_ber               = 0;
inf_per               = 0;

% counters for raw (uncoded) bits
num_raw_bits          = 0;
num_raw_bit_errors    = 0;
num_raw_packet_errors = 0;
raw_ber               = 0;
raw_per               = 0;

% Simulation the number of packets specified 

packet_count = 0;
               
while packet_count < sim_options.PktsToSimulate
   
   packet_count = packet_count + 1;
   
   packet_start_time  = clock;
                  
   % Simulate one packet with the current options
   [inf_bit_cnt, inf_bit_errors, raw_bits_cnt, raw_bit_errors] = ...
      single_packet(sim_options);
   
   num_inf_bits          = num_inf_bits + inf_bit_cnt;
   num_inf_bit_errors    = num_inf_bit_errors + inf_bit_errors;
   num_inf_packet_errors = num_inf_packet_errors + (inf_bit_errors~=0);
   inf_ber               = num_inf_bit_errors/num_inf_bits;
   inf_per               = num_inf_packet_errors/packet_count;
   
   num_raw_bits          = num_raw_bits + raw_bits_cnt;
   num_raw_bit_errors    = num_raw_bit_errors + raw_bit_errors;
   num_raw_packet_errors = num_raw_packet_errors + (raw_bit_errors~=0);
   raw_ber               = num_raw_bit_errors/num_raw_bits;
   raw_per               = num_raw_packet_errors/packet_count;
                     
   packet_stop_time = clock;
   packet_duration = etime(packet_stop_time, packet_start_time);
                  
   % Display results
   fprintf('%8s %8s %9s %10s %8s %10s %10s %9s\n', ...
      ' Packet |', ' Time |', 'raw errs |', '  raw BER |', 'data errs |',' data BER |', '  raw PER |', 'data PER');
   fprintf('%7d |%7g | %8d |%10.2e |%10d |%10.2e |%10.2e |%10.2e\n',...
      packet_count, packet_duration, raw_bit_errors, raw_ber, inf_bit_errors, inf_ber, raw_per, inf_per);
   
   % read event queue
   drawnow;
end

stop_time = clock;
elapsed_time = etime(stop_time,start_time);

fprintf('Simulation duration: %g seconds\n',elapsed_time);