⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 load_part2.m

📁 基于OFDM的无线宽带系统仿真It contains mainly two parts, i.e. link-level simulator and system-level simulator.
💻 M
字号:
% this function load the run-time data, save in a single mat file% called by script_load_part2% after finishing simulating each case, this function need to be called% all the analysis is based on the output of this functionfunction load_part2(test_resource_allocation_idx,UE,MIMO,loaddir,savedir,a,b,overwrite_old,MaxSaveIndex,save_info_factor,Comm_conf)filename = ['RA',num2str(test_resource_allocation_idx),'_UE',num2str(UE),'_FLA',num2str(Comm_conf.F_LA),'_FPA',num2str(Comm_conf.F_PA),MIMO,'_trms',num2str(Comm_conf.t_rms),'f',num2str(Comm_conf.fd),'_s',num2str(Comm_conf.state),'N',num2str(Comm_conf.N),'subN',num2str(Comm_conf.subN),'_E',num2str(Comm_conf.flg_csi_err),'c',num2str(Comm_conf.flg_offset),'D',num2str(Comm_conf.DELAY),'BO',num2str(Comm_conf.BO_dB),'HPA',num2str(Comm_conf.use_HPA_flg),'_BLER',num2str(Comm_conf.targetFER),'.mat'];if exist([savedir,'/',filename],'file') && ~overwrite_old    return;else    test_possible_user_velocities = 30;    test_possible_scenarios = {'micro1','macro1','macro3'};    test_pissible_resource_allocations = {'RR','PF','MAXCI','PF2'};    test_nu_active_users = UE;    test_scenario = test_possible_scenarios{1};    test_resource_allocation  = test_pissible_resource_allocations{test_resource_allocation_idx};    test_avg_velo_kmph = test_possible_user_velocities(1);    %test_frame_period_factor = LARArate;    test_case=['testCaseResult-Scn',test_scenario,'-ResAlloc',test_resource_allocation,'-PowCon','no','-G','no','-NoUE',num2str(test_nu_active_users),'-kmph',num2str(test_avg_velo_kmph),'F_LA',num2str(Comm_conf.F_LA),'-F_PA',num2str(Comm_conf.F_PA)];        save_user_fair = zeros(UE,save_info_factor * (b-a  + 1) * MaxSaveIndex);    save_user_ActiveCnt = uint16(zeros(UE,save_info_factor * (b-a  + 1) * MaxSaveIndex));    save_user_distance = save_user_ActiveCnt;    save_user_mobID = save_user_ActiveCnt;    save_user_velocity = uint8(save_user_ActiveCnt);    if Comm_conf.N == 512,        Comm_conf.used = 301;    elseif Comm_conf.N == 1024,        Comm_conf.used = 601;    end    Nu_groups = floor(Comm_conf.used / Comm_conf.subN);    save_user_sinr = int8(zeros(UE,save_info_factor * (b-a  + 1) * MaxSaveIndex,Nu_groups));        save_bs_sinr = int8(zeros(Nu_groups,save_info_factor * (b-a  + 1) * MaxSaveIndex));    save_bs_mobID = uint16(zeros(Nu_groups,save_info_factor * (b-a  + 1) * MaxSaveIndex));    save_bs_mod = int8(zeros(Nu_groups,save_info_factor * (b-a  + 1) * MaxSaveIndex));    save_bs_fec = int8(zeros(Nu_groups,save_info_factor * (b-a  + 1) * MaxSaveIndex));    save_bs_poweradjust = (zeros(Nu_groups,save_info_factor * (b-a  + 1) * MaxSaveIndex));    save_bs_FrminErr = int8(zeros(Nu_groups,save_info_factor * (b-a  + 1) * MaxSaveIndex));    save_bs_dist = uint16(zeros(Nu_groups,save_info_factor * (b-a  + 1) * MaxSaveIndex));        save_outageCnt = 0;    save_totalBitsSent = 0;    save_totalFrmErr = 0;    nuUser = 0;    for lp_nuDrops=a:b        dir_name=[loaddir,'/',test_case,'Drp',num2str(lp_nuDrops),'_trms',num2str(Comm_conf.t_rms),'f',num2str(Comm_conf.fd),'_s',num2str(Comm_conf.state),'N',num2str(Comm_conf.N),'subN',num2str(Comm_conf.subN),'_E',num2str(Comm_conf.flg_csi_err),'c',num2str(Comm_conf.flg_offset),'D',num2str(Comm_conf.DELAY),'BO',num2str(Comm_conf.BO_dB),'HPA',num2str(Comm_conf.use_HPA_flg),'_BLER',num2str(Comm_conf.targetFER)];        lp_nuDrops        for k = 1:MaxSaveIndex            load([dir_name,'/','user_gain_info_and_distance/saveIndex',num2str(k)]);            idx = (lp_nuDrops-1) * MaxSaveIndex*save_info_factor + (k-1)*save_info_factor + 1: (lp_nuDrops-1) * MaxSaveIndex*save_info_factor + k*save_info_factor;            save_user_ActiveCnt(:,idx) = user_ActiveCnt;            save_user_distance(:,idx) = user_distance;            save_user_mobID(:,idx) = user_mobID + nuUser;            save_user_velocity(:,idx) = user_velocity;            save_user_sinr(:,idx,:) = user_sinr;            save_user_fair(:,idx) = user_fair;            %save_user_sinr_noErr(:,idx,:) = user_sinr_noFeedBackErr;            clear user*                        load([dir_name,'/','measurement/dataVals',num2str(k)]);            %save_user_remFileSz(:,idx) = st_measurement.remFileSzStore;            save_bs_sinr(:,idx) = st_measurement.snrFeedBack;            save_bs_mobID(:,idx) = st_measurement.mobIdxStore + nuUser;            %save_bs_sinr_noErr(:,idx) = st_measurement.snrFeedBackNoChErr;            save_bs_mod(:,idx) = st_measurement.modStore;            save_bs_fec(:,idx) = st_measurement.fecStore;            save_bs_dist(:,idx) = st_measurement.distanceStore;                        save_bs_poweradjust(:,idx) = st_measurement.poweradjust;            save_bs_FrminErr(:,idx) = st_measurement.FrminError;            %save_bs_instTP(1,idx) = st_measurement.instThpt;        end        nuUser = max(max(save_user_mobID(:,lp_nuDrops * MaxSaveIndex*save_info_factor)));        save_outageCnt=save_outageCnt+st_measurement.outageCnt;        save_totalBitsSent=save_totalBitsSent+st_measurement.totalBitsSent;        save_totalFrmErr = save_totalFrmErr + st_measurement.totalFramesinError;        clear st_measurement    end    fec1 = [0 3 5 7]; fec2 = [0 1/3 1/2 2/3];    fecs = zeros(size(save_bs_fec));    for k = 2:4        fecs = fecs + fec2(k)*(save_bs_fec == fec1(k));    end    save_bs_fec = fecs;    if ~exist(savedir,'dir'),        mkdir(savedir);    end    save([savedir,'/',filename],'save_user_ActiveCnt','save_user_distance','save_user_mobID','save_user_velocity',...        'save_user_sinr','save_bs_sinr',...        'save_bs_mod','save_bs_fec','save_bs_dist','save_bs_poweradjust','save_bs_FrminErr','save_bs_mobID',...        'save_outageCnt','save_totalBitsSent','save_user_fair');end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -