【无人机通信】实际地图下的无人机中继系统性能分析:覆盖、可靠性与资源分配附Matlab仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

👇 关注我领取海量matlab电子书和数学建模资料

🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。

🔥 内容介绍

在现代通信与应急响应领域,无人机(UAV)中继系统正逐渐展现出其独特的优势。特别是在连接偏远地区或受灾区域的医院等关键节点时,它有望成为保障可靠通信的重要手段。为了实现高效的资源分配和优质的服务,深入研究该系统的覆盖范围、可靠性以及信号相关性能指标至关重要。本文将通过详细的算法实现和数据分析,全面评估无人机中继系统在不同配置下的性能表现。

参数设置与数据处理

  1. 参数定义奠定基础

    在代码中,我们首先定义了一系列关键参数。Kmax设定了要测试的最大中继无人机数量,它决定了我们对系统规模的探索边界。coverageRadius_km表示无人机的有效覆盖半径,这直接影响着系统的覆盖范围。targetReliability则明确了所需的最差情况可靠性,是衡量系统通信质量的重要基准。此外,像带宽BW、发射功率Pt_dBm和噪声功率Noise_dBm等参数,对于评估信号质量和数据传输能力起着关键作用。

  2. 数据加载与预处理起步

    通过hospital_data()函数,我们获取了医院和机场的地理位置数据,包括经纬度信息。随后,经过一系列数学变换,将这些经纬度数据转换为平面坐标,形成节点集合NodesXY。在这个过程中,我们添加了机场位置到节点集合,确保在后续分析中考虑到所有关键位置。同时,定义了latlon2mm2latlon函数,方便在经纬度和平面坐标之间进行转换。

  3. 候选位置生成拓展空间

    为了确定中继无人机的潜在放置位置,我们基于节点坐标创建了一个网格,并通过多边形筛选,仅保留位于代表陆地区域多边形内部的点作为候选位置。这一步为后续的无人机放置算法提供了合理的搜索空间,确保无人机放置在实际可用的区域内。

中继无人机放置算法

  1. 贪婪 K - 中心算法核心剖析

    贪婪 K - 中心算法在本文的无人机中继系统中扮演着关键角色。其核心思想是通过迭代方式,每次选择距离现有中继无人机最远的点作为新的中继位置,逐步确定 K 个中继无人机的放置点,以此优化系统的覆盖范围或其他相关性能指标。这种算法的优势在于其简单直接,能够在一定程度上快速找到相对较优的无人机放置方案。

  2. 算法实现细节解析

    greedy_kcenter函数中,首先初始化第一个中继位置,通常选择节点集合的中心位置作为起始点。随后,在每次迭代中,通过计算候选位置与现有中继位置的距离,找到距离最远的候选点,并将其确定为新的中继位置。同时,更新距离矩阵,为下一次迭代做好准备。这一过程不断重复,直到确定 K 个中继无人机的位置。

性能指标计算与分析

  1. 可靠性指标细究
    • 成对可靠性建模

      :基于中继无人机与节点之间的距离,我们采用指数衰减模型来计算节点之间的成对可靠性。该模型假设信号强度随着距离增加而指数衰减,从而影响通信的可靠性。具体而言,通过计算每个节点对之间通过最近中继无人机的距离,并代入指数公式,得到它们之间的可靠性值。

    • 可靠性统计洞察

      :在得到所有节点对的可靠性值后,我们计算这些值的平均值和最小值,分别得到平均可靠性和最差可靠性。平均可靠性反映了系统整体的通信质量水平,而最差可靠性则揭示了系统在极端情况下的性能表现。通过分析这两个指标,我们能够全面评估系统的可靠性。

  2. 覆盖指标探讨
    • 覆盖比例精准计算

      :为了评估不同半径下的覆盖程度,我们通过计算覆盖区域与陆地总面积的比例来得到覆盖比例。覆盖区域由以中继无人机为圆心、特定半径的圆组成的多边形与陆地多边形的交集确定。同时,通过用 100% 减去覆盖比例,得到未覆盖比例,直观展示了未被覆盖的区域情况。

    • 覆盖地图直观呈现

      :借助 MATLAB 的绘图功能,我们绘制了不同半径下的中继无人机覆盖地图。在地图上,清晰展示了覆盖区域与节点(医院和机场)的位置关系,为直观理解系统覆盖效果提供了有力工具。

  3. 信号指标解析
    • SINR 科学计算

      :根据路径损耗模型,结合发射功率和噪声功率,我们计算了信号与干扰加噪声比(SINR)。具体来说,先通过路径损耗公式计算路径损耗PL,然后用发射功率减去路径损耗得到接收功率Pr,最后用接收功率减去噪声功率得到 SINR。通过取节点与所有中继无人机通信中的最大 SINR 值并求平均,我们得到平均 SINR,以此评估系统的信号质量。

    • 吞吐量合理推导

      :基于香农公式,利用平均 SINR 计算平均吞吐量。香农公式描述了在给定带宽和 SINR 的情况下,信道的最大传输速率。通过将平均 SINR 代入公式,我们得到平均吞吐量,反映了系统的数据传输能力。

结果展示与讨论

  1. 可靠性与无人机数量关系解读

    通过绘制平均可靠性和最差可靠性随中继无人机数量变化的曲线,我们发现随着无人机数量的增加,平均可靠性和最差可靠性总体上呈现上升趋势。这表明增加无人机数量有助于提升系统的通信可靠性。同时,将最差可靠性曲线与目标可靠性进行对比,我们可以清晰地看到在不同规模下系统满足可靠性要求的情况,为实际应用中确定合适的无人机数量提供了重要参考。

  2. 覆盖与半径关系洞察

    覆盖比例和未覆盖比例随覆盖半径变化的曲线显示,随着半径的增大,覆盖比例逐渐增加,未覆盖比例相应减少。这说明增大覆盖半径能够扩大系统的覆盖范围。然而,我们也需要注意到,半径的增大可能会对其他性能指标(如信号质量)产生影响。因此,在实际应用中,需要综合考虑各种因素,通过调整半径和无人机数量来实现最优的覆盖效果。

  3. 信号指标与半径关系分析

    平均 SINR 和平均吞吐量随覆盖半径变化的曲线呈现出一定的规律。随着半径的增大,平均 SINR 和平均吞吐量可能会出现先上升后下降的趋势。这是因为半径增大初期,覆盖范围扩大使得更多节点能够接收到信号,从而提升了信号质量和吞吐量;但当半径过大时,信号强度因距离增加而衰减,导致 SINR 下降,进而影响吞吐量。这表明在实际系统设计中,需要在覆盖范围和信号性能之间进行权衡。

  4. 综合讨论权衡决策

    综合分析各项指标之间的相互关系,我们认识到覆盖范围、可靠性和信号性能之间存在着复杂的相互影响。例如,扩大覆盖范围可能会导致信号质量下降,从而影响可靠性和吞吐量。因此,在实际系统设计中,需要根据具体应用需求,合理分配资源,调整相关参数,以实现系统性能的最优化。

⛳️ 运行结果

📣 部分代码

    clc; clear; close all;rng(10);%% ================== CONFIG ==================numHops = 8;MC = 12000;SNRdB = -20:2:20;SNRlin = 10.^(SNRdB/10);gamma_th_dB = 3; % outage thresholdgamma_th = 10^(gamma_th_dB/10);gamma_sw_dB = 8; % hybrid switching thresholdgamma_sw = 10^(gamma_sw_dB/10);alpha = 3.2; % path-loss exponentdf_gain = 1.15; % DF regeneration gain (cleaning/coding gain)% Slot/processing cost model (key for hybrid benefit)t_AF = 1; % AF hop costt_DF = 2; % DF hop cost (decode+re-encode overhead)%% ================== OUTPUTS ==================Pout_AF = zeros(size(SNRlin));Pout_DF = zeros(size(SNRlin));Pout_HY = zeros(size(SNRlin));Good_AF = zeros(size(SNRlin));Good_DF = zeros(size(SNRlin));Good_HY = zeros(size(SNRlin));Delay_AF = zeros(size(SNRlin));Delay_DF = zeros(size(SNRlin));Delay_HY = zeros(size(SNRlin));%% ================== MONTE CARLO ==================for s = 1:length(SNRlin)outAF = 0; outDF = 0; outHY = 0;sumGoodAF = 0; sumGoodDF = 0; sumGoodHY = 0;sumDelAF = 0; sumDelDF = 0; sumDelHY = 0;for mc = 1:MC%% ---- Build heterogeneous hops (strong + weak) ----gamma_hops = zeros(numHops,1);for h = 1:numHopsfading = exprnd(1);if h == 3 || h == 6d = 5200; % weak hopelsed = 1200; % strong hopendgamma_hops(h) = SNRlin(s) * fading * d^(-alpha);end%% ---- AF end-to-end (recursive) ----gAF = gamma_hops(1);for i = 2:numHopsgAF = (gAF * gamma_hops(i)) / (gAF + gamma_hops(i) + 1);end%% ---- DF end-to-end (bottleneck + regen gain) ----gDF = df_gain * min(gamma_hops);%% ---- HYBRID: DF on weak hops, AF on good hops ----mode = ones(numHops,1); % 1=AF, 0=DFmode(gamma_hops < gamma_sw) = 0;% Hybrid equivalent SNR:% AF segments collapse via AF recursion; DF hops are clean links.bottlenecks = [];% DF hops are direct bottlenecks (after regen gain)if any(mode==0)bottlenecks = [bottlenecks; df_gain * gamma_hops(mode==0)];end% AF segmentsidx = 1;while idx <= numHopsif mode(idx)==0idx = idx + 1;elseseg = [];while idx <= numHops && mode(idx)==1seg = [seg; gamma_hops(idx)];idx = idx + 1;endgseg = seg(1);for k = 2:length(seg)gseg = (gseg * seg(k)) / (gseg + seg(k) + 1);endbottlenecks = [bottlenecks; gseg];endendgHY = min(bottlenecks);%% ---- Outage events (SNR-based) ----if gAF < gamma_th, outAF = outAF + 1; endif gDF < gamma_th, outDF = outDF + 1; endif gHY < gamma_th, outHY = outHY + 1; end%% ---- Delay model (time slots) ----D_AF = numHops * t_AF;D_DF = numHops * t_DF;D_HY = sum(mode==1)*t_AF + sum(mode==0)*t_DF;%% ---- Goodput model (bits/s/Hz per time-slot) ----% if outage -> goodput = 0 for that runrAF = log2(1 + gAF) / D_AF;rDF = log2(1 + gDF) / D_DF;rHY = log2(1 + gHY) / D_HY;if gAF < gamma_th, rAF = 0; endif gDF < gamma_th, rDF = 0; endif gHY < gamma_th, rHY = 0; endsumGoodAF = sumGoodAF + rAF;sumGoodDF = sumGoodDF + rDF;sumGoodHY = sumGoodHY + rHY;sumDelAF = sumDelAF + D_AF;sumDelDF = sumDelDF + D_DF;sumDelHY = sumDelHY + D_HY;endPout_AF(s) = outAF/MC;Pout_DF(s) = outDF/MC;Pout_HY(s) = outHY/MC;Good_AF(s) = sumGoodAF/MC;Good_DF(s) = sumGoodDF/MC;Good_HY(s) = sumGoodHY/MC;Delay_AF(s) = sumDelAF/MC;Delay_DF(s) = sumDelDF/MC;Delay_HY(s) = sumDelHY/MC;end%% ================== FIG 1: OUTAGE ==================figure('Color','w','Position',[120 120 900 550]);semilogy(SNRdB, Pout_AF, '-o','LineWidth',2); hold on;semilogy(SNRdB, Pout_DF, '-s','LineWidth',2);semilogy(SNRdB, Pout_HY, '-^','LineWidth',2);grid on;xlabel('Transmit SNR (dB)');ylabel('Outage Probability (SNR < \gamma_{th})');title('Outage Probability: AF vs DF vs Hybrid');legend({'AF','DF','Hybrid AF-DF'}, 'Location','southwest');%% ================== FIG 2: GOODPUT (THIS WILL SEPARATE) ==================figure('Color','w','Position',[120 120 900 550]);plot(SNRdB, Good_AF, '-o','LineWidth',2); hold on;plot(SNRdB, Good_DF, '-s','LineWidth',2);plot(SNRdB, Good_HY, '-^','LineWidth',2);grid on;xlabel('Transmit SNR (dB)');ylabel('Goodput (bits/s/Hz per time-slot)');title('Goodput Comparison (Reliability + Delay): AF vs DF vs Hybrid');legend({'AF','DF','Hybrid AF-DF'}, 'Location','northwest');%% ================== FIG 3: DELAY (OPTIONAL) ==================figure('Color','w','Position',[120 120 900 550]);plot(SNRdB, Delay_AF, '-o','LineWidth',2); hold on;plot(SNRdB, Delay_DF, '-s','LineWidth',2);plot(SNRdB, Delay_HY, '-^','LineWidth',2);grid on;xlabel('Transmit SNR (dB)');ylabel('End-to-End Delay (time-slot units)');title('Delay Cost: AF vs DF vs Hybrid');legend({'AF','DF','Hybrid AF-DF'}, 'Location','northeast');

    🔗 参考文献

    🍅往期回顾扫扫下方二维码