
简介在无线通信与MATLAB仿真学习中大尺度衰落模型用于刻画信号远距离传播时的路径损耗与阴影衰落是网络规划、覆盖评估和系统性能分析的重要基础。资源内容围绕这一主题展开既解释路径损耗的对数距离公式与路径损耗指数选取也演示对数正态阴影衰落的生成逻辑并给出参数设置、损耗计算、随机阴影叠加、结果绘图等完整流程适合通信专业学生、算法仿真初学者及从事无线网络设计的技术人员参考。内容重点覆盖参考距离、路径损耗指数、阴影衰落标准差等关键参数读者可按示例思路对照调整参数观察不同环境下接收信号功率的变化趋势加深对模型物理意义的理解。压缩包体积约59KB文件总数统计为0项当前未提供文件类型明细已有1860人学习浏览。整体可作为大尺度衰落建模入门与MATLAB实操的补充材料帮助读者理解信号强度随距离与环境的波动规律。1. 无线信号越走越弱大尺度衰落模型在描述什么在无线网络规划里最常被问的问题不是“用哪种调制方式”而是“这个站到底能覆盖多远”。答案很大程度上由大尺度衰落模型决定信号在几百米到几公里尺度上衰减多少路径损耗和阴影衰落各自贡献几何。大尺度衰落模型用来描述远距离传输中环境因素造成的功率损耗它不关心多径引起的毫秒级抖动只关心“平均来看信号弱了多少”。这篇文章把这个模型拆开讲清楚——公式里每个参数怎么定、用 MATLAB 怎么仿真、仿真结果怎么落进链路预算并把几个容易翻车的地方指出来。适合正在做网络规划、课程设计或无线信道仿真的工程师和学生照着代码跑一遍就能看到一条“越走越弱”的真实衰落曲线。2. 模型的两块基石路径损耗指数与对数正态阴影衰落2.1 路径损耗为什么 d0 和 n 比公式本身更值得较真路径损耗是大尺度衰落里确定性最强的那部分。信号在自由空间传播时能量球面扩散接收功率按距离平方衰减换算成 dB 就是每增加十倍距离多衰减 20 dB。真实环境里地面反射、植被吸收、建筑绕射都会让衰减变快于是工程上普遍采用对数距离路径损耗模型PL(d) PL(d0) 10 * n * log10(d / d0)这里 PL(d) 是距离 d 处的路径损耗PL(d0) 是参考距离 d0 处的路径损耗n 是路径损耗指数。它的物理含义很直观在双对数坐标系里路径损耗是一条直线斜率由 n 决定n 越大信号随距离恶化越快。实际使用中有两个参数比公式本身更值得较真。第一个是参考距离 d0它不能随便定。室内场景常用 1 m室外蜂窝宏站常用 100 m 或 1 km。d0 选得不同PL(d0) 就不同对应的模型参数也不能直接搬用。常见做法是d0 处的损耗优先用实测值没有实测数据时用自由空间路径损耗公式估算即 PL(d0) 20 * log10(4 * pi * d0 / lambda)lambda 是载波波长。第二个参数是路径损耗指数 n。不少初学者以为 n 取 2 就是默认答案但那个值只适合理想自由空间。城市环境的典型取值在 2.73.5 之间密集城区可能到 35室内有隔断的办公环境甚至到 47。原文示例代码里 n 3.7对应的是密集城区宏蜂窝场景不算夸张。不同环境下的参考取值可以按下面这张表快速对齐环境路径损耗指数 n备注自由空间2.0理想传播实际很少达到城市宏蜂窝2.73.5开阔街区建筑遮挡中等密集城区宏蜂窝3.05.0高楼密集绕射损耗严重室内视距1.61.8波导效应衰减反而慢室内非视距3.04.5穿墙损耗主导顺带提醒一句公式里的 d / d0 是无量纲比值d 和 d0 必须统一单位。我在评审代码时见过不少把 d 写 5km、把 d0 写 100m最后曲线歪到完全没法解释的情况。这类问题我放在第 4 章的避坑清单里展开。2.2 阴影衰落8dB 标准差不是随便拍的它来自实测统计路径损耗只能描述“平均意义上的衰减”真正在固定距离测接收功率会发现每次结果都不一样。同一位置附近来回移动几米接收功率可能波动几个 dB换了街区、过了山头波动更大。这部分由建筑物、地形等大尺寸障碍物引起的慢变化就是阴影衰落。阴影衰落的标准模型是对数正态分布接收功率的 dB 值围绕路径损耗预测值呈高斯分布。为什么偏偏是高斯因为信号穿过遮挡物时每一层遮挡都是乘性损耗多个遮挡因子相乘后取对数就变成多个随机量的求和按中心极限定理自然趋向正态。数学上表示为received_power_dB PL(d) X_sigma, X_sigma ~ N(0, sigma^2)这里的 sigma 是阴影衰落标准差单位是 dB。原文代码里取 std_dev 8这其实是一个有代表性的工程取值城市宏蜂窝环境的阴影衰落标准差典型范围在 610 dB 之间8 dB 对应中等偏密集的城区。郊区开阔环境可能只有 46 dB室内复杂环境可能到 1012 dB。换环境时这个值必须跟着换。阴影衰落还有两个容易被忽略的特性。第一它在时间上是慢变的秒级甚至分钟级尺度内基本保持不变所以单次快照测量看到的就是一个固定的随机偏移。第二它的空间相关性很强两点距离几十米内功率偏移往往是正相关的这也是为什么网络规划里常用位置余量location margin来处理它而不是当作独立噪声逐点处理。和小尺度衰落瑞利、莱斯完全不同大尺度衰落模型处理的是空间平均后的趋势两者在仿真的时间尺度和统计口径上要分开。3. MATLAB 实现大尺度衰落从单次仿真到可复用函数3.1 参数定义与路径损耗计算先统一单位再算对数仿真第一步是把参数写清楚。这里我用一个贴近真实宏蜂窝场景的配置n 3.7d0 100 md 从 100 m 到 5000 m 按 100 m 步进扫描。% 大尺度衰落模型参数定义与路径损耗计算 n 3.7; % 路径损耗指数密集城区典型值 d0 100; % 参考距离 (m)室外场景取 100 m PL0 0; % 参考距离处的路径损耗先置 0 便于观察增量 d 100:100:5000; % 距离向量100 m 到 5000 m步进 100 m % 对数距离路径损耗模型 PL PL0 10 * n * log10(d / d0);这段代码里最关键的是 log10(d / d0) 这一项。d 和 d0 都是米比值无量纲数学上才成立。PL0 0 意味着当前算出来的是“相对于参考点的损耗增量”不是绝对接收功率。这一点先记着后面做链路预算时我们会把它替换成真实损耗。注意一个细节这里我把 d0 设成距离向量的起点。如果像原示例那样 d0 1000、d 从 100 开始log10(d / d0) 会产生负值数学上没错——距离小于参考距离时损耗自然小于参考损耗——但画图时曲线会出现一段“回升”容易让读图的人误以为模型有问题。我一般习惯让 d0 等于距离扫描范围的最小值或者干脆用 1 m 做参考距离这样整条曲线都是正的损耗展示起来更清爽。3.2 阴影衰落合并与可视化randn 缩放的物理意义路径损耗是平滑曲线加上阴影衰落才像实测数据。实现方式是用 randn 生成标准正态随机数再乘以标准差 sigma。这一步的物理意义要讲清楚randn 产生的是 N(0, 1) 分布乘以 8 dB 后变成 N(0, 64)也就是标准差为 8 dB 的随机偏移把这个偏移加到路径损耗上就得到了均值为 PL(d)、方差为 64 的对数正态衰落接收功率。% 阴影衰落生成对数正态随机偏移 std_shadow 8; % 阴影衰落标准差 (dB) shadowing std_shadow * randn(size(d)); % 标准正态随机数缩放 % 接收功率 路径损耗 阴影衰落dB 域相加 received_power PL shadowing; % 可视化对比 figure(Color, w); plot(d / 1000, received_power, b-, LineWidth, 1.0); hold on; plot(d / 1000, PL, r--, LineWidth, 1.5); xlabel(距离 (km)); ylabel(接收功率 (dB)); legend(含阴影衰落, 仅路径损耗, Location, best); grid on;运行后会看到蓝色曲线在红色曲线附近上下摆动摆动幅度大致在 ±15 dB 以内。这条锯齿状曲线很容易让第一次跑的人产生“代码是不是写错了”的怀疑其实它是随机抽样的正常表现每次运行 randn 结果都不同蓝色曲线的形状也会跟着变。如果希望结果可复现需要固定随机种子下面会细说。还有一个常见口径问题received_power 到底是什么。如果 PL0 0它只是“相对参考距离的接收功率衰减量”如果 PL0 是自由空间损耗、又加上发射功率和天线增益它才代表真实的接收电平。仿真时可以把“相对值”和“绝对值”分开看但画图、写报告时一定要标清楚否则后面做链路预算容易把量纲搞混。3.3 封装成函数把单次脚本变成可复用工具单次脚本跑通后最值得做的一步是把核心逻辑封装成 MATLAB 函数。这样换环境、换频率、对比不同参数时不需要改主流程代码只改输入参数。function received_power large_scale_fading(n, d0, PL0, d, std_shadow) % 大尺度衰落模型仿真 % 输入: % n - 路径损耗指数密集城区取 3~5 % d0 - 参考距离 (m)建议等于距离向量起点 % PL0 - 参考距离处的路径损耗 (dB)可以是自由空间损耗 % d - 距离向量 (m) % std_shadow - 阴影衰落标准差 (dB)城市宏蜂窝典型 4~10 % 输出: % received_power - 接收功率相对值或绝对值 (dB) PL PL0 10 * n * log10(d / d0); shadowing std_shadow * randn(size(d)); received_power PL shadowing; end调用方式很简单d 100:100:5000; p large_scale_fading(3.7, 100, 0, d, 8); plot(d / 1000, p);函数化的收益在跑参数扫描时特别明显。比如要看 n 从 2.5 变到 4.5 对覆盖的影响只需在循环里反复调用这个函数收集不同 n 下的接收功率曲线。注意 randn 在函数内部每次调用都会重新随机所以做对比实验时要在主脚本最前面加一句 rng(2024) 固定种子保证不同参数下的差异来自参数本身而不是随机噪声。4. 大尺度衰落仿真避坑五个最常翻车的现场仿真本身不复杂但这几年我帮人排查过不少衰落模型的异常结果问题几乎都集中在下面五个点上。按“现象 → 原因 → 解决”的套路逐个说建议对照自己的代码过一遍。4.1 参数与代码层的坑负数对数、单位混乱、参数不随环境变第一个坑d 从 0 或 1 开始曲线先大幅下跌再缓慢上升。原因是对数距离模型只在 d d0 时成立d 小于 d0 时 log10(d / d0) 是负值路径损耗变成负的看起来像“信号越走越强”。解决方法是把 d0 设为距离向量的起点或对 d d0 的数据直接截断不让它们进入模型。第二个坑单位混乱。d 用 km 表示d0 却填 100 m比值变成 1/0.1计算结果整体偏移斜率也完全对不上。原因很简单log10(d / d0) 要求上下同单位、比值无量纲。解决办法是统一到 m 或统一到 km代码里加注释标明单位运行前先检查 d(1) 和 d0 的数值大小是否在合理量级。第三个坑换了一个环境仿真曲线几乎不变。原因是路径损耗指数 n 和阴影衰落标准差 std_shadow 没有跟着变还在用上一个场景的值。解决方法是把 n 和 std_shadow 做成函数参数按第 2 章的典型值表逐项替换。我自己的习惯是把环境类型写成字符串参数比如 urban、suburban、indoor在函数内部查表赋值这样代码的可读性比裸传数字好得多。4.2 结果与统计层的坑单次仿真误读、dB 域平均、基准含义不清第四个坑连续运行两次锯齿曲线形状完全不同怀疑 randn 有 bug。这其实是随机仿真的正常现象单次运行只是对统计分布的一次抽样。解决办法分两步想完全复现结果就在脚本开头写 rng(2024) 固定随机种子想做有意义的结论就不要看单次曲线而是跑几百上千次蒙特卡洛看统计分布或分位数。第五个坑直接把同一位置两次测量的 dB 接收功率做算术平均或者把两条不同距离曲线的 dB 值求均值。dB 是对数域线性域功率平均得到的“真实平均功率”大于 dB 域算术平均。最简单的例子0 dBm 和 -20 dBm 的 dB 算术平均是 -10 dBm但线性平均是约 -0.97 dBm差了 9 dB。在链路预算里混用这两套口径结果会严重偏离实测。解决办法是始终在 dB 域做加减只有需要功率合成时才先转线性域、算完再转回 dB。第六个坑和前面的 PL0 设定相关算出来的接收功率是正的比如 30 dB于是怀疑模型错了。原因一般是 PL0 0 且没加发射功率、天线增益received_power 只是“损耗相对量”不是真实接收电平。解决方法是明确给出发射功率 Pt、发射增益 Gt、接收增益 Gr用链路预算公式 Pr Pt Gt Gr - PL(d) 计算绝对接收功率。接下来这一章就专门讲这个。5. 从仿真到链路预算把衰落模型用进真实覆盖评估5.1 链路预算的构成路径损耗是骨架阴影余量是肉大尺度衰落模型仿真不能停在“画曲线”这一步真正有价值的是把它接进链路预算回答“覆盖半径到底多大”。链路预算的骨架就是把所有增益和损耗按 dB 域相加Pr(d) Pt Gt Gr - PL(d) - shadow_margin其中 Pt 是发射功率dBmGt 和 Gr 分别是收发天线增益dBiPL(d) 是路径损耗shadow_margin 是为阴影衰落预留的余量。为什么需要余量因为阴影衰落是随机量如果预算里不留余量边缘用户有一半概率接收功率低于设计门限。留 8 dB 余量边缘覆盖可靠度大约 84%留 1.65 * sigma ≈ 13.2 dB可靠度约 95%。以一个 2.4 GHz 宏蜂窝为例参数按常见配置取参数取值说明发射功率 Pt43 dBm约 20 W宏基站典型发射天线增益 Gt18 dBi定向天线接收天线增益 Gr0 dBi手机内置天线载波频率2.4 GHz波长约 0.125 m参考距离 d0100 m室外宏站参考点PL(d0)约 80 dB自由空间损耗估算路径损耗指数 n3.7密集城区阴影标准差 sigma8 dB城市宏蜂窝接收灵敏度 Pr_min-100 dBm保证基本速率的最低电平这里 PL(d0) 用自由空间公式估算20 * log10(4 * pi * 100 / 0.125) ≈ 80 dB实际模型中可以用实测替换。注意链路预算里全部是 dB 域加减每一项都是独立的损耗或增益这也是上一章避坑点里强调“不混用口径”的延续。5.2 反算覆盖半径从灵敏度倒推最大距离并留出余量把链路预算反过来用就能从接收灵敏度倒推最大覆盖距离。先看不考虑阴影余量的理想情况。% 链路预算反算覆盖半径仅路径损耗 Pt 43; Gt 18; Gr 0; % 发射功率和天线增益 (dB) Pr_min -100; % 接收灵敏度 (dBm) PL_budget Pt Gt Gr - Pr_min; % 允许的总路径损耗约 161 dB d0 100; PL0 80; n 3.7; % 参考距离、参考损耗、损耗指数 d_max d0 * 10^((PL_budget - PL0) / (10 * n)); fprintf(不考虑阴影余量最大覆盖距离约 %.1f km\n, d_max / 1000);这段代码等同于把链路预算公式反转已知允许损耗求满足该损耗的最大距离。运行结果是十几公里量级看起来覆盖能力很强但这是在“所有用户都恰好落在平滑路径损耗曲线上”的假设下得到的实际工程里完全不可用。接下来加阴影余量。% 加入阴影衰落余量后的覆盖半径 sigma 8; % 阴影衰落标准差 (dB) shadow_margin 1.65 * sigma; % 95% 边缘覆盖概率对应系数 PL_budget_with_margin PL_budget - shadow_margin; d_max_margin d0 * 10^((PL_budget_with_margin - PL0) / (10 * n)); fprintf(留 %.1f dB 阴影余量后最大覆盖距离约 %.1f km\n, ... shadow_margin, d_max_margin / 1000);加入 13.2 dB 余量后覆盖半径明显收缩这就是阴影衰落的真实代价。需要注意1.65 对应的是标准正态分布的 95% 分位数它表达的是“边缘覆盖概率”小区边缘用户有 95% 概率不低于灵敏度。如果要求更高比如 98%系数要换成 2.05。工程上还常用“面积覆盖概率”的概念需要把小区内所有位置的覆盖率做积分比单纯查分位数更复杂。到这里大尺度衰落模型的仿真和工程用法已经闭环模型参数 → MATLAB 仿真 → 链路预算 → 覆盖半径。但仿真结果靠不靠得住最好再用统计手段自检一遍这也是最后一章的进阶内容。6. 进阶验证用蒙特卡洛检验衰落模型的统计特性6.1 蒙特卡洛抽样看分布不看单条曲线单次仿真不能代表模型能力跑到一定次数看统计分布才有意义。这里复用前面封装的 large_scale_fading 函数在固定距离上做 10000 次抽样。rng(2024); % 固定随机种子保证结果可复现 M 10000; % 仿真次数 d_target 2000; % 关注距离 2000 m samples zeros(M, 1); for k 1:M samples(k) large_scale_fading(3.7, 100, 0, d_target, 8); end运行结束后 samples 就是 2000 m 处接收功率的 10000 次独立抽样。理论预测路径损耗均值为 10 * 3.7 * log10(2000 / 100) ≈ 48.1 dB标准差 8 dB。6.2 直方图与理论正态曲线对比把抽样的直方图和理论正态 PDF 画在同一张图里是最直观的模型自检方法。% 提取理论均值和标准差 mu 10 * 3.7 * log10(d_target / 100); sigma 8; figure(Color, w); histogram(samples, 60, Normalization, pdf); hold on; x linspace(mu - 4 * sigma, mu 4 * sigma, 200); plot(x, normpdf(x, mu, sigma), r-, LineWidth, 2); xlabel(接收功率 (dB)); ylabel(概率密度); legend(蒙特卡洛仿真, 理论正态分布, Location, best); grid on;如果直方图的中心位置和形状与红色理论曲线重合良好说明路径损耗公式、d0 参考点、阴影衰落缩放这三个环节全部正确。如果直方图明显偏移优先检查 d0 和 d_target 是否同单位、PL0 是否设了非零值如果形状比理论曲线扁平则可能是 randn 以外的随机源混入了模型或者 sigma 用成了线性值。这套脚本连同几组典型环境的参数配置我整理在下载资源里拿到手第一步就是把 rng(2024) 这一行跑通再去改环境和距离参数。从那以后我每次拿到一份衰落仿真代码都强制先走一遍三件事固定随机种子、确认 d0 与 d 同单位、把 PL0 的基准含义写在注释里再谈曲线漂不漂亮。希望帮到你。本文还有配套的精品资源点击获取