无人驾驶飞行器 (UAV) 以飞行基站 (FBS) 的形式辅助 5G 通信附matlab代码

简介: 无人驾驶飞行器 (UAV) 以飞行基站 (FBS) 的形式辅助 5G 通信附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

Investigating the Unmanned Aerial Vehicle (UAV) assisted 5G communications in the form of flying base stations (FBSs). The techniques deployed include assessing, improving, and developing optimization methods to route drones that carry Flying Base Station (FBS) enhancing the terrestrial 5G network infrastructure. One way being effectively collecting and transmitting data through line of sight (LoS) communication to support flash crowds, machine type communication (IoTs), analysis of energy consumption, and total time to complete the tasks.

⛄ 部分代码

xv1 = [2 -2 4];

yv1 = [2 2 5.464];


xv2=[2 4 4];

yv2=[2 -1.4642 5.464];


xv3=[2 -2 4];

yv3=[2 2 -1.4642];


fx=[2,4]    

fy=[2,5.464]


%these coordinates represent traingle and the tangent in the three drone

%case


lx=[2,2];%lx and ly represent the two axis that cut the circle into 4 parts

ly=[0,4];


velocity=60 %velocity of the drone is 60m/s

power= 50   %power of the drone is 50W


 

d=zeros(5,1)



n=50; % number of points that you want

center = [2 ,2]; % center coordinates of the circle [x0,y0]

radius = 2; % radius of the circle

angle = 2*pi*rand(n,1);


rng(1)%fixes the points

r = radius*sqrt(rand(n,1));


 

x = center(1)+r.*cos(angle) ;%x coordinates of the points inscribed in my circle

y = center(2)+r.*sin(angle);%y coordinates of the points inscribed in my circle

x(1)=2;

y(1)=2;%center of the circle coordinates which is the base station in our case where the drone should launch from

v=[x,y]



%first case when we have one drone


   figure(1)

   plot( x, y, 'r*');

   axis equal

   X = v;

   s = size(X,1);

   [p,d1] = tspsearch(X,s)%the 2opt algorithm

   figure(2)

   tspplot(p,X,1)

   opts = statset('Display','final');

   distance_to_finish_the_task1=d1*1000

   time_to_finish_the_task1=distance_to_finish_the_task1/velocity  

   distance_onedrone=d1*1000

   time1=distance_onedrone/velocity

 

   energy_consumption1=power*(distance_onedrone/velocity)

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   figure(3)

   plot( x, y,'r*',ly,lx, 'r-');

   axis equal

   x_center = 2;

   y_center = 2;% coordinates of the center of the circle


   b=v(:,2);% each drone is going through one part of the circle the upper part for y>2 and lower part y<2 that is why the y coordinates are being called

   

   X = v( b<=y_center,:);

   s = size(X,1);

   [p,d1] = tspsearch(X,s)

   figure(4)

   tspplot(p,X,1)


   X =  v( b>=y_center,:);

   s = size(X,1);

   [p,d2] = tspsearch(X,s)

   figure(5)

   tspplot(p,X,1)


   opts = statset('Display','final');

 

   

   

    distance2=[d1*1000 d2*1000];

   distance_to_finish_the_task2=max(distance2);

   time_to_finish_the_task2=distance_to_finish_the_task2/velocity;

   

   distance_twodrones=(d1+d2)*1000;

   time2=((d1*1000/velocity)+(d2*1000/velocity))/2;

   energy_consumption2=power*(distance_twodrones/velocity);

   


 

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   


 

figure(6)


plot( x, y,'r*',xv3,yv3,'.-r',xv1,yv1,'.-r',xv2,yv2,'.-r',fx,fy, 'r-')

axis equal



a=v(:,1);

b=v(:,2);

in = inpolygon(a,b,xv1,yv1);


g= [a(in),b(in)]

   

   X=g;

   s = size(X,1);

   [p,d1] = tspsearch(X,s)

   figure(7)

   tspplot(p,X,1)



in = inpolygon(a,b,xv2,yv2);  

 l= [a(in),b(in)]

 

   X =  l;

   s = size(X,1);

   [p,d2] = tspsearch(X,s)

   figure(8)

   tspplot(p,X,1)

 


  in = inpolygon(a,b,xv3,yv3);  

  m= [a(in),b(in)]

 


   

   X = m;

   s = size(X,1);

   [p,d3] = tspsearch(X,s)

   figure(9)

   tspplot(p,X,1)

 

   opts = statset('Display','final');

   

   

 

   

   

   

   

 

   distance3=[d1*1000 d2*1000 d3*1000]

   distance_to_finish_the_task3=max(distance3)

   time_to_finish_the_task3=distance_to_finish_the_task3/velocity

   distance_threedrones=(d1+d2+d3)*1000

   time3=((d1*1000/velocity)+(d2*1000/velocity)+(d3*1000/velocity))/3

   energy_consumption3=power*(distance_threedrones/velocity)

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%






   X = v(a<=x_center & b<=y_center,:);

   s = size(X,1);

   [p,d1] = tspsearch(X,s)

   figure(10)

   tspplot(p,X,1)

 

   X =  v(a<=x_center & b>=y_center,:);

   s = size(X,1);

   [p,d2] = tspsearch(X,s)

   figure(11)

   tspplot(p,X,1)

 


   

   X = v(a>=x_center & b<=y_center,:);

   s = size(X,1);

   [p,d3] = tspsearch(X,s)

   figure(12)

   tspplot(p,X,1)

 



   

   X = v(a>=x_center & b>=y_center,:);

   s = size(X,1);

   [p,d4] = tspsearch(X,s)

   figure(13)

   tspplot(p,X,1)

   

   opts = statset('Display','final');

   

   


   distance4=[d1*1000 d2*1000 d3*1000 d4*1000];

   distance_to_finish_the_task4=max(distance4);

   time_to_finish_the_task4= distance_to_finish_the_task4/velocity;

   

   

   

   distance_fourdrones=(d1+d2+d3+d4)*1000;

   time4=((d1*1000/velocity)+(d2*1000/velocity)+(d3*1000/velocity)+(d4*1000/velocity))/4;

   

   energy_consumption4=power*(distance_fourdrones/velocity);

   

   

   



number_of_drones = {'1drone';'2drones';'3drones';'4drones'}

distance = [distance_onedrone;distance_twodrones;distance_threedrones;distance_fourdrones];

time = [time1;time2;time3;time4];

energy_consumption = [energy_consumption1;energy_consumption2;energy_consumption3;energy_consumption4];



time_to_finish_the_task=[time_to_finish_the_task1;time_to_finish_the_task2;time_to_finish_the_task3;time_to_finish_the_task4];

distance_to_finish_the_task=[distance_to_finish_the_task1;distance_to_finish_the_task2;distance_to_finish_the_task3;distance_to_finish_the_task4];



xorigin=xlim %starting from zero

yorigin=ylim %starting from zero




drones_1dist=sqrt(((time1-xorigin(1))^2 )+((energy_consumption1-yorigin(1))^2))


drones_2dist=sqrt(((time2-xorigin(1))^2 )+((energy_consumption2-yorigin(1))^2))


drones_3dist=sqrt(((time3-xorigin(1))^2 )+((energy_consumption3-yorigin(1))^2))


drones_4dist=sqrt(((time4-xorigin(1))^2 )+((energy_consumption4-yorigin(1))^2))

trade_off=[drones_1dist;drones_2dist;drones_3dist;drones_4dist]


best_trade_off=min([drones_2dist,drones_3dist,drones_1dist,drones_4dist])


table = array2table(trade_off);

table.Properties.VariableNames = {'distance_fourdrones'}

bar(trade_off)

%%%%%

timee= 7 + (9-7).*rand(n,1)

hovering_time=sum(timee)


total_energy_consumption1=power*((distance_onedrone/velocity)+hovering_time);

total_energy_consumption2=power*((distance_twodrones/velocity)+hovering_time);

total_energy_consumption3=power*((distance_threedrones/velocity)+hovering_time);

total_energy_consumption4=power*((distance_fourdrones/velocity)+hovering_time);


total_energy_consumption=[total_energy_consumption1;total_energy_consumption2;total_energy_consumption3;total_energy_consumption4];

total_time=[time1+hovering_time;time2+hovering_time;time3+hovering_time;time4+hovering_time];

total_time_to_finish_the_task=[time_to_finish_the_task1+hovering_time;time_to_finish_the_task2+hovering_time;time_to_finish_the_task3+hovering_time;time_to_finish_the_task4+hovering_time];

D=[distance_onedrone;distance_twodrones;distance_threedrones;distance_fourdrones];


drone_one1=[time1;time_to_finish_the_task1];

drone_one2=[time2;time_to_finish_the_task2];

drone_one3=[time3;time_to_finish_the_task3];

drone_one4=[time4;time_to_finish_the_task4];

data = [drone_one1 drone_one2 drone_one3 drone_one4 ];

figure(14)

hb = bar(data)

set(hb(1), 'FaceColor','r')

set(hb(2), 'FaceColor','b')

set(hb(3), 'FaceColor','g')

set(hb(4), 'FaceColor','y')

ylabel('Time in sec');

set(gca,'XTickLabel',{'average time spent by the drones','time to complete the task'})

set(hb, {'DisplayName'}, {'one drone','two drones','three drones','four drones'}')

legend()

figure(15)


labels = {'one drone','two drones','three drones','four drones'};


plot(total_time_to_finish_the_task,distance_to_finish_the_task,'o',total_time_to_finish_the_task,distance_to_finish_the_task)

text(total_time_to_finish_the_task,distance_to_finish_the_task,labels,'VerticalAlignment','bottom','HorizontalAlignment','right')

ylabel('Distance Covered by the UAV with the Longest Route');

xlabel('Time to complete the task in sec');


figure(16)

labels = {'one drone','two drones','three drones','four drones'};

plot(total_time_to_finish_the_task,total_energy_consumption,'o',total_time_to_finish_the_task,total_energy_consumption)

text(total_time_to_finish_the_task,total_energy_consumption,labels,'VerticalAlignment','bottom','HorizontalAlignment','right')

ylabel('Total Energy Consumption in Joules');

xlabel('Time to complete the Task by the UAVs in sec');



figure(17)

labels = {'one drone','two drones','three drones','four drones'};

plot(time,energy_consumption,'o',time,energy_consumption)

ylabel('Energy Consumption in Joules Excluding Houvering Energy');

xlabel('Time to Complete the Task by the Drones in sec Excluding houvering time');

text(time,energy_consumption,labels,'VerticalAlignment','bottom','HorizontalAlignment','right')




figure(18)

labels = {'one drone','two drones','three drones','four drones'};

plot(total_time,total_energy_consumption,'o',total_time,total_energy_consumption)

text(total_time,total_energy_consumption,labels,'VerticalAlignment','bottom','HorizontalAlignment','right')

ylabel('Total Energy Consumption in Joules ');

xlabel('Average Time Spent by the UAVs in sec');




figure(19)


[maxBar,maxIndex] = max(trade_off);

[minBar,minIndex] = min(trade_off);

figure(100)

bar(trade_off)


text(minIndex-0.5,minBar+5,'Best Trade Off')

set(gca,'XTickLabel',{'one drone','two drones','three drone','four drones'})

xtickangle(45)

xlabel('Number of Drones');

ylabel('Euclidean Distance From the Origin to Each Drone in Meters')

 

title('Best Trade off')

box off

⛄ 运行结果

⛄ 参考文献


⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
3月前
|
机器学习/深度学习 存储 算法
基于Actor-Critic(A2C)强化学习的四旋翼无人机飞行控制系统matlab仿真
基于Actor-Critic强化学习的四旋翼无人机飞行控制系统,通过构建策略网络和价值网络学习最优控制策略。MATLAB 2022a仿真结果显示,该方法在复杂环境中表现出色。核心代码包括加载训练好的模型、设置仿真参数、运行仿真并绘制结果图表。仿真操作步骤可参考配套视频。
150 0
|
3月前
|
边缘计算 物联网 5G
5G小基站技术:解决室内覆盖难题
【10月更文挑战第25天】
201 5
|
4月前
|
机器学习/深度学习 人工智能 5G
探索5G革命中的虚拟化基站(vRAN):定义、功能与前景
探索5G革命中的虚拟化基站(vRAN):定义、功能与前景
241 5
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
138 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
8月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
8月前
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
9月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
9月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度

热门文章

最新文章