Clear Filters
Clear Filters

Longley-Rice propagation values

14 views (last 30 days)
I am struggling to understand the results obtained with the Longley-Rice model of the Antenna toolbox.
I try to get the signal strength at a receiver from a TV signal. I keep obtaining really low values (often negative) of signal strength (in dBm) even for recepters really close to the emitter. These values are always lower than the FCC Grade B threshold (-45dBm).
Is the result obtained by sigstrength the difference in signal strength compared to the initial strength at the emitter instead of the absolute value of signal strength at the recepter location?
m = propagationModel('longley-rice','TimeVariabilityTolerance', 0.7)
%%%% 1 Define Transmitter Site %%%
fq = 57000000; % 5.7MHz
tx = txsite('Name','MathWorks', ...
'Latitude',61.2189, ...
'Longitude',-149.896, ...
'Antenna',design(dipole,fq), ...
'AntennaHeight',39.6, ... % Units: meters
'TransmitterFrequency',fq, ... % Units: Hz
'TransmitterPower',1500); % Units: Watts, here: 1.5kW
% 2. Define Receiver Sites
% Define receiver sensitivity. Sensitivity is the minimum signal strength in
% power that is necessary for the receiver to accurately detect the signal.
rxSensitivity = -45; % Units: dBm --> corresponds to FCC grade B
rx = rxsite('Name', "test", ...
'Latitude', 61.2188, ... % take really close point as a test
'Longitude', -149.896, ...
'Antenna', design(dipole,tx.TransmitterFrequency), ...
'ReceiverSensitivity', rxSensitivity);
% get signal strength
ss = sigstrength(rx,tx,pm)

Accepted Answer

Jacob Halbrooks
Jacob Halbrooks on 5 Apr 2020
The output of sigstrength does correspond to the absolute signal strength received. By default the signal strength "Type" is "power", so this corresponds to total received power in units of dBm.
I ran your code in R2020a and saw signal strength that well exceeds the -45 dBm sensitivity:
>> ss = sigstrength(rx,tx,pm)
ss =
In addition, the coverage map shows substantial area of coverage over the -45 dBm sensitivity level.
>> coverage(tx,rx,pm,"SignalStrengths",-45:-5)
Nicolas on 9 Apr 2020
Hi Jacob !
Thanks a lot for your reply.
I would like to create a map of all the coverage areas in the US. However, the coverage function does not allow to draw coverage areas for stations that are more than 500km from each other.
Do you know how to export each coverage map as a shapefile or a simplified file containing polygon informations. I have only been able to export using the function described below but it creates a file with 40 000 observations wich is a bit heavy to treat.
Do you have other suggestions?
data = readtable("NE_1998.csv");
lats = data.lat_antenna;
lons = data.lon_antenna;
freq = transpose(data.freq*10^6)
pm = propagationModel('longley-rice','TimeVariabilityTolerance', 0.7);
txs = txsite('Latitude',lats,...
'Longitude',lons, ...
'AntennaHeight', haat, ...
'TransmitterFrequency',freq, ...
'TransmitterPower', power );
writetable(export.Data,map.csv );
Jacob Halbrooks
Jacob Halbrooks on 11 Apr 2020
Hi Nicolas,
Your best bet for extracting contour lines from the coverage data is the geocontourxy function in Mapping Toolbox. If you want to export those contour lines, take a look at kmlwrite.
One caveat is that geocontourxy requires that its X and Y inputs form a mesh, whereas the propagationData output from coverage typically represents scattered data (computed along radials from the transmitter site). There's some work involved for you to create a mesh over your region of interest (e.g. using meshgrid) and interpolating into the propagationData object at those points.
The propagationData object has an interp function that can help here, and the reference page has an example that includes meshing which you might find helpful:

Sign in to comment.

More Answers (0)


Find more on RF Propagation in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!