-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpowercontrol.m
More file actions
32 lines (32 loc) · 1.25 KB
/
powercontrol.m
File metadata and controls
32 lines (32 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function [Ptout_dBm, Prout_dBm] = powercontrol(link_type, Pt_dBm, Pr_dBm, BS_sensitivity_dBm, MS_sensitivity_dBm, Ptmax_BS_dBm, Ptmin_BS_dBm, Ptmax_MS_dBm, Ptmin_MS_dBm, PCmargin_dB, delta)
% Apply Power Control Algorithm based on Delta
if(delta==0)
Ptout_dBm = Pt_dBm;
Prout_dBm = Pr_dBm;
else
A_dB = Pt_dBm - Pr_dBm;
PrcDL_dBm = MS_sensitivity_dBm + PCmargin_dB;
PrcUL_dBm = BS_sensitivity_dBm + PCmargin_dB;
switch link_type
case 1 % Downlink
Ptout_dBm = PrcDL_dBm + A_dB*delta;
Prout_dBm = PrcDL_dBm + A_dB*(delta-1);
if(Ptout_dBm >= Ptmax_BS_dBm)
Ptout_dBm = Ptmax_BS_dBm;
Prout_dBm = Ptout_dBm - A_dB;
elseif(Ptout_dBm <= Ptmin_BS_dBm)
Ptout_dBm = Ptmin_BS_dBm;
Prout_dBm = Ptout_dBm - A_dB;
end
case 2 % Uplink
Ptout_dBm = PrcUL_dBm + A_dB*delta;
Prout_dBm = PrcUL_dBm + A_dB*(delta-1);
if(Ptout_dBm >= Ptmax_MS_dBm)
Ptout_dBm = Ptmax_MS_dBm;
Prout_dBm = Ptout_dBm - A_dB;
elseif(Ptout_dBm <= Ptmin_MS_dBm)
Ptout_dBm = Ptmin_MS_dBm;
Prout_dBm = Ptout_dBm - A_dB;
end
end
end