Main Content


Manage surfaces in radar scenario

Since R2022a


The SurfaceManager object lists the surfaces in a radar scenario, radarScenario. You can enable or disable occlusion and multipath interactions from surfaces in the radar scenario. The occlusion object function determines if any surfaces occlude the line-of-sight between two points. Use the height object function to query the height of surfaces at any location in the scenario.


Use the landSurface object function to create LandSurface objects. Use the seaSurface object function to create SeaSurface objects. Use the customSurface object function to create CustomSurface objects. Obtain the SurfaceManager object from the SurfaceManager property of the radarScenario object.


expand all

Enable multipath propagation from LandSurface and SeaSurface objects, specified as true or false.

When specified as:

  • false — The scenario does not model multipath propagation effects from surfaces.

  • true — The scenario models multipath reflections arising from LandSurface and SeaSurface objects, as well as extended targets within the radar scenario. The detect object function for the radarScenario or Platform accounts for multipath interactions for all radarDataGenerator objects attached to platforms. On the first call to detect, the HasGhosts property will be automatically set to true for radarDataGenerator objects. Up to three detections in addition to the line of sight detection are modeled using a three-bounce multipath model for reflections arising from surfaces that are located along-track (contributions from surfaces off to the side are not considered). Reflections are calculated from the ReflectionCoefficient property of the LandSurface and SeaSurface objects. If a LandSurface or SeaSurface is not defined, the ReflectionCoefficient defaults to a value of -1 for multipath calculations.

    The Earth surface model is used to generate multipath for locations in the scenario for which LandSurface and SeaSurface objects are not defined. When the IsEarthCentered property of the radarScenario object is specified as:

    • false — Multipath is propagated over a flat Earth model located at z = 0.

    • true — Multipath is propagated over the WGS84 ellipsoid Earth Model.


EnableMultipath should be enabled before the simulation is advanced using the advance function because this property cannot be set to true after the detect function is called on the radarScenario. Multipath modeling is only supported for radarDataGenerator objects with DetectionMode property defined as Monostatic and EmissionsInputPort and InterferenceInputPort properties set to false.

Enable line-of-sight occlusion by surfaces, specified as true or false.

When specified as:

  • true — The scenario models the occlusion of the line-of-sight by surfaces between points. In this case, the detect object function of the radarScenario object or the detect object function of the Platform object account for surface occlusion.


    If the IsEarthCentered property of the radarScenario object is specified as true, selecting this option also enables horizon occlusion based on the WGS84 ellipsoid Earth model.

  • false — The scenario does not model the occlusion of lines-of-sight due to surfaces specified in the radar scenario or the Earth.

Surfaces in radarScenario, specified as an array of LandSurface, SeaSurface, and CustomSurface objects.

You can add land surfaces to a radar scenario using landSurface, sea surfaces using seaSurface, and custom surfaces using customSurface.

Object Functions

heightHeight of point on surface
occlusionTest for occlusion of point by a surface
surfacePlotterDataData for surface plotter


collapse all

Create a radar scenario and specify its IsEarthCentered property as true to use DTED file.

scene = radarScenario(IsEarthCentered = true);

Model the reflectivity as a constant gamma surface.

refl = surfaceReflectivityLand(Model = 'ConstantGamma',Gamma = -20);

Add a 0.1-by-0.1 degree land surface derived from a DTED file.

bdry = [39.5 39.6;-105.51 -105.41];
srf = landSurface(scene,Terrain = 'n39_w106_3arc_v2.dt1', ...
    Boundary = bdry,RadarReflectivity = refl)
srf = 
  LandSurface with properties:

        RadarReflectivity: [1x1 surfaceReflectivityLand]
    ReflectionCoefficient: [1x1 radar.scenario.SurfaceReflectionCoefficient]
          ReflectivityMap: 1
          ReferenceHeight: 0
                 Boundary: [2x2 double]
                  Terrain: 'n39_w106_3arc_v2.dt1'

mgr = scene.SurfaceManager
mgr = 
  SurfaceManager with properties:

    EnableMultipath: 0
       UseOcclusion: 1
           Surfaces: [1x1 radar.scenario.LandSurface]

Plot the surface height.

x = linspace(srf.Boundary(2,1),srf.Boundary(2,2),201);
y = linspace(srf.Boundary(1,1),srf.Boundary(1,2),201);
[X,Y] = meshgrid(x,y);
X1 = X(:)';
Y1 = Y(:)';
H = height(srf,[Y1;X1]);
H = reshape(H,length(x),length(y));
shading interp
ylabel('Latitude (deg)')
xlabel('Longitude (deg)')
zlabel('Height (m)')

Version History

Introduced in R2022a