我正在尝试使用 MATLAB 绘制 Rappaport 图(带有阴影的面积与距离覆盖范围)。目标是创建一个类似于下图所示的图表:
我已经尝试使用课堂上给我的公式在 matlab 中这样做: https://latex.codecogs.com/svg.image?&space;U(%5Cgamma)=%5Cfrac%7B1%7D%7B2%7D%5B1-erf(a)+e%5E%5Cfrac%7B1- 2ab%7D%7Bb%5E2%7D%5B1-erf(%5Cfrac%7B1-ab%7D%7Bb%7D)%5D]
https://latex.codecogs.com/svg.image?a=%5Cfrac%7B%5Cgamma-P_t+%5Coverline%7BPL%7D(d_0)-10n&space;log(%5Cfrac%7BR%7D%7Bd_0 %7D)}{\sigma\sqrt{2}}
https://latex.codecogs.com/svg.image?b=%5Cfrac%7B10n&space;log(e)%7D%7B%5Csigma%5Csqrt%7B2%7D}
任何人都可以帮助我确定代码中可能出现的问题,或者提出改进绘图以匹配预期输出的方法吗?
我已经实现了下面的代码,它应该计算各种伽马值和 sigma/n 比率的函数 𝑈(𝛾)。
% Parameters
Pt = 30; % Transmitted power in dBm
PL_d0 = 60; % Path loss at reference distance (in dB)
sigma = 8; % Standard deviation of shadowing (in dB)
n = 3.5; % Path loss exponent
d0 = 1; % Reference distance (in meters)
R = 10; % Cell radius (in meters)
gamma_values = linspace(1, 0, 10); % Reverse gamma threshold values
% Define distance and sigma/n values
sigma_n_ratio = linspace(0, 8, 100); % Varying sigma/n (shadowing effect)
U = zeros(length(gamma_values), length(sigma_n_ratio));
% Compute U(gamma) for different values of gamma and sigma/n
for j = 1:length(gamma_values)
gamma = gamma_values(j);
for i = 1:length(sigma_n_ratio)
sigma_n = sigma_n_ratio(i);
a = (gamma - Pt + PL_d0 - 10*n*log10(R/d0)) / (sigma_n * sqrt(2));
b = (10*n*log10(exp(1))) / (sigma_n * sqrt(2));
% U(gamma) equation
U(j, i) = 0.5 * (1 - erf(a) + exp((1 - 2*a*b) / b^2) * (1 - erf((1 - a*b) / b)));
end
end
% Plotting
figure;
hold on;
for j = 1:length(gamma_values)
plot(sigma_n_ratio, U(j, :), 'DisplayName', sprintf('Pr[r > %0.2f]', gamma_values(j)));
end
xlabel('\sigma/n');
ylabel('Fraction of total area with signal above threshold, U(\gamma)');
legend('show');
title('Plot of Area vs. Distance Coverage with Shadowing');
grid on;
曲线的形状似乎不正确,并且值与预期行为不匹配。我怀疑我如何应用公式或参数如何交互可能存在问题。
太多的话要说:) 只有当人们意识到“a”的值包含所有需要确定的未知数时,这才变得相当容易。参数“b”与这些未知数无关......所以U(gamma)只是“a”和“b”的函数。 b 的值作为 sigma/n 的函数而变化。手动改变“a”参数的值,您将获得所有不同的曲线。
祝你好运!