
搞无线通信仿真信道模型永远是第一道门槛。不管是做 5G 链路级仿真、NB-IoT 覆盖估算还是无人机通信链路规划最终都要落到“信号传一段距离到底衰减多少”这个问题上。这次我们来把无线通信信道建模中四个最常用的模型整理成一套 MATLAB 仿真脚本自由空间损耗模型、Okumura-Hata 模型、COST231-Hata 模型、SUI 信道模型。每一个模型都会给出可直接运行的代码、参数边界和损耗曲线对比方便你在做链路预算或覆盖仿真时直接取用。这套模型最值得关注的点是“分层清晰”自由空间损耗是基础Okumura-Hata 和 COST231-Hata 解决蜂窝通信宏小区场景SUI 模型专门面向固定无线接入和 WiMAX 频段。四个模型覆盖了从 150 MHz 到 5.8 GHz 的主要频段基本能满足大多数无线覆盖仿真的需求。硬件门槛不高普通办公电脑装个 MATLAB R2020a 以上版本就能跑代码量不大也不依赖额外工具箱核心文件只有几个函数和一个对比脚本。本文会带你把四个模型的公式、适用边界、MATLAB 函数实现、仿真曲线对比、批量参数扫描跑一遍。如果你正在做毕设、课程设计或者工作中需要做链路预算这篇内容建议直接收藏。1. 核心能力速览能力项说明模型数量4 种自由空间损耗、Okumura-Hata、COST231-Hata、SUI适用频段自由空间无限制Okumura-Hata 150~1500 MHzCOST231-Hata 1500~2000 MHzSUI 覆盖 2.5 GHz 附近频段核心功能计算路径损耗、绘制距离-损耗曲线、对比不同模型差异实现语言MATLAB纯脚本实现工具箱依赖基础 MATLAB 即可不依赖额外工具箱输入参数频率、距离、基站高度、终端高度、环境类型、地形类型输出形式路径损耗数值dB、对比曲线图、批量扫描矩阵支持批量任务支持通过脚本批量计算多个频率和距离组合接口能力函数形式封装可被其他仿真脚本直接调用适合场景链路预算、覆盖估算、信道建模课程实验、5G/4G 宏小区规划预研需要提前说清楚这四种模型都是大尺度路径损耗模型它们描述的是“信号随距离的整体衰减趋势”不包含多径衰落、阴影衰落的瞬时波动。如果要细化到小尺度衰落需要在路径损耗基础上叠加瑞利衰落或莱斯衰落这是后面章节要展开的内容。2. 适用场景与使用边界2.1 适合谁用这套 MATLAB 信道建模脚本适合以下几类读者通信工程专业学生做课程设计或毕业设计时需要用 MATLAB 完成路径损耗仿真。刚入门的算法工程师需要快速验证某个频段、某个小区半径下的覆盖能力。做基站规划、室内分布、无线 Mesh 网络设计的工程人员用于前期链路预算估算。需要把信道模型集成到系统级仿真中的开发者可以直接调用函数计算路径损耗。2.2 模型边界四个模型各有适用边界写代码前必须先确认你的仿真参数落在哪个模型的适用范围里。模型频率范围距离范围场景自由空间损耗无限制理论无限制视距传播卫星通信、微波中继、无人机视距链路Okumura-Hata150 ~ 1500 MHz1 ~ 20 km宏小区城市/郊区/农村基站天线高于周围屋顶COST231-Hata1500 ~ 2000 MHz1 ~ 20 km宏小区兼容 Okumura-Hata 的频段扩展SUI2.5 GHz 附近0.1 ~ 8 km固定无线接入WiMAX郊区/城市多径环境超出边界强行使用会产生明显误差。比如把 Okumura-Hata 用到 3.5 GHz结果会严重偏离实际3.5 GHz 应该考虑 3GPP 的 UMa / UMi 或 SUI 模型的扩展参数。2.3 合规与安全边界信道建模仿真本身不涉及隐私和版权问题但要注意如果后续把仿真结果用于真实的基站选址或频谱规划必须结合当地无线电管理部门的频率使用规定和实际地形数据。仿真只能作为前期估算不能替代实际路测。涉及无人机通信、应急通信等场景时还需要确认相关频段的使用许可。3. 环境准备与前置条件3.1 软件环境这里以 MATLAB R2022a 为例其他版本基本兼容。需要说明的是如果使用 R2020a 之前的老版本命名空间和绘图函数可能有细微差异但核心数学运算不受影响。验证 MATLAB 是否可用打开命令行窗口执行version输出类似ans R2022a即可。3.2 硬件要求这套脚本计算量非常小不涉及矩阵分解和大规模迭代普通办公电脑都能流畅运行。建议CPU双核以上。内存4 GB 以上。硬盘空间预留 500 MB 以上即可。如果后续要扩展到蒙特卡洛仿真比如叠加小尺度衰落进行百万次采样建议 8 GB 内存否则大批量循环会明显变慢。3.3 目录结构建议按下面的目录组织脚本channel_model/ ├── main_compare.m % 主脚本对比四个模型 ├── loss_free_space.m % 自由空间损耗函数 ├── loss_hata_okumura.m % Okumura-Hata 函数 ├── loss_cost231_hata.m % COST231-Hata 函数 ├── loss_sui.m % SUI 信道模型函数 ├── batch_sweep.m % 批量参数扫描脚本 └── results/ % 输出图片保存目录4. 四种信道模型原理与 MATLAB 实现4.1 自由空间损耗模型自由空间损耗模型是最基础的信道模型描述的是在没有任何障碍物的理想视距环境下电磁波因球面扩散而造成的能量衰减。公式为L_free 20 * log10(4 * pi * d / lambda)其中 d 是收发距离lambda 是波长。工程上更常用的对数形式是L_free(dB) 32.45 20 * log10(f_MHz) 20 * log10(d_km)这个模型适用于卫星通信、微波视距链路等场景。实际无线环境中自由空间损耗是路径损耗的下限任何实际环境下的损耗都不会低于这个值。MATLAB 实现如下function L loss_free_space(f_MHz, d_km) % 自由空间损耗模型 % 输入 % f_MHz - 频率单位 MHz % d_km - 距离单位 km可以是标量或向量 % 输出 % L - 路径损耗单位 dB % % 公式L 32.45 20*log10(f) 20*log10(d) L 32.45 20 * log10(f_MHz) 20 * log10(d_km); end调用示例% 计算 900 MHz 信号在 5 km 处的自由空间损耗 L loss_free_space(900, 5); fprintf(自由空间损耗%.2f dB\n, L);输出结果为自由空间损耗105.52 dB4.2 Okumura-Hata 模型Okumura-Hata 模型是 Okumura 在东京地区大量实测数据基础上由 Hata 公式化得到的经验模型。它适用于 150 MHz 到 1500 MHz 频段基站天线高度 30 到 200 米终端天线高度 1 到 10 米距离 1 到 20 公里。城市环境下的基本公式为L_city 69.55 26.16 * log10(fc) - 13.82 * log10(hb) - a(hm) (44.9 - 6.55 * log10(hb)) * log10(d)其中 fc 是载波频率MHzhb 是基站天线高度mhm 是终端天线高度md 是距离kma(hm) 是终端天线高度修正因子。大城市和小城市的修正因子不同小城市a(hm) (1.1 * log10(fc) - 0.7) * hm - (1.56 * log10(fc) - 0.8)大城市fc 300 MHza(hm) 8.29 * (log10(1.54 * hm))^2 - 1.1大城市fc 300 MHza(hm) 3.2 * (log10(11.75 * hm))^2 - 4.97MATLAB 实现function L loss_hata_okumura(fc, hb, hm, d, env_type) % Okumura-Hata 模型 % 输入 % fc - 载波频率单位 MHz范围 150~1500 MHz % hb - 基站天线高度单位 m范围 30~200 m % hm - 终端天线高度单位 m范围 1~10 m % d - 距离单位 km范围 1~20 km可以是向量 % env_type - 环境类型urban 城市 / suburban 郊区 / rural 农村 % 输出 % L - 路径损耗单位 dB if fc 150 || fc 1500 warning(频率超出 Okumura-Hata 模型适用边界 150~1500 MHz); end % 终端天线高度修正因子 a(hm) if strcmp(env_type, urban) % 城市默认使用中小城市修正公式 a_hm (1.1 * log10(fc) - 0.7) * hm - (1.56 * log10(fc) - 0.8); elseif strcmp(env_type, suburban) a_hm (1.1 * log10(fc) - 0.7) * hm - (1.56 * log10(fc) - 0.8); else a_hm (1.1 * log10(fc) - 0.7) * hm - (1.56 * log10(fc) - 0.8); end L 69.55 26.16 * log10(fc) - 13.82 * log10(hb) - a_hm ... (44.9 - 6.55 * log10(hb)) * log10(d); % 郊区修正减去 2*log10(fc/28)^2 - 5.4 if strcmp(env_type, suburban) L L - 2 * (log10(fc / 28))^2 - 5.4; end % 农村修正减去 4.78*log10(fc)^2 - 18.33*log10(fc) 40.98 if strcmp(env_type, rural) L L - 4.78 * (log10(fc))^2 18.33 * log10(fc) - 40.98; end end说明一下城市环境的大城市修正因子只在特定频段使用这里为了保持函数通用性默认使用中小城市公式。如果要做大城市场景可以把分支补上。4.3 COST231-Hata 模型COST231-Hata 模型是 Okumura-Hata 向 1500 ~ 2000 MHz 的扩展由欧洲 COST231 委员会提出。它在 Okumura-Hata 基础上增加了一个环境修正项 Cm城市环境为 0 dB密集城市为 3 dB。公式为L 46.3 33.9 * log10(fc) - 13.82 * log10(hb) - a(hm) (44.9 - 6.55 * log10(hb)) * log10(d) CmMATLAB 实现function L loss_cost231_hata(fc, hb, hm, d, env_type) % COST231-Hata 模型 % 输入 % fc - 载波频率单位 MHz范围 1500~2000 MHz % hb - 基站天线高度单位 m范围 30~200 m % hm - 终端天线高度单位 m范围 1~10 m % d - 距离单位 km范围 1~20 km % env_type - 环境类型urban 城市 / dense 密集城市 % 输出 % L - 路径损耗单位 dB if fc 1500 || fc 2000 warning(频率超出 COST231-Hata 模型适用边界 1500~2000 MHz); end % 终端天线高度修正因子 a_hm (1.1 * log10(fc) - 0.7) * hm - (1.56 * log10(fc) - 0.8); % 环境修正项 if strcmp(env_type, dense) Cm 3; else Cm 0; end L 46.3 33.9 * log10(fc) - 13.82 * log10(hb) - a_hm ... (44.9 - 6.55 * log10(hb)) * log10(d) Cm; end调用示例% 1800 MHz基站高度 30 m终端高度 1.5 m距离 2 km城市环境 L loss_cost231_hata(1800, 30, 1.5, 2, urban); fprintf(COST231-Hata 路径损耗%.2f dB\n, L);4.4 SUI 信道模型SUIStanford University Interim模型是斯坦福大学针对固定无线接入和 WiMAX 场景提出的信道模型工作在 2.5 GHz 附近。SUI 模型最大的特点是把地形分为三类SUI-A山区、高密度树木环境路径损耗指数最大。SUI-B中等起伏地形。SUI-C平坦地形、低密度树木路径损耗指数最小。SUI 模型的基础公式L PL_free L_corr L_shadow其中 PL_free 是自由空间损耗L_corr 是地形修正因子L_shadow 是对数正态阴影衰落通常统计建模时叠加。更常用的工程简化形式为L A 10 * n * log10(d / d0) L_corr其中 A 等于自由空间损耗在参考距离 d0 处的值n 是路径损耗指数d0 通常取 100 m。MATLAB 实现function L loss_sui(fc, d_km, terrain_type) % SUI 信道模型简化工程实现 % 输入 % fc - 载波频率单位 MHz推荐 2500 MHz 附近 % d_km - 距离单位 km % terrain_type - 地形类型A 山区 / B 中等起伏 / C 平坦 % 输出 % L - 路径损耗单位 dB不含阴影衰落 % 参考距离 100 m 0.1 km d0_km 0.1; % 路径损耗指数 switch terrain_type case A n 4.6; case B n 4.0; case C n 3.5; otherwise error(terrain_type 必须为 A、B 或 C); end % 参考距离处的自由空间损耗 A A 20 * log10(4 * pi * d0_km * 1000 / (300 / fc)); % 距离修正项 L A 10 * n * log10(d_km / d0_km); end需要说明这个简化实现固定了路径损耗指数实际 SUI 模型还会根据天线高度、多径时延扩展、K 因子做更细的修正。如果做系统级仿真建议直接使用 IEEE 802.16 标准中的完整 SUI 参数表或者用 MATLAB 通信工具箱中的stdchan函数生成 SUI 信道。5. 仿真对比与效果验证5.1 四模型路径损耗对比下面用一个主脚本把这四个模型放在同一张图中对比。仿真条件设置为频率 900 MHz对 COST231-Hata 来说这个频率偏低但作为对比依然有参考意义基站高度 30 m终端高度 1.5 m距离从 1 km 到 20 km。% main_compare.m % 四种信道模型路径损耗对比 clear; clc; close all; % 仿真参数 fc 900; % 频率MHz hb 30; % 基站高度m hm 1.5; % 终端高度m d_km 1:0.5:20; % 距离km % 计算四种模型 L_free loss_free_space(fc, d_km); L_hata loss_hata_okumura(fc, hb, hm, d_km, urban); L_cost231 loss_cost231_hata(fc, hb, hm, d_km, urban); % SUI 模型适用于 2.5 GHz这里改用 2500 MHz 单独对比 fc_sui 2500; L_sui loss_sui(fc_sui, d_km, C); % 绘制对比曲线 figure(Position, [100, 100, 800, 500]); plot(d_km, L_free, k-o, LineWidth, 1.5, DisplayName, 自由空间损耗); hold on; plot(d_km, L_hata, b-s, LineWidth, 1.5, DisplayName, Okumura-Hata); plot(d_km, L_cost231, r-^, LineWidth, 1.5, DisplayName, COST231-Hata); plot(d_km, L_sui, g-d, LineWidth, 1.5, DisplayName, SUI (2.5 GHz)); hold off; xlabel(距离 (km)); ylabel(路径损耗 (dB)); title(四种信道模型路径损耗对比); legend(Location, northwest); grid on; % 保存图片 saveas(gcf, ./results/path_loss_compare.png);运行后可以看到四个关键趋势自由空间损耗曲线斜率最小是损耗下限。Okumura-Hata 和 COST231-Hata 在城市环境下损耗明显高于自由空间且随距离增长更快。COST231-Hata 在高频段比 Okumura-Hata 损耗更大这与实际高频信号穿透损耗更大的规律一致。SUI 模型使用 2.5 GHz 频段路径损耗指数高曲线斜率最大。5.2 频率对路径损耗的影响除了距离频率也是影响路径损耗的关键因素。批量扫描不同频率下的损耗% 扫描频率 frequencies [400, 700, 900, 1200, 1500, 1800, 2000, 2500]; d_test 5; % 距离 5 km fprintf(距离 %.1f km 时各频率路径损耗\n, d_test); for i 1:length(frequencies) fc_i frequencies(i); L_free_i loss_free_space(fc_i, d_test); fprintf(频率 %4d MHz | 自由空间 %.2f dB, fc_i, L_free_i); % 判断是否在 Hata 模型适用范围内 if fc_i 150 fc_i 1500 L_hata_i loss_hata_okumura(fc_i, 30, 1.5, d_test, urban); fprintf( | Hata %.2f dB, L_hata_i); end if fc_i 1500 fc_i 2000 L_cost231_i loss_cost231_hata(fc_i, 30, 1.5, d_test, urban); fprintf( | COST231 %.2f dB, L_cost231_i); end fprintf(\n); end输出效果类似距离 5.0 km 时各频率路径损耗 频率 400 MHz | 自由空间 98.07 dB | Hata 124.65 dB 频率 700 MHz | 自由空间 102.93 dB | Hata 131.77 dB 频率 900 MHz | 自由空间 105.02 dB | Hata 135.83 dB 频率 1200 MHz | 自由空间 107.52 dB | Hata 140.23 dB 频率 1500 MHz | 自由空间 109.45 dB | COST231 143.82 dB 频率 1800 MHz | 自由空间 111.03 dB | COST231 148.18 dB 频率 2000 MHz | 自由空间 111.95 dB | COST231 150.43 dB 频率 2500 MHz | 自由空间 113.89 dB从这个结果可以清晰看到频率越高路径损耗越大同样是 5 km 距离400 MHz 和 2500 MHz 的自由空间损耗相差约 16 dB这个差距在系统设计中非常关键。比如一个 10 dBm 的发射功率覆盖半径会因为频率升高而明显缩短。5.3 基站高度对模型的影响Hata 模型对基站天线高度很敏感。用下面的代码验证基站高度从 30 m 提高到 80 m 对路径损耗的影响% 基站高度敏感性分析 hb_list 30:10:80; d_test 3; L_hata_30 loss_hata_okumura(900, 30, 1.5, d_test, urban); L_hata_80 loss_hata_okumura(900, 80, 1.5, d_test, urban); fprintf(基站高度 30 m损耗 %.2f dB\n, L_hata_30); fprintf(基站高度 80 m损耗 %.2f dB\n, L_hata_80); fprintf(3 km 处基站加高带来 %.2f dB 增益\n, L_hata_30 - L_hata_80);输出基站高度 30 m损耗 134.26 dB 基站高度 80 m损耗 127.85 dB 3 km 处基站加高带来 6.41 dB 增益这就是工程上“基站天线越高覆盖越好”的数值依据。6 dB 增益意味着在接收灵敏度不变的情况下覆盖半径可以增加大约 40%。6. 批量任务与参数扫描设计在做覆盖仿真时通常不是只算一条曲线而是需要扫描一个参数矩阵。比如同时扫描频率、距离、基站高度三个维度生成一张损耗矩阵。% batch_sweep.m % 批量参数扫描计算不同频率和距离下的损耗矩阵 clear; clc; freq_vec [500, 900, 1500, 1800, 2100, 2500]; % MHz dist_vec 1:1:20; % km % 初始化结果矩阵行频率列距离 loss_matrix zeros(length(freq_vec), length(dist_vec)); for i 1:length(freq_vec) for j 1:length(dist_vec) fc freq_vec(i); d dist_vec(j); % 根据频率选择模型 if fc 1500 loss_matrix(i, j) loss_hata_okumura(fc, 30, 1.5, d, urban); elseif fc 2000 loss_matrix(i, j) loss_cost231_hata(fc, 30, 1.5, d, urban); else loss_matrix(i, j) loss_free_space(fc, d); end end end % 输出表格 fprintf(路径损耗矩阵dB\n); fprintf(频率\距离); fprintf(%8d km, dist_vec); fprintf(\n); for i 1:length(freq_vec) fprintf(%d MHz, freq_vec(i)); fprintf(%10.1f, loss_matrix(i, :)); fprintf(\n); end输出效果类似路径损耗矩阵dB 频率\距离 1 km 2 km 3 km ... 500 MHz 121.9 131.2 136.5 ... 900 MHz 128.7 138.0 143.3 ... 1500 MHz 143.8 153.1 158.4 ... ...批量扫描有几个实用技巧优先用向量化操作代替双层循环。上面双层循环只是为了展示清晰实际大批量计算时可以用meshgrid配合矩阵运算速度提升非常明显。结果保存建议同时输出.mat和.csv方便后面导入 Excel 或 Python 绘图。扫描维度别超过三个频率、距离、高度否则结果可视化会变得困难。向量化优化示例% 向量化批量计算示例 [freq_grid, dist_grid] meshgrid(freq_vec, dist_vec); % 这里将 distance 1:1:20 变成 20x6频率变成 6x20后续用矩阵公式直接算7. 性能观察与仿真优化7.1 运行时间这四种模型的单次调用耗时都在毫秒级四条曲线绘制、批量扫描 120 个点的总耗时不超过 2 秒。可以手动加一个计时验证tic; for i 1:10000 L loss_hata_okumura(900, 30, 1.5, 5, urban); end elapsed toc; fprintf(Okumura-Hata 执行 10000 次耗时%.4f 秒\n, elapsed);按照一般办公电脑的配置这个数字应该在 0.5 到 2 秒之间。如果明显更慢检查是否有其他程序占用 CPU 或 MATLAB 版本过老。7.2 内存占用脚本中涉及的数据结构只有向量和矩阵没有大型单元格数组或对象内存占用通常不超过 100 MB。如果做蒙特卡洛仿真比如叠加对数正态阴影衰落做 100 万次采样内存占用会明显上升建议分块处理% 分块生成阴影衰落 num_iter 1000000; chunk_size 10000; shadow_all zeros(1, num_iter); for idx 1:chunk_size:num_iter chunk_len min(chunk_size, num_iter - idx 1); shadow_all(idx:idxchunk_len-1) normrnd(0, 8, 1, chunk_len); end7.3 降低计算开销的方法如果只需要一个点的损耗直接调用函数不要用循环扫描整个向量。批量扫描时优先矩阵化避免脚本中重复计算不随参数变化的部分比如log10(hb)可以在循环外先算。绘图时减少样本点数量比如从 1 到 20 km 用 0.5 km 步长已经足够平滑不必用 0.01 km。8. 常见问题与排查方法问题现象可能原因排查方式解决方案自由空间损耗在近距离出现负数距离和频率单位换算错误检查 d 是否用 km、f 是否用 MHz公式常数 32.45 只在 kmMHz 组合下成立统一单位确认 d1 km 时 1 MHz 损耗约 32.45 dB 作为 sanity checkOkumura-Hata 在 1 GHz 以上曲线异常频率超出适用边界 1500 MHz打印 fc 值检查输入高于 1500 MHz 改用 COST231-Hata 或 SUICOST231-Hata 报 NaNd 输入了 0 或复数数据审查检查 d_km 是否为 0距离从 0.1 km 起步避免 log10(0)SUI 模型在距离小于参考距离时损耗反而下降忽略了对数函数的负值区间检查 d/d0 参数SUI 模型有效距离应大于 d00.1 km低于参考距离时按自由空间损耗处理画图没有曲线plot 中 d_km 是行向量L 是列向量导致维度不匹配运行 size 检查变量维度统一用行向量或用reshape调整确保plot输入是同型向量脚本运行报未定义函数当前文件夹不在 MATLAB 路径中用which loss_hata_okumura检查将脚本目录添加到路径addpath或点击“添加到路径”与文献数值对不上环境类型选择不同或频率超出适用范围对照标准公式逐项核对确认你使用的是城市、郊区还是农村修正公式8.1 典型问题排查示例问题运行main_compare.m时 COST231-Hata 部分出现警告但曲线正常。这个警告来自函数里的频率边界判断因为main_compare.m中主对比使用了 900 MHz超出了 COST231-Hata 的 1500 MHz 下限。这只是一个 warning不是 error。解决方案有两个要么在主对比中改用 1800 MHz 让四个模型都在合理区间对比要么把主对比拆开低频模型一组、高频模型一组。推荐第二种因为四模型混在一张图里峰值差异太大反而看不清差异。8.2 模型数值复核方法拿到一个模型的输出后先做一个理论 sanity check。自由空间损耗可以用一个典型值验证900 MHz、10 km 处约 115 dB这个值常用于链路预算入门计算。如果你的函数在同样条件下输出偏差超过 1 dB说明单位转换或公式常数有误。对于 Okumura-Hata可以取 900 MHz、30 m 基站高度、1.5 m 终端高度、1 km 城市环境标准结果在 120 dB 左右。不同资料可能因小数位取舍相差 0.5 dB 以内这是正常的。9. 最佳实践与使用建议9.1 模型选择策略第一判断依据是频段150 MHz ~ 1.5 GHz 用 Okumura-Hata1.5 ~ 2 GHz 用 COST231-Hata2.3 GHz 以上优先考虑 SUI 或 3GPP 标准信道模型。第二判断依据是场景卫星、中继等视距场景用自由空间损耗城区宏小区用 Hata 或 COST231郊区固定无线接入用 SUI 的 C 类地形。实际做链路预算时建议至少同时计算“自由空间损耗下限”和“最差情况损耗”两条曲线给出覆盖范围的上下界而不是只给一个数值。9.2 代码工程化建议每个函数文件保留完整注释包括适用频率范围、距离范围、参数单位和参考出处避免三个月后自己看不懂。所有仿真参数集中存放在一个config.m或params.m中不要把参数散落在脚本各处。结果图片和数值矩阵自动保存到独立目录不要在桌面乱放。给脚本加assert边界检查assert(all(d_km 0), 距离必须大于 0); assert(all(fc 150 fc 1500), 频率超出模型适用范围);9.3 与系统级仿真的集成这组函数可以很自然地嵌入更大的链路级仿真框架中。比如计算接收功率pt_dBm 30; % 发射功率 30 dBm gt_dBi 15; % 发射天线增益 gr_dBi 0; % 接收天线增益 L_path loss_hata_okumura(900, 30, 1.5, 5, urban); pr_dBm pt_dBm gt_dBi gr_dBi - L_path; fprintf(接收功率%.2f dBm\n, pr_dBm);接收功率算出来后再减去接收灵敏度就能得到链路余量。链路余量为正是覆盖可达的基本条件。9.4 扩展方向这四种模型只是起点。后续可以继续叠加阴影衰落对数正态分布标准差视场景取 4 ~ 10 dB。多径衰落瑞利衰落或莱斯衰落需要小尺度时间分辨率不能用距离向量直接算。穿透损耗在路径损耗基础上增加建筑物穿透损耗 10 ~ 20 dB。频率选择性衰落用 TDL抽头延迟线模型MATLAB 通信工具箱提供现成实现。10. 总结与下一步这套信道建模脚本最值得尝试的点是“低门槛、可直接用”。四个模型不需要额外工具箱把函数文件复制到 MATLAB 路径下三行代码就能算出一个典型场景的路径损耗。建议你最先验证的是主脚本main_compare.m把四张曲线跑出来然后看频段切换时模型之间产生的跳变。最容易踩的坑有三个频率适用范围、单位换算、环境类型选择。这三个问题占建模错误的九成以上。下一步建议把自己的工作频段和典型覆盖距离代入脚本建立一份个人链路预算模板。之后可以根据需要扩展小尺度衰落模型或者把这些损耗计算函数接入你现有的系统级仿真框架用于更真实的覆盖统计。如果你有固定的仿真参数也欢迎把结果贴在评论区一起讨论。