Main Content

Visualize Antenna Coverage Map and Communication Links

This example shows how to calculate and visualize signal strength between a transmitter and multiple receivers. The visualizations include an area coverage map and colored communication links. The example also shows selection of a directional antenna in order to achieve a communication link to a specific location.

Define Transmitter Site

% Define transmitter site at MathWorks (3 Apple Hill Dr, Natick, MA)
fq = 6e9; % 6 GHz
tx = txsite("Name","MathWorks", ...
    "Latitude",42.3001, ...
    "Longitude",-71.3504, ...
    "Antenna",design(dipole,fq), ...
    "AntennaHeight",60, ...        % Units: meters
    "TransmitterFrequency",fq, ... % Units: Hz
    "TransmitterPower",15);        % Units: Watts

Define Receiver Sites

% Define receiver sites in several surrounding towns and cities
rxNames = [...
   "Boston, MA","Lexington, MA","Concord, MA","Marlborough, MA", ...
   "Hopkinton, MA","Holliston, MA","Foxborough, MA","Quincy, MA"];

rxLocations = [...
   42.3601 -71.0589; ... % Boston
   42.4430 -71.2290; ... % Lexington
   42.4604 -71.3489; ... % Concord
   42.3459 -71.5523; ... % Marlborough
   42.2287 -71.5226; ... % Hopkinton
   42.2001 -71.4245; ... % Holliston
   42.0654 -71.2478; ... % Foxborough
   42.2529 -71.0023];    % Quincy

% Define receiver sensitivity. Sensitivity is the minimum signal strength in
% power that is necessary for the receiver to accurately detect the signal.
rxSensitivity = -90; % Units: dBm

rxs = rxsite("Name",rxNames, ...
    "Latitude",rxLocations(:,1), ...
    "Longitude",rxLocations(:,2), ...
    "Antenna",design(dipole,tx.TransmitterFrequency), ...
    "ReceiverSensitivity",rxSensitivity); % Units: dBm

Show Sites on a Map

Show the transmitter and receiver sites on a map. You can display information about a site by clicking on a marker.

viewer = siteviewer;
show(tx)
show(rxs)

Set the map imagery by using the Basemap property. Alternatively, open the map imagery picker in Site Viewer by clicking the second button from the right. Select "OpenStreetMap" to see streets and labels on the map. Rotate the view to show an overhead perspective.

viewer.Basemap = "openstreetmap";

Display Idealized Coverage Map using Dipole Antenna

Display coverage map. A coverage map shows the geographic area where a receiver will obtain good reception, which is where transmitted signal strength meets or exceeds the receiver"s sensitivity. Transmitted signal strength in power (dBm) is computed using a free-space propagation model, which disregards terrain, obstacles, and atmospheric effects. As a result, the coverage map shows idealized coverage area in the absence of any path loss impairments beyond free space loss.

coverage(tx,"freespace", ...
    "SignalStrengths",rxSensitivity)

Plot Communication Links using Dipole Antenna

Plot communication links on the map. Red links appear where the receiver is outside of the coverage zone, and green links appear where the receiver is within the coverage zone. Link lines may be clicked to display link statistics. To contrast the colors of the coverage zone and successful links, specify the color of successful links as dark green.

sc = [0 0.3 0];
link(rxs,tx,"freespace","SuccessColor",sc)

Use Rain Propagation Model

Update the coverage map and links to include path loss due to rain. Note that Boston, MA is no longer inside the coverage zone.

coverage(tx,"rain","SignalStrengths", rxSensitivity)
link(rxs,tx,"rain","SuccessColor",sc)

Define Directional Antenna

The dipole antenna transmitter results in a few receiver sites outside of the coverage zone, including the receiver in Boston, MA. Now assume a requirement of the transmitter is to achieve a communication link with Boston. Define a directional antenna that can increase antenna gain in that direction.

% Define Yagi-Uda antenna designed for transmitter frequency
yagiAnt = design(yagiUda,tx.TransmitterFrequency);

% Tilt antenna to direct radiation in XY-plane (i.e. geographic azimuth)
yagiAnt.Tilt = 90;
yagiAnt.TiltAxis = "y";

f = figure;

% Show directivity pattern
patternAzimuth(yagiAnt,tx.TransmitterFrequency)

%Close the previous figure
if (isvalid(f))
    close(f);
end

Display Coverage Map using Yagi-Uda Antenna

Update the coverage map and links. Boston is now within the coverage zone, but communication links with receivers in other directions are lost.

% Update transmitter antenna
tx.Antenna = yagiAnt;

% Point main beam toward Boston, MA by assigning azimuth angle between 
% transmitter location and Boston receiver location
tx.AntennaAngle = angle(tx, rxs(1));

% Update visualizations, using "rain" propagation model
coverage(tx,"rain","SignalStrengths",rxSensitivity)
link(rxs,tx,"rain","SuccessColor",sc)

Display Contoured Coverage Map using Multiple Signal Strengths

When a single signal strength is specified, the coverage map is green for the coverage region. Specify multiple signal strengths to generate a coverage map with contours for different signal levels.

% Define signal strengths from sensitivity to -60 dB
sigStrengths = rxSensitivity:5:-60;

% Update coverage map
coverage(tx,"rain","SignalStrengths",sigStrengths)

See Also

Functions

Objects

Related Topics