📄 res_fair.m
字号:
% fairness% x: Delta T, y: fairness% for each UE, during its life time, assume the other UEs not finish their% transmission, calculate the fairness following the two equations% sort by Delta T and plotfunction [result,fileidx] = res_fair(test_resource_allocation_idx,UE,MIMO,loaddir,result,fileidx,av_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'];load([loaddir,'/',filename],'save_user_mobID','save_bs_mobID','save_bs_fec','save_bs_mod');colors = {[0.5 0.5 0.5],[0 0 0],[0 0.5 1],[0 0 1],[1 0 0.5],[1 0 0]};lst = {'-','-.','-','-.','-','-.'};RAs = {'RR','PF','MX','PF2'};para.RA = RAs{test_resource_allocation_idx};UEs = [4 10];para.UE = UE;para.ra_ix = test_resource_allocation_idx;if Comm_conf.F_LA == 2 && Comm_conf.F_PA == 2, para.ra_ix = 4;endif MIMO == 2, para.ra_ix = 5;endpara.ue_ix = find(UEs == para.UE);para.nuSymbol = 6;para.subN = Comm_conf.subN;para.Tfrm = 5e-4;fileidx = fileidx + 1;%%result.ra_idx(fileidx) = test_resource_allocation_idx;%% MS_all_mobID = save_user_mobID; BS_all_mobID = save_bs_mobID; BS_all_rate = save_bs_fec .* double(save_bs_mod); clear save_* max_mobID = max((BS_all_mobID(:,end))); Fa = zeros(1,max_mobID); Fr = zeros(1,max_mobID); ActiveLen = zeros(1,max_mobID); for mobID = 1:double(max_mobID) if mod(mobID,30) == 0, double(mobID)/double(max_mobID)*100 end interest_idx = find(sum((MS_all_mobID == double(mobID)),1)~=0); BS_mobIDs = double(BS_all_mobID(:,min(interest_idx):1:max(interest_idx))); BS_rate = BS_all_rate(:,interest_idx); MS_mobIDs = double(MS_all_mobID(:,interest_idx)); allocated_idx = zeros(size(BS_mobIDs,1),size(BS_mobIDs,2),para.UE); allocated_rate = zeros(size(BS_mobIDs,1),size(BS_mobIDs,2),para.UE); possible_users = cell(1,UE); for act_UE = 1:UE [tmp1, tmp2] = hist(MS_mobIDs(act_UE,:),[min(MS_mobIDs(act_UE,:)):1:max(MS_mobIDs(act_UE,:))]); possible_users{act_UE} = tmp2((tmp1~=0)); for act_mob = possible_users{act_UE} allocated_idx(:,:,act_UE) = ... allocated_idx(:,:,act_UE) + (BS_mobIDs == double(act_mob)); end allocated_rate(:,:,act_UE) = BS_rate.*allocated_idx(:,:,act_UE); end Am = squeeze(sum(sum(allocated_idx,1),2)); Rm = squeeze(sum(sum(allocated_rate,1),2)); if sum(sum(Am))~=0 Fa(mobID) = sum(Am)^2/(size(MS_mobIDs,1)*sum(Am.^2)); Fr(mobID) = sum(Rm)^2/(size(MS_mobIDs,1)*sum(Rm.^2)); Fa(mobID); Fr(mobID); ActiveLen(mobID) = length(interest_idx); ActiveLen(mobID); else Fa(mobID) = NaN; Fr(mobID) = NaN; ActiveLen(mobID) = NaN; end Fa(isnan(Fa)) = []; Fr(isnan(Fr)) = []; ActiveLen(isnan(ActiveLen)) = []; endresult.Fa{fileidx} = Fa;result.Fr{fileidx} = Fr;result.ActiveLen{fileidx} = ActiveLen;[activeLen_sort,idx] = sort(ActiveLen);Fa_sort = Fa(idx);Fr_sort = Fr(idx);fig_ix = 0;fig_ix = fig_ix + 1;cfigure(fig_ix);plot(5e-4 * average2(activeLen_sort,av_factor),average2(Fa_sort,av_factor),'color',colors{fileidx},'linestyle',lst{fileidx},'linewidth',2);hold on;result.figname{fig_ix}='fairness_alloc';xlabel('\Delta T in Second','FontSize',14,'fontname','times','FontWeight','b');ylabel('Allocation Fairness','FontSize',14,'fontname','times','FontWeight','b');result.LGDFa{fileidx} = [para.RA,',UE',num2str(para.UE),',F',num2str(Comm_conf.F_LA),'P',num2str(Comm_conf.F_PA),',',MIMO,',M:',sprintf('%3.2f',mean(Fa_sort))];fig_ix = fig_ix + 1;cfigure(fig_ix);plot(5e-4 * average2(activeLen_sort,av_factor),average2(Fr_sort,av_factor),'color',colors{fileidx},'linestyle',lst{fileidx},'linewidth',2);hold on;result.figname{fig_ix}='fairness_rate';xlabel('\Delta T in Second','FontSize',14,'fontname','times','FontWeight','b');ylabel('Datarate Fairness','FontSize',14,'fontname','times','FontWeight','b');result.LGDFr{fileidx} = [para.RA,',UE',num2str(para.UE),',F',num2str(Comm_conf.F_LA),'P',num2str(Comm_conf.F_PA),',',MIMO,',M:',sprintf('%3.2f',mean(Fr_sort))];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -