Я не эксперт в том, что касается предмета ваших вычислений, но кажется, что ваш второй участок содержит две ошибки: ошибка масштаба (ось X должна использовать метры в качестве базовой единицы вместо километров) и преобразование ошибка (переход от ватт к дБм должен быть рассчитан по-разному).
Первая проблема очень легко решается. Чтобы получить расстояние в метрах, начиная с километров, просто сделайте следующее:
d1 = d .* 1000;
Теперь, что касается второй проблемы, я думаю, вы должны действовать следующим образом:
dBW = 10 * log10(PR)
dBm = 10 * log10(1000 * PR)
= 10 * log10(PR) + 10 * log10(1000)
= 10 * log10(PR) + 10 * 3
= 10 * log10(PR) + 30
= dBW + 30
Таким образом:
PR1 = (10 .* log10(PR)) + 30;
Вот окончательный код:
clc();
close all;
clear all;
f = 2100000000;
wl = ((3 * 10^8) / f) ^ 2;
PT = 50.12;
d = 1:0.1:20;
PR = (wl ./ ((4 .* pi() .* d) .^ 2)) .* PT;
d1 = d .* 1000;
PR1 = (10 .* log10(PR)) + 30;
subplot(2,1,1);
plot(d,PR);
xlabel('x --> D (Distance in Km)');
ylabel('y --> PR (Received Power in Watts)');
title('Distance of separation between the TX/RX and the receive signal strength');
grid on;
subplot(2,1,2);
plot(d1,PR1);
xlabel('x --> D (Distance in Meter)');
ylabel('y --> PR (Received Power in dBm)');
title('Distance of separation between the TX/RX and the receive signal strength');
grid on;