%Full-duplex MAC simulation by Shih Ying Chen
%This version modify v2 s.t.
% 1. the channel are reciprocal 2. the area is circle
clear all;
clc;
%% parameters setting
center_frequency=2.4*10^9;
number_STAs=100;% The total number of STAs
number_nodes=number_STAs+1;
radius=250;% meter
power_transmit_AP=10;% 10dBm=-20dBwatt
power_transmit_STA=0.5:0.5:10;% 10dBm=-20dBwatt
d_avo_threshold=4;%dB
total_time=100;
pro_up=0.8;
pro_down=0.8;
Monte_Carlo_T=1000;
%initial up/down probability
pro_STAs=zeros(2,number_STAs);
for i=1:number_STAs
pro_STAs(1,i)=pro_up;
pro_STAs(2,i)=pro_down;
end
%--
%% var: self_interference_channel_gain_STA
self_interference_channel_gain_STA=-70:-5:-100;
SNR_input=100;%dB
noise_power=power_transmit_AP-SNR_input;% -90dBm=-120dBwatt
K=size(self_interference_channel_gain_STA,2);
ave_rate_IA_DU=zeros(K,3); % column1:sumrate column2:uplink rate column3: downlink rate
ave_rate_IA_DU_RN=zeros(K,3);
ave_power_IA_DU=zeros(K,1);
ave_power_IA_DU_RN=zeros(K,1);
% ave_rate_IM_DU=zeros(K,3);
% ave_rate_SM_DU=zeros(K,3);
% ave_rate_SMM_DU=zeros(K,3);
% ave_rate_SRM_DU=zeros(K,3);
% ave_rate_HD_DU=zeros(K,3);
%
% ave_rate_IA_UD=zeros(K,3); % column1:sumrate column2:uplink rate column3: downlink rate
% ave_rate_IM_UD=zeros(K,3);
% ave_rate_SM_UD=zeros(K,3);
% ave_rate_SMM_UD=zeros(K,3);
% ave_rate_SRM_UD=zeros(K,3);
% ave_rate_HD_UD=zeros(K,3);
% ave_SINR_IA_DU_AP=zeros(K,1);
% ave_SINR_IM_DU_AP=zeros(K,1);
% ave_SINR_SM_DU_AP=zeros(K,1);
% ave_SINR_SMM_DU_AP=zeros(K,1);
% ave_SINR_SRM_DU_AP=zeros(K,1);
% ave_SINR_HD_DU_AP=zeros(K,1);
%
% ave_SINR_IA_UD_AP=zeros(K,1);
% ave_SINR_IM_UD_AP=zeros(K,1);
% ave_SINR_SM_UD_AP=zeros(K,1);
% ave_SINR_SMM_UD_AP=zeros(K,1);
% ave_SINR_SRM_UD_AP=zeros(K,1);
% ave_SINR_HD_UD_AP=zeros(K,1);
% ave_SINR_IA_DU_STA=zeros(K,1);
% ave_SINR_IM_DU_STA=zeros(K,1);
% ave_SINR_SM_DU_STA=zeros(K,1);
% ave_SINR_SMM_DU_STA=zeros(K,1);
% ave_SINR_SRM_DU_STA=zeros(K,1);
% ave_SINR_HD_DU_STA=zeros(K,1);
%
% ave_SINR_IA_UD_STA=zeros(K,1);
% ave_SINR_IM_UD_STA=zeros(K,1);
% ave_SINR_SM_UD_STA=zeros(K,1);
% ave_SINR_SMM_UD_STA=zeros(K,1);
% ave_SINR_SRM_UD_STA=zeros(K,1);
% ave_SINR_HD_UD_STA=zeros(K,1);
% ave_traffic_IA_DU_U=zeros(K,1);
% ave_traffic_IM_DU_U=zeros(K,1);
% ave_traffic_SM_DU_U=zeros(K,1);
% ave_traffic_SMM_DU_U=zeros(K,1);
% ave_traffic_SRM_DU_U=zeros(K,1);
% ave_traffic_HD_DU_U=zeros(K,1);
%
% ave_traffic_IA_UD_U=zeros(K,1);
% ave_traffic_IM_UD_U=zeros(K,1);
% ave_traffic_SM_UD_U=zeros(K,1);
% ave_traffic_SMM_UD_U=zeros(K,1);
% ave_traffic_SRM_UD_U=zeros(K,1);
% ave_traffic_HD_UD_U=zeros(K,1);
%
% ave_traffic_IA_DU_D=zeros(K,1);
% ave_traffic_IM_DU_D=zeros(K,1);
% ave_traffic_SM_DU_D=zeros(K,1);
% ave_traffic_SMM_DU_D=zeros(K,1);
% ave_traffic_SRM_DU_D=zeros(K,1);
% ave_traffic_HD_DU_D=zeros(K,1);
%
% ave_traffic_IA_UD_D=zeros(K,1);
% ave_traffic_IM_UD_D=zeros(K,1);
% ave_traffic_SM_UD_D=zeros(K,1);
% ave_traffic_SMM_UD_D=zeros(K,1);
% ave_traffic_SRM_UD_D=zeros(K,1);
% ave_traffic_HD_UD_D=zeros(K,1);
%% Monte Carlo method
for k=1:K
self_interference_channel_gain_AP=self_interference_channel_gain_STA(1,k);
for T=1:Monte_Carlo_T
%% andom deploy STAs in a circle
u=unifrnd(0,radius,[1,number_STAs])+unifrnd(0,radius,[1,number_STAs]);
r=zeros(1,number_STAs);
for i=1:size(u,2)
if u(1,i)>radius
r(1,i)=2*radius-u(1,i);
else
r(1,i)=u(1,i);
end
end
theta=unifrnd(0,2*pi,[1,number_STAs]);
coordinate_x=r.*cos(theta);
coordinate_y=r.*sin(theta);
coordinate=[coordinate_x;coordinate_y];
%% calculate distances
distance=zeros(number_STAs,number_STAs);
for i=1:number_STAs-1
for j=i+1:number_STAs
distance(i,j)=sqrt((coordinate(1,i)-coordinate(1,j))^2+(coordinate(2,i)-coordinate(2,j))^2);
distance(j,i)=distance(i,j);
end
end
distance_withAP=zeros(1,number_STAs);
for i=1:number_STAs
distance_withAP(1,i)=sqrt((coordinate(1,i))^2+(coordinate(2,i))^2);
end
%% calculate pathloss gain
pathloss_gain=-(20*log10(distance)+20*log10(center_frequency)-147.55);%dB
for i=1:number_STAs
pathloss_gain(i,i)=self_interference_channel_gain_STA(1,k);
end
pathloss_gain_withAP=-(20*log10(distance_withAP)+20*log10(center_frequency)-147.55);%dB
%% Rayleigh fading
fading_gain=pow2db(exprnd(1,number_STAs,number_STAs,total_time));%channelgain(row,cloumn)=STA1<-STA2
fading_gain_withAP=pow2db(exprnd(1,2,number_STAs,total_time));%row1: uplink(STA->AP) row2: downlink(AP->STA)
%channel reciprocal
fading_gain_withAP(2,:,:)=fading_gain_withAP(1,:,:);
for t=1:total_time
fading_gain(:,:,t)=triu(fading_gain(:,:,t))+triu(fading_gain(:,:,t),1).';
end
%% channel gain
channel_gain=zeros(number_STAs,number_STAs,total_time);
channel_gain_withAP=zeros(2,number_STAs,total_time);%row1: uplink(STA->AP) row2: downlink(AP->STA)
for t=1:total_time
channel_gain(:,:,t)= pathloss_gain;
channel_gain_withAP(1,:,t)=pathloss_gain_withAP;
channel_gain_withAP(2,:,t)=pathloss_gain_withAP;
end
channel_gain=channel_gain+fading_gain;
channel_gain_withAP=channel_gain_withAP+fading_gain_withAP;
%% generate traffic
traffic_up=zeros(number_STAs,total_time);
traffic_down=zeros(number_STAs,total_time);
for i=1:number_STAs
traffic_up(i,:)=randsrc(1,total_time,[1 0;pro_STAs(1,i) 1-pro_STAs(1,i)]);
traffic_down(i,:)=randsrc(1,total_time,[1 0;pro_STAs(2,i) 1-pro_STAs(2,i)]);
end
record_traffic_IA_DU=zeros(2,total_time);%row1:uplink row2:downlink
record_traffic_IA_DU_RN=zeros(2,total_time);
% record_traffic_IM_DU=zeros(2,total_time);
% record_traffic_SM_DU=zeros(2,total_time);
% record_traffic_SMM_DU=zeros(2,total_time);
% record_traffic_SRM_DU=zeros(2,total_time);
% record_traffic_HD_DU=zeros(2,total_time);
record_SINR_IA_DU=zeros(2,total_time);%row1:AP row2:user
record_SINR_IA_DU_RN=zeros(2,total_time);
% record_SINR_IM_DU=zeros(2,total_time);
% record_SINR_SM_DU=zeros(2,total_time);
% record_SINR_SMM_DU=zeros(2,total_time);
% record_SINR_SRM_DU=zeros(2,total_time);
% record_SINR_HD_DU=zeros(2,total_time);
% record_traffic_IA_UD=zeros(2,total_time);
% record_traffic_IM_UD=zeros(2,total_time);
% record_traffic_SM_UD=zeros(2,total_time);
% record_traffic_SMM_UD=zeros(2,total_time);
% record_traffic_SRM_UD=zeros(2,total_time);
% record_traffic_HD_UD=zeros(2,total_time);
record_power_IA_DU=zeros(1,total_time);
record_power_IA_DU_RN=zeros(1,total_time);
% record_SINR_IA_UD=zeros(2,total_time);
% record_SINR_IM_UD=zeros(2,total_time);
% record_SINR_SM_UD=zeros(2,total_time);
% record_SINR_SMM_UD=zeros(2,total_time);
% record_SINR_SRM_UD=zeros(2,total_time);
% record_SINR_HD_UD=zeros(2,total_time);
traffic_reg_first=zeros(number_STAs,1);%record traffic requirement of STAs for first transmission at each time slot
traffic_reg_second=zeros(number_STAs,1);%record traffic requirement of STAs for second transmission at each time slot
for t=1:total_time
channel_gain_temp=channel_gain(:,:,t);
channel_gain_withAP_temp=channel_gain_withAP(:,:,t);
%% DOWN-UP
traffic_reg_first(:,:)=0;
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计&课设-全双工的Matlab仿真.zip
共50个文件
m:50个
需积分: 0 2 下载量 182 浏览量
2024-01-08
23:02:49
上传
评论
收藏 39KB ZIP 举报
温馨提示
matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答! matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计&课设-全双工的Matlab仿真.zip (50个子文件)
matlab_code
src
Rate_different_schemes
fcn_SINR_Maximization_UD.m 733B
fcn_SINR_Maxmin_DU.m 1KB
fcn_Interference_Minimization_DU.m 629B
FDMAC_main_ray_with_channelgain_v3.m 33KB
plot_rate_with_channelgainv3.m 8KB
fcn_SINR_Maximization_DU.m 733B
fcn_SINR_calculate.m 1KB
fcn_rate_calculate.m 1KB
fcn_SumRate_Maximization_UD.m 839B
fcn_Interference_Avoidance_DU.m 1008B
fcn_SINR_Maxmin_UD.m 938B
fcn_Interference_Avoidance_UD.m 1010B
fcn_SumRate_Maximization_DU.m 839B
fcn_Interference_Minimization_UD.m 667B
CDF
fcn_SINR_Maximization_UD.m 733B
fcn_SINR_Maxmin_DU.m 1KB
fcn_Interference_Minimization_DU.m 629B
fcn_SINR_Maximization_DU.m 733B
fcn_SINR_calculate.m 1KB
plot_rate_with_channelgain_distance.m 2KB
fcn_rate_calculate.m 1KB
fcn_distance_calculate.m 845B
fcn_SumRate_Maximization_UD.m 839B
fcn_Interference_Avoidance_DU.m 1008B
fcn_SINR_Maxmin_UD.m 938B
fcn_Interference_Avoidance_UD.m 1010B
fcn_SumRate_Maximization_DU.m 839B
fcn_Interference_Minimization_UD.m 667B
FDMAC_main_ray_with_channelgain_distance_v1.m 23KB
PMF
fcn_SINR_Maximization_UD.m 733B
fcn_SINR_Maxmin_DU.m 1KB
fcn_Interference_Minimization_DU.m 629B
FDMAC_main_ray_with_channelgain_distance_v3.m 24KB
fcn_SINR_Maximization_DU.m 733B
fcn_SINR_calculate.m 1KB
fcn_rate_calculate.m 1KB
fcn_distance_calculate.m 845B
fcn_SumRate_Maximization_UD.m 839B
plot_rate_with_channelgain_distance_v3.m 3KB
fcn_Interference_Avoidance_DU.m 1008B
fcn_SINR_Maxmin_UD.m 938B
fcn_Interference_Avoidance_UD.m 1010B
fcn_SumRate_Maximization_DU.m 839B
fcn_Interference_Minimization_UD.m 667B
PowerControl
fcn_Interference_Avoidance_DU_RN.m 1KB
fcn_SINR_calculate.m 1015B
plot_rate_with_powcontrol_v1.m 2KB
fcn_rate_calculate.m 1023B
FDMAC_main_powcontrol_v1.m 33KB
fcn_Interference_Avoidance_DU.m 1KB
共 50 条
- 1
资源评论
白话机器学习
- 粉丝: 9291
- 资源: 7681
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 数据分析实战3-豆瓣top250数据分析和可视化
- tomcat安装及配置教程.md
- tomcat安装及配置教程.md
- 51单片机贴片心形灯原理图PCB程序 亚克力外壳.dwg资料
- 户型为单家独院式图纸编号D068-三层-20.60&13.40米-施工图.dwg
- 农村小别墅图纸编号D067-三层-10.00&11.50米- 施工图.dwg
- 三层独栋别墅图纸编号D066-三层-12.00&12.00米- 施工图.dwg
- 农村小别墅图纸编号D065-三层-14.40&18.55米-施工图.dwg
- 基于YOLOv8检测高铁吊弦缺陷实现的系统的Python源码+文档说明+训练源文件+模型.zip
- 三层农村小别墅图纸编号D064-三层-13.80&22.20米-施工图.dwg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功