资源简介
D2D信道分配仿真,算法有启发式算法,最优算法等,仿真介入D2D对随干扰门限的变化等。
代码片段和文件信息
N=33; %num of up_link channels
R=500; %celluar radius
center=[00]; %coorninate of celluar center
max_d2d_dist=50;
BW=10e7; %10MHz
N0_spec=-174; % -174dBm/Hz
ce_snr_threshold=10; % snr 10dB;
Pmax=23; %max transmit 23dBm;
T0=-10; %SNIR threshold
I0=-160:4:-20; %interference threshold
LOOP=1000;
num_d2d_heu=zeros(size(I0));%启发式算法 不同干扰情况下的接入对数的和向量
num_d2d_opt=zeros(size(I0));% 最优化算法
num_d2d_random=zeros(size(I0));%随机算法
int_heu=0;
int_opt=0;
int_random=0;
%% generate and plot celluar users and D2D users
for L=1:LOOP
fprintf(‘The %d calculate\n‘L);
index=0;
for I=I0
index=index+1;
ues=gen_user(centerMR); %产生蜂窝用户
[tr_d2drc_d2d]=gen_d2d(centermax_d2d_distKR); %产生D2D对
%% 画出整个蜂窝的撒点图
% rectangle(‘Position‘[center(1)-Rcenter(2)-R2*R2*R]‘Curvature‘[11])axis equal
% hold on;
% scatter(00‘filled‘‘d‘);
% hold on;
% scatter(real(ues)imag(ues)30‘r‘‘LineWidth‘1‘Marker‘‘*‘);
% hold on;
% scatter(real(tr_d2d)imag(tr_d2d)40‘b‘‘LineWidth‘2‘Marker‘‘o‘);
% hold on;
% scatter(real(rc_d2d)imag(rc_d2d)40‘g‘‘LineWidth‘2‘Marker‘‘o‘);
%% calculate N0
N0=10*log10(10^(N0_spec/10)*(BW/N)); % 噪声功率
%% calculate celluar users to basestation path loss and transmit power
pathloss_cb=cal_pathloss(ues); %计算蜂窝用户到基站的链路增益
ce_power=ce_snr_threshold+N0-pathloss_cb; %计算蜂窝用户的发送功率
ce_power=min(Pmaxce_power); % 不能超过蜂窝用户的最大发射功率
%% calculate Akm Akm=Pm*Hkm
%Hkm
dist_km=bsxfun(@minusuesrc_d2d.‘); %计算蜂窝用户与D2D接收端的距离矩阵
Hkm=cal_pathloss(dist_km); %计算蜂窝用户与D2D接收端的增益矩阵
Amk=bsxfun(@plusce_powerHkm); % 计算蜂窝用户对D2D对的干扰
Hdk=cal_pathloss_d2d(tr_d2drc_d2d); %D2D对之间的增益
interf_noise=10*log10(10^(N0/10)+10.^(Amk./10)); %蜂窝用户对D2D对用的干扰与噪声之和
Pkm=bsxfun(@minusT0+interf_noiseHdk‘); %通过信干噪比的门限值,反过来算D2D的发射功率矩阵
Hsk=cal_pathloss(tr_d2d); %D2D发射端到基站的链路增益
Ikm=bsxfun(@plusPkmHsk‘); %计算D2D对基站的干扰矩阵
%% heuristic algorithm
theta_km=zeros(size(Ikm)); %准入矩阵
theta_km(IkmIk0m=get_Ik0m(Ikmtheta_kmINM); %根据空信道的个数与准入矩阵去除干扰较大的D2D用户对
K0=size(Ik0m1); %拟接入的D2D用户对的个数
[num_d2d_acc_heuint_heu]=heuristic(Ik0mK0INM); %启发式算法 计算接入D2D的个数
num_d2d_heu(index)=num_d2d_heu(index)+num_d2d_acc_heu;
%% optimal algorithm
[num_d2d_acc_optint_opt]=optimal(Ik0mK0IN); %最优化 算法
num_d2d_opt(index)=num_d2d_opt(index)+num_d2d_acc_opt;
%% random algorithm
[nun_d2d_acc_randint_random]=random_algorithm(IkmKMNI); %随机算法
num_d2d_random(index)=num_d2d_random(index)+nun_d2d_acc_rand;
end
end
ave_int_heu=ave_int_heu/LOOP;
ave_int_opt=ave_int_opt/LOOP;
ave_int_random=ave_int_random/LOOP;
plot(I0ave_int_heu‘b:d‘I0ave_int_opt‘r-.p‘I0ave_int_random‘-g<‘);
xlabel(‘interference threshold of BS(dBm)‘);
ylabel(‘average interference caused by each D2D transmission(dBm)‘);
legend(‘proposed heuristic algorithm‘‘optimal algorithm‘‘random algorithm‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-06-10 23:21 D2D3\
目录 0 2017-06-11 17:57 D2D3\D2D\
文件 3182 2017-06-10 23:17 D2D3\D2D\ave_interference.m
文件 3591 2017-06-11 12:12 D2D3\D2D\ave_int_distance.asv
文件 3661 2017-06-11 17:45 D2D3\D2D\ave_int_distance.m
文件 227 2017-06-10 14:35 D2D3\D2D\cal_pathloss.m
文件 232 2017-06-10 14:35 D2D3\D2D\cal_pathloss_d2d.m
目录 0 2017-06-10 14:33 D2D3\D2D\D2D\
文件 240 2017-06-08 20:05 D2D3\D2D\D2D\cal_pathloss.m
文件 268 2017-06-08 20:25 D2D3\D2D\D2D\cal_pathloss_d2d.m
文件 1445 2017-06-08 15:12 D2D3\D2D\D2D\gen_d2d.m
文件 588 2017-06-08 14:51 D2D3\D2D\D2D\gen_user.m
文件 370 2017-06-09 11:13 D2D3\D2D\D2D\get_Ik0m.m
文件 483 2017-06-09 14:09 D2D3\D2D\D2D\heuristic.m
文件 1853 2017-06-09 16:11 D2D3\D2D\D2D\main.m
文件 4325 2017-06-09 17:00 D2D3\D2D\Edmonds.m
文件 1445 2017-06-08 15:12 D2D3\D2D\gen_d2d.m
文件 588 2017-06-08 14:51 D2D3\D2D\gen_user.m
文件 382 2017-06-10 14:36 D2D3\D2D\get_Ik0m.m
文件 666 2017-06-11 17:37 D2D3\D2D\heuristic.m
文件 3193 2017-06-10 20:56 D2D3\D2D\main.m
文件 650 2017-06-11 13:44 D2D3\D2D\optimal.m
文件 3259 2017-06-10 22:56 D2D3\D2D\pair_max_d2d.m
文件 741 2017-06-11 17:41 D2D3\D2D\random_algorithm.asv
文件 766 2017-06-11 17:42 D2D3\D2D\random_algorithm.m
评论
共有 条评论