如何基于Matlab的PL_free函数生成自由空间路径损耗可视化曲线?
如何用Matlab生成自由空间路径损耗模型的曲线图
首先给出教材中的PL_free函数代码:
function PL=PL_free(fc,dist,Gt,Gr) % Free Space Path loss Model % Input % fc : carrier frequency[Hz] % dist : between base station and mobile station[m] % Gt : transmitter gain % Gr : receiver gain % output % PL : path loss[dB] lamda = 3e8/fc; tmp = lamda./(4*pi*dist); if nargin>2 tmp = tmp*sqrt(Gt); end if nargin>3 tmp = tmp*sqrt(Gr); end PL = -20*log10(tmp); end
核心结论
不需要Excel这类外部数据源,Matlab完全可以通过内置工具生成曲线,核心思路是:固定部分参数,让目标变量(比如距离、载波频率)在合理范围内变化,生成自变量序列后调用函数计算损耗,最后可视化。
具体实现步骤与示例
1. 单参数变化:路径损耗随距离变化
这是最常见的可视化场景,固定载波频率、收发增益,观察损耗随距离的变化:
% 配置固定参数 fc = 2e9; % 载波频率:2GHz Gt = 1; % 发射增益 Gr = 1; % 接收增益 dist = logspace(1, 3, 100); % 生成10m到1000m的100个对数间距点(贴合实际传播特性) % 计算路径损耗 PL = PL_free(fc, dist, Gt, Gr); % 绘制半对数曲线(无线通信领域常用,更清晰展示对数关系) semilogx(dist, PL, 'LineWidth', 1.5); xlabel('基站与移动台距离 (m)'); ylabel('路径损耗 (dB)'); title('自由空间路径损耗随距离变化曲线(fc=2GHz,Gt=Gr=1)'); grid on;
2. 多参数对比:不同载波频率的损耗曲线
如果需要对比不同频率下的损耗差异,可以循环处理多个频率值:
% 定义多个载波频率 fc_list = [900e6, 1.8e9, 2.4e9]; % 900MHz、1.8GHz、2.4GHz dist = logspace(1, 3, 100); % 距离范围保持一致 color_set = ['r', 'g', 'b']; % 对应曲线颜色 figure; % 新建绘图窗口 hold on; % 保持画布,叠加多条曲线 for idx = 1:length(fc_list) PL = PL_free(fc_list(idx), dist, 1, 1); semilogx(dist, PL, [color_set(idx), '-'], 'LineWidth', 1.5, ... 'DisplayName', [num2str(fc_list(idx)/1e6) 'MHz']); end xlabel('基站与移动台距离 (m)'); ylabel('路径损耗 (dB)'); title('不同载波频率下的自由空间路径损耗对比'); grid on; legend show; % 显示图例 hold off;
关键说明
- 为什么用
semilogx而非普通plot?因为自由空间路径损耗公式是对数关系(PL ∝ 10log₁₀(dist)),半对数坐标系能让线性化的损耗趋势更直观,符合无线通信的分析习惯。 - 变量取值范围可以根据实际场景调整:比如距离可以扩展到10km(
logspace(1,4,100)),载波频率可以覆盖UWB、5G等频段。
内容的提问来源于stack exchange,提问作者Random Access Memory
相关产品推荐
相关产品推荐

