www.gusucode.com > LTE仿真Matlab源码 > LTE_load_parameters.m
% Configuration file for Multi-User MIMO % Author: Dagmar Bosanska, dbosansk@nt.tuwien.ac.at % (c) 2008 by INTHFT % www.nt.tuwien.ac.at % % date of creation: 2008/08/11 % last changes: 2008/09/02 Colom Ikuno new variables for HARQ % 2008/09/15 Bosanska changed structure of BS and UE % 2008/09/18 Bosanska added definition of the channel model [nBS x nUE]struct ChanMod % added Initial state of random number generator % 2008/10/21 Bosanska added LTE_params.config.CQI_model -> linear regression for the CQI mapping % 2008/11/05 Bosanska extended structure ChanMod to design of RRC TX and RX filters % 2008/11/07 Bosanska removed extended structure ChanMod to design of RRC TX and RX filters % channel taps for PedA and PedB are given in [s], are shifted according to the % sampling freq LTE_params.Fs and rounded % 2008/12/10 Simko added type of channel estimation % method to UE -> UE.channel_estimation_method % % Contains code the following sources: % - Coded Modulation Library (CML) by Iterative Solutions: global LTE_params; LTE_params.Simulation_type = Simulation_type; LTE_params.carrier_freq = 2.5e9; %carrier frequency [Hz] LTE_params.speed_of_light = 299792458; %[m/s] switch LTE_params.Simulation_type case 'SUSISO' LTE_params = simulation_config.susisoSimulationConfig.apply_parameters(LTE_params); case 'MUSISO' LTE_params = simulation_config.musisoSimulationConfig.apply_parameters(LTE_params); case 'SUMIMO' LTE_params = simulation_config.sumimoSimulationConfig.apply_parameters(LTE_params); case 'MUMIMO' LTE_params = simulation_config.mumimoSimulationConfig.apply_parameters(LTE_params); case 'wsa_2010_michal' LTE_params = simulation_config.wsa2010michalSimulationConfig.apply_parameters(LTE_params,estimator,speed); case 'wsa_2010_schwarz' LTE_params = simulation_config.wsa2010schwarzSimulationConfig.apply_parameters(LTE_params,nRX,nTX,receiver,channel); case 'pimrc_2010_qwang' LTE_params = simulation_config.pimrc2010qwangSimulationConfig.apply_parameters(LTE_params,CFO,freq_sync_method,channel_type,mode,nRX,nTX); case 'winner_model_example' LTE_params = simulation_config.winnerModelExampleSimulationConfig.apply_parameters(LTE_params); case 'SUSISO_quick_test' LTE_params = simulation_config.sisoQuickTestSimulationConfig.apply_parameters(LTE_params); case 'SUSISO_BLER_curves_batch' LTE_params = simulation_config.susisoBlerCurvesBatchSimulationConfig.apply_parameters(LTE_params); case 'SUSISO_best_cqi' LTE_params = simulation_config.susisoBestCqiSimulationConfig.apply_parameters(LTE_params); case 'SUMIMO_quick_test' LTE_params = simulation_config.sumimoQuickTestSimulationConfig.apply_parameters(LTE_params); case 'TB' LTE_params = simulation_config.tbSimulationConfig.apply_parameters(LTE_params,Testbed_settings); case 'beta' LTE_params = simulation_config.betaSimulationConfig.apply_parameters(LTE_params,channel_type); case 'LTE_journal_paper' LTE_params = simulation_config.lteJournalPaperSimulationConfig.apply_parameters(LTE_params,N_Ue,N_Bs,tx_mode,N_rx,N_tx,channel_type,connection_table,Power_diff,channel_est,equalizer); case 'vtc_2011_spring_michal' LTE_params = simulation_config.vtc2011springMichalSimulationConfig.apply_parameters(LTE_params,estimator,speed); case 'IA' LTE_params = simulation_config.iaSimulationConfig.apply_parameters(LTE_params,N_Ue,N_Bs,channel_estimation_method,tx_mode,N_rx,N_tx,receiver,user_speed,filtering,channel_type,scheduler_type,scheduler_assignment,connection_table,Power_diff,IA_type,IA_streams,IA_thresh,IA_max_iterations,IA_freq_granularity,IA_time_granularity,IA_sigma_H2_E2_ratio); case 'mobilkom_CLSM' LTE_params = simulation_config.mobilkom_CLSM.apply_parameters(LTE_params); otherwise error('not valid Simulation type') end % %% Example parameters that are written by the prior lines (SUSISO example) % LTE_params.nUE = 1; % number of user equipments to simulate % LTE_params.nBS = 1; % number of base stations to simulate (hard-coded to 1) % LTE_params.Bandwidth = 1.4e6; % in Hz, allowed values: 1.4 MHz, 3 MHz, 5 MHz, 10 MHz, 15 MHz, 20MHz => number of resource blocks 6, 15, 25, 50, 75, 100 % LTE_params.introduce_frequency_offset = false; % %% Define some User parameters (identical settings). % LTE_params.UE_config.channel_estimation_method = 'LS'; %'PERFECT','LS','MMSE' % LTE_params.UE_config.mode = 1; % DEFINED IN STANDARD 3GPP TS 36.213-820 Section 7.1, page 12 % % 1: Single Antenna, 2: Transmit Diversity, 3: Open Loop Spatial Multiplexing % % 4: Closed Loop SM, 5: % % Multiuser MIMO % LTE_params.UE_config.nRX = 1; % number of receive antennas at UE % LTE_params.UE_config.receiver = 'ZF'; % 'SSD','ZF' % LTE_params.UE_config.user_speed = 10/3.6; %[m/s] % LTE_params.UE_config.carrier_freq_offset = pi; % carrier frequency offset normalized to subcarrier spacing % LTE_params.UE_config.freq_sync_method = 'perfect'; % LTE_params.UE_config.rfo_correct_method = 'subframe'; % 'none','subframe' % %% Define BS parameters (identical settings). % LTE_params.BS_config.nTx = 1; % %% Define ChanMod parameters - now it is only possible to have same channel parameters for BS and UE % LTE_params.ChanMod_config.filtering = 'BlockFading'; %'BlockFading','FastFading' % LTE_params.ChanMod_config.type = 'PedB'; % 'PedA', 'PedB', 'PedBcorr', 'AWGN', 'flat Rayleigh','VehA','VehB','TU','RA','HT','winner_II' % %% Scheduler settings % LTE_params.scheduler.type = 'round robin'; % % Available options are: % % - 'round robin': Will serve equally all of the available users % % - 'best cqi' : Will serve only users that maximize the CQI for specific RB % % - 'fixed' % % LTE_params.scheduler.assignment = 'static'; % % Available options are: % % - For 'round robin': 'static' of 'dynamic': whether the scheduler will statically % % assign or dynamically assign CQIs and other params. Currently only 'static' is implemented % % - For 'best cqi': 'dynamic': the scheduler will dynamically assign CQIs and other params. % % - For 'fixed': a vector stating how many RBs will each user get. % % % Parameters for the static scheduler % LTE_params.scheduler.cqi = 'set'; % LTE_params.scheduler.PMI = 0; % corresponds CI for closed loop SM % %% End of the SUSISO example if ~exist('connection_table','var') LTE_params.connection_table = true(LTE_params.nBS,LTE_params.nBS*LTE_params.nUE); else LTE_params.connection_table = connection_table; end if ~exist('delay_table','var') LTE_params.delay_table = zeros(LTE_params.nBS,LTE_params.nBS*LTE_params.nUE); else LTE_params.delay_table = zeros(LTE_params.nBS,LTE_params.nBS*LTE_params.nUE); % asynchronous network case, change here. end LTE_params.SNR_estimation = false; %true-real SNR estimation, false-perfect SNR knowledge LTE_params.number_of_zeros_for_SNR_estimation = 256; if strcmp('TB',LTE_params.Simulation_type) LTE_params.number_of_zeros_for_SNR_estimation = Testbed_settings.Nr_of_nulls; end LTE_params.uplink_delay = 1; % Delay the uplink channel will introduce (in TTIs). >=1 TTI LTE_params.show_plots = false; LTE_params.plot_confidence_intervals = true; LTE_params.trace_subcarrier_SNR = false; LTE_params.use_seed_reset = false; %wheter the channel seed should be reseted or not LTE_params.N_seed_reset = 1; % resets the random number generator seeds to a new value after LTE_params.N_seed_reset subframes if ~exist('pilot_offset','var') LTE_params.Pilots_power_offset = 0; % [dB] offset of the pilot energy compared to teh data while keeping the total transmit energy the same else LTE_params.Pilots_power_offset = pilot_offset; end %PRIMITIVE PARAMETERS %DEFINED IN STANDARD 3GPP TS 36.104 V8.1.0 (2008-03), page 10 %Table 5.1-1 Transmission bandwidth configuration LTE_params.HARQ_processes = 8; % Number of HARQ processes LTE_params.max_HARQ_retransmissions = 0; % max num of HARQ retransmissions, NOT including the original tx. 0, 1, 2 or 3 LTE_params.SubcarrierSpacing = 15e3; % in Hz, 15 kHz, also 7.5 kHz subcarrier spacing possible, just for MBSFN-based multicast/broadcast transmissions LTE_params.CyclicPrefix = 'normal'; % 'normal' or 'extended' for MBSFN-based multicast/broadcast transmissions LTE_params.simulation_type = 'normal'; % 'parallel' or 'normal' to parallelize the SNR loop in LTE_sim_main_parallel.m for 4 cores or not as in LTE_sim_main.m LTE_params.simulate_with_all_zero_sequences = false; % true if you want that the transmitted data is an all-zero sequence (useful for interleaver testing) %% Configuration of the random noise generation LTE_params.random_noise_seeding = false; % Whether the seed for the random number generator that generates the noise is set LTE_params.noise_seed = 0; % Only used if the upper variable is set to 'true' %% Channel matrix source LTE_params.channel_matrix_source = 'generated'; % 'generated' to generate every time, 'trace' to load it from a trace LTE_params.store_channel_trace = false; % if mode is 'generated', the channel trace will be saved at the end of the simulation LTE_params.channel_matrix_tracefile = 'auto'; % filename where the trace is stored, only if 'trace' mode is used %% Define config parameters for specific algorithms % CQI mapping % LTE_params.CQI_mapping.coeffs = [0.5298 4.3002]; % linear regression for the SINR to CQI mapping LTE_params.CQI_mapping.coeffs = [0.5223 4.6176]; % these values hold for BLER 0.1 at first transmission LTE_params.CQI_mapping.table = [-500;-6.934;-5.147;-3.18;-1.254;0.761;2.70;4.697;6.528;8.576;10.37;12.3;14.18;15.89;17.82;19.83;21]; % BLER 0.1 at first transmission % LTE_params.CQI_mapping.table = [-500;-7;-5.661;-3.595;-1.572;0.537;2.545;4.593;6.408;8.479;10.34;12.22;14.13;15.85;17.79;19.86;22]; % max throughput AWGN % LTE_params.CQI_mapping.table = [-500;-6.936;-5.147;-3.121;-1.175;0.815;2.63;4.67;6.5;8.5;10.6;12.5;15.5;16.1;17.8;19.7;22]; % 4x2 taylored % LTE_params.CQI_mapping.table = [-500;-6.936;-5.147;-3.121;-1.175;0.761;2.63;4.67;6.5;8.5;10.4;12;14.5;16.1;18;22;24]; % 4x4 taylored %% Initial state of random number generator LTE_params.random_data_seeding = true; % Whether the seed for the random number generator that generates the transmitted databits is set LTE_params.data_seed = 10; % Only used if the upper variable is set to 'true' LTE_params.random_channel_param_seeding = true; % Whether the seed for the random number generator that generates the channel parameters is set LTE_params.channel_param_seed = 175; % Only used if the upper variable is set to 'true' %% Define UE parameters (the same for all users, although it could be changed to have different users) LTE_params.UE_config.LLR_clipping = 100; LTE_params.UE_config.decoder_type = 'max-log-map'; LTE_params.UE_config.turbo_iterations = 8; % Number of iterations of the turbo decoder LTE_params.UE_config.hard_demapping = false; LTE_params.UE_config.N_soft = 3667200; % Defines the total number of soft channel bits available (TS 36.306, 4.2.1.3). Set to category 5 (Table 4.1-1) LTE_params.UE_config.channel_interpolation_method = 'linear'; %'linear','cubic','spline','sinc_freq','sinc_time','T-F' % interpolation for fast fading 'linear','cubic','v4' LTE_params.UE_config.autocorrelation_matrix_type = 'ideal'; % 'ideal','estimated'% type of autocorrelation amtrix('ideal','estimated') LTE_params.UE_config.realization_num = 0; % Number of realizations of channel, used for averaging fo channel autocorrelation matrix LTE_params.UE_config.realization_num_total = 20; % First xy number of channel realizations are used just for estimation of autocorrelation matrix LTE_params.UE_config.CDD =0; % Cyclic Delay Diversity % 0... zero delay CDD (3GPP TS 36.211-820 Section 6.3.4.2.1, page 37) % 1... small delay CDD (3GPP TS 36.211-820 Section 6.3.4.2.1, page 37) --> in the newest standard version this is not defined anymore % 2... large delay CDD (3GPP TS 36.211-820 Section 6.3.4.2.2, page 38) switch LTE_params.Bandwidth % choose coarsest PMI feedback granularity (or use the line below) case 1.4*10^6 LTE_params.UE_config.PMI_fb_granularity = 6; LTE_params.UE_config.CQI_fb_granularity = 6; case 3*10^6 LTE_params.UE_config.PMI_fb_granularity = 15; LTE_params.UE_config.CQI_fb_granularity = 15; case 5*10^6 LTE_params.UE_config.PMI_fb_granularity = 25; LTE_params.UE_config.CQI_fb_granularity = 25; case 10*10^6 LTE_params.UE_config.PMI_fb_granularity = 50; LTE_params.UE_config.CQI_fb_granularity = 50; case 15*10^6 LTE_params.UE_config.PMI_fb_granularity = 75; LTE_params.UE_config.CQI_fb_granularity = 75; case 20*10^6 LTE_params.UE_config.PMI_fb_granularity = 100; LTE_params.UE_config.CQI_fb_granularity = 100; end % LTE_params.UE_config.PMI_fb_granularity = 1; % PMI feedback granularity in multiples of resource blocks (only one value per full bandwidth or per resource block is supported) % LTE_params.UE_config.CQI_fb_granularity = 1; % CQI feedback granularity in multiples of RBs (only one value per full bandwidth or per resource block is supported) if strcmp(LTE_params.Simulation_type,'wsa_2010_schwarz') LTE_params.UE_config.PMI_fb = PMI_fb; LTE_params.UE_config.RIandPMI_fb = false; LTE_params.UE_config.CQI_fb = false; LTE_params.UE_config.PMI_fb_granularity = 6; LTE_params.UE_config.CQI_fb_granularity = 6; else LTE_params.UE_config.PMI_fb = true; % PMI feedback activated (just used in connection with LTE_params.UE_config.mode = 4) LTE_params.UE_config.RIandPMI_fb = true; % RI and PMI feedback activated (just used in connection with LTE_params.UE_config.mode = 4) LTE_params.UE_config.CQI_fb = true; % CQI feedback activated end LTE_params.UE_config.predict = false; % channel prediction activated (used in the feedback calculation) % LTE_params.UE_config.SINR_averaging.averager = 'EESM'; % SINR averaging method used for the feedback calculation (EESM or MIESM) LTE_params.UE_config.SINR_averaging.averager = 'MIESM'; % SINR averaging method used for the feedback calculation (EESM or MIESM) % LTE_params.UE_config.SINR_averaging.EESMbetas = [4,3.96,2.77,0.93,1.38,1.44,1.56,3.62,4.73,6.09,11.59,16.35,21.45,26.5,30.75,33.5]; % EESM beta values % LTE_params.UE_config.SINR_averaging.MIESMbetas = [4,3.85,2.85,0.66,1.04,0.98,1,0.82,0.95,1,0.99,1.02,0.94,1.03,1,1]; % MIESM beta values LTE_params.UE_config.SINR_averaging.EESMbetas = [5,5.01,5.01,0.84,1.67,1.61,1.64,3.87,5.06,6.4,12.59,17.59,23.33,29.45,33.05,35.41]; % weigthed EESM beta values LTE_params.UE_config.SINR_averaging.MIESMbetas = [4,3.07,4.41,0.6,1.16,1.06,1.06,0.87,1.01,1.04,1.03,1.11,1.01,1.07,1,1.05]; % weighted MIESM beta values % LTE_params.UE_config.SINR_averaging.MIESMbetas = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]; % MIESM beta values LTE_params.UE_config.SINR_averaging.MCSs = [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]; %% Other parameters % Parameters for the feedback calculation LTE_params.feedback.ignore_channel_estimation = false; % ignores the channel estimation MSE for the feedback calculation if set LTE_params.feedback.channel_averaging = true; % use channel averaging for feedback calculation % Scheduler parameters LTE_params.scheduler.av_window = 100; % Scheduler averaging window size in subframes (not supported by all schedulers) - 100 is recommended for the varfair algorithm LTE_params.scheduler.fairness = 0.95; % desired fairness for the variable fairness scheduler (only supported by the 'var fair' scheduler) LTE_params.scheduler.alpha = 0; % alpha level for the 'alpha fair' scheduler LTE_params.scheduler.weights = 1/LTE_params.nUE*ones(LTE_params.nUE,1); % weights for the weighted sum rate maximization in the 'weighted sum rate' scheduler LTE_params.scheduler.stepsize = 0.5; % initial stepsize for the adaptation of the parameter alpha in the startup phase of the 'var fair' scheduler - 0.5 is recommended LTE_params.scheduler.rate_constraints = Inf(LTE_params.nUE,1); % average rate constraints applied in the utility maximizing scheduler LTE_params.scheduler.rate_constraints = [Inf;Inf]; LTE_params.scheduler.MUMIMO = false; % whether MUMIMO is used with the constrained scheduler or SUMIMO %% Define ChanMod parameters - now it is only possible to have same channel parameters for BS and UE LTE_params.ChanMod_config.interpolation_method = 'shift_to_nearest_neighbor'; % 'shift_to_nearest_neighbor' 'sinc_interpolation' LTE_params.ChanMod_config.corr_coefRX = 0.3; LTE_params.ChanMod_config.corr_coefTX = 0.3; LTE_params.ChanMod_config.sin_num = 10; % Number of sin realizations LTE_params.ChanMod_config.time_correlation = 'independent'; % 'correlated','independent' LTE_params.eig_tresh_time = 0.1; LTE_params.eig_tresh_freq = 0.1; % winner model settings LTE_params.ChanMod_config.winner_settings.Scenario = 1; %10 % 1=A1, 2=A2, 3=B1, 4=B2, 5=B3, 6=B4, 7=B5a, 8=B5c, 9=B5f, 10=C1, % 11=C2, 12=C3, 13=C4, 14=D1 and 15=D2a LTE_params.ChanMod_config.winner_settings.PropagCondition = 'NLOS'; % [LOS,{NLOS}] LTE_params.ChanMod_config.winner_settings.SampleDensity = 2; % number of time samples per half wavelength [ {2} ] LTE_params.ChanMod_config.winner_settings.UniformTimeSampling = 'yes'; % Use same time sampling grid for all links [ yes | {no} ] LTE_params.ChanMod_config.winner_settings.FixedPdpUsed = 'no'; % nonrandom path delays and powers [ yes | {no}] LTE_params.ChanMod_config.winner_settings.FixedAnglesUsed = 'no'; % nonrandom AoD/AoAs [ yes | {no} ] LTE_params.ChanMod_config.winner_settings.PolarisedArrays = 'yes'; % usage of dual polarised arrays [ {yes} | no ] LTE_params.ChanMod_config.winner_settings.TimeEvolution = 'no'; % usage of time evolution [ yes | {no} ] LTE_params.ChanMod_config.winner_settings.PathLossModelUsed = 'no'; % usage of path loss model [ yes | {no} ] LTE_params.ChanMod_config.winner_settings.ShadowingModelUsed = 'no'; % usage of shadow fading model [ yes | {no} ] LTE_params.ChanMod_config.winner_settings.PathLossModel = 'pathloss'; % path loss model function name [ {pathloss} ] LTE_params.ChanMod_config.winner_settings.PathLossOption = 'CR_light'; % ['{CR_light}' or 'CR_heavy' or 'RR_light' or 'RR_heavy', CR = Corridor-Room, RR = Room-Room nlos} LTE_params.ChanMod_config.winner_settings.RandomSeed = []; % sets random seed [ {[empty]} ] LTE_params.ChanMod_config.winner_settings.UseManualPropCondition = 'yes'; % whether to use manual propagation condition (los/nlos) setting or not. If not, the propagation condition is drawn from probabilities. [ {yes} | no] %% include other channels (PBCH, PDCCH) LTE_params.usePBCH = false; LTE_params.usePDCCH = false; %% use traffic models for simulation (true) or fullbuffer assumption (false) (note: this is just used if the scheduler supports it!) LTE_params.trafficmodel.usetraffic_model = false; % just supported by the constrained scheduler %% Load and calculate other parameters which depend on the ones previously defined LTE_load_parameters_dependent; LTE_load_parameters_generate_elements; LTE_check_parameters;