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

该文利用Matlab进行无人航空器(UAV)辅助的5G通信研究,通过飞行基站(FBS)增强地基5G网络。内容包括评估、改进和开发用于路径规划的优化方法,关注数据传输、能耗分析及任务完成时间。文中通过实例展示了单个、两个、三个和四个无人机的情况,比较了它们在任务完成时间、距离覆盖和能量消耗上的差异。
摘要由CSDN通过智能技术生成

✅作者简介:热爱科研的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电子书和数学建模资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MATLAB是一种流行的计算软件,也用于无人机(UAV)仿真。为了完成UAV飞行仿真,需要使用MATLAB中的相关工具箱和UAV模型。这些工具箱包括航空、控制系统和仿真工具箱,其中包括多种算法和函数,可用于飞行控制和数据计算。UAV模型则是对UAV物理系统的数学表示,它包含如机体动力学、控制算法和运动规划等方面的参数。 在编写UAV仿真代码时,需要编写控制算法,此时需要使用MATLAB控制系统工具箱的PID算法或其他控制算法。此外,还需要编写运动规划算法,将输入设备的信息转换为具体的飞行动作。在仿真过程中,还需要考虑真实环境中的各种因素,例如风、重力和未知障碍物等,因此需要在代码中为UAV模型添加适当的传感器模块,指定模型初始状态和环境参数。 最后,在完成UAV仿真代码后,可以使用MATLAB自带的可视化工具来展示仿真结果。例如,使用MATLAB 3D可视化工具箱创建场景,并在其中展示UAV飞行轨迹和相应的实时数据。这样可以更加直观地观察仿真结果,同时也可以检查算法的准确度和性能。 ### 回答2: ### 回答3: MATLAB(矩阵实验室)是一款高级技术计算和可视化软件,可以帮助工程师和科学家进行数据分析、模拟和设计。在无人机领域,MATLAB可以用来模拟无人机系统、优化飞行控制算法和实现无人机自主飞行等任务,因此matlab无人机飞行仿真代码非常重要。 无人机飞行仿真主要涉及三个方面:无人机模型、飞行控制器和仿真环境。首先,需要建立无人机的数学模型,包括质量、惯性矩阵、空气动力学力学特性等,以便对其进行仿真。其次,需要设计适当的飞行控制器,包括姿态控制、高度控制、速度控制和导航控制等。最后,需要将其放入仿真环境中进行测试和验证。 通过MATLAB可以实现以上三个方面的功能,使得无人机飞行仿真得到更为精准的模拟。无人机模型可以采用MATLAB内置函数simulink进行建立,通过搭建模拟环境进行仿真。飞行控制器可以使用MATLAB的控制系统工具箱进行设计和优化,将算法与无人机模型进行整合。仿真环境可以使用MATLAB的3D可视化工具进行呈现,将实时数据通过可视化呈现出来。 总之,MATLAB无人机飞行仿真代码是配合MATLAB进行无人机系统仿真的代码库,在无人机系统设计和控制算法优化的过程中扮演着非常重要的角色。它在很大程度上加快了无人机系统的开发和测试过程,降低了开发成本,提高了研发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值