Rain attenuation model based on ITU-R P.838-3 Recommendation

20 views (last 30 days)
I would like to plot the rain attenuation model based on ITU-R P.838-3 Recommendation as shown in the graph below:
I tried to used "rainlp" command in MATLAB but I could not get the same graph.
Any ideas how to get this graph by MATLAB?
clear all;clc
freq=[1:1000]*1e9;
Rr=[0.25, 1.25, 5, 25, 50, 100, 150];
for i=1:7
L=rainpl(10000,freq,Rr(i));
plot(freq/1e9,L)
hold on
grid
end

Answers (1)

William Rose
William Rose on 9 Sep 2022
freq=[1:1000]*1e9;
Rr=[0.25, 1.25, 5, 25, 50, 100, 150];
for i=1:7
L=rainpl(10000,freq,Rr(i));
loglog(freq/1e9,L)
ylim([0.01 Inf]);
hold on
grid
end
legend('Rr=0.25','1.25','5','25','50','100','150');
I replaced "plot" with "loglog" and I fixed the lower y axis limit at 0.01. This is similar to the graph you gave, but not identical. It seems Matlab's rainpl() has some differenrces from ITU-R P.838-3, at least at high rain rates.
Good luck.
  3 Comments
William Rose
William Rose on 12 Sep 2022
@SAM, you are welcome.
What is the source for the figure you posted? I ask because the figure you posted does not appear in either of the defining documents cited by Matlab: ITU-R P.838-3 (2005) or ITU-R P.530-17 (2017). Perhaps the figure you posted is from an earlier version of the standard, which may have since changed. Is your figure for horizontal or vertical polarization, or some other angle? Matlab's rainpl() defaults to horizontal.
The plot you posted is for attenuation per km. You and I both made a mistake: we used range=10000 (m) when we should have used range=1000 m, to get attenuation for 1 km. When I implement this fix - see code and plot below - the Matlab plot is closer to your figure, but not identical. Therefore there is still an unexplained discrepancy.
freq=[1:1000]*1e9;
Rr=[0.25, 1.25, 5, 25, 50, 100, 150];
for i=1:7
L=rainpl(1000,freq,Rr(i)); %range=1 km
loglog(freq/1e9,L)
ylim([0.01 Inf]);
hold on
grid
end
legend('Rr=0.25','1.25','5','25','50','100','150');
The remaining discrepancy is due to the fact that rainpl() returns the attenuation in dB for a specified distance. It does not return the specific attenuation in dB/km. I expected that the attenuation when distance=1000 m would equal the specific attenuation, but this is not the case, to a distance adjustment factor, r, which is explained in the Matlab help and in section 2.4.1, equations 32, 33, of ITU-R P.530-17 (2017).
Good luck with your work.

Sign in to comment.

Categories

Find more on Propagation and Channel Models in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!