Main Content

SeaSurface

Sea surface belonging to radar scenario

Since R2022a

Description

SeaSurface defines a sea surface object belonging to a radarScenario. The object describes the size, surface reflectivity, motion, and wind speed of the surface. You can use the SeaSurface object to determine sea heights in a scenario and surface reflectivity, test for occlusion along the line-of-sight between two points in the scenario and give surface height at a point.

Creation

Create SeaSurface objects using the seaSurface object function of the radarScenario object.

Properties

expand all

Sea surface omnidirectional motion spectrum, specified as a seaSpectrum object. This object models surface heights over time.

Dependencies

To enable this property, set the radarScenario property IsEarthCentered to false.

Bounding rectangle of the surface, specified as a 2-by-2 matrix of real values. The bounding rectangle is defined by two two-dimensional points in either Cartesian or geodetic scenario coordinates. When the IsEarthCentered property of the radarScenario object is specified as:

  • false — Scenario coordinates are Cartesian. Specify the bounding rectangle [MinX, MaxX, MinY MaxY], as Cartesian coordinates in the reference frame of the scenario, where MinX < MaxX, and MinY < MaxY.

  • true — Scenario coordinates are geodetic. Specify the bounding rectangle as [StartLat, EndLat, StartLon EndLon] where StartLat and EndLat are the minimum and maximum latitudes of the geodetic frames. StartLat and EndLat must lie in the interval [–90,90] where StartLat < EndLat.

    Specify StartLon and EndLon as the minimum and maximum longitudes of the geodetic frame. StartLon and EndLon must lie in the interval [–180,180]. If EndLon < StartLon, the object wraps EndLon to StartLon + 360°. Units are in degrees.

Data Types: double

Radar reflectivity object of surface, specified as a surfaceReflectivitySea or surfaceReflectivityCustom for the normalized radar cross section (NRCS) of the surface. The default object is a surfaceReflectivitySea object with default properties.

This property contains a grid of reflectivity type values corresponding to vertices of the surface height data. If any terrain or a spectral model is present, ReflectivityMap must be a matrix of the same size as the domain of that data. Otherwise it must be scalar. Each element is an index into the third dimension of the Reflectivity property of the surfaceReflectivityCustom object.

Dependencies

To enable this property, set the RadarReflectivity property to a surfaceReflectivityCustom object.

Data Types: double

Surface reflection coefficient for use in multipath calculations, specified either as a SurfaceReflectionCoefficient object that defines the reflectivity model or as scalar with a value between -1 and 1. The default value is a SurfaceReflectionCoefficient object containing the earthSurfacePermittivity function model of the relative permittivity and conductivity for sea water that has a smooth surface (no waves). Note, by default, the reflectionCoefficient object function is called internally on the SurfaceReflectionCoefficient object to calculate the cumulative reflection coefficient value during multipath modeling if the EnableMultipath property is set to true in SurfaceManager.

Complex Number Support: Yes

Reference height of surface height data, specified as a scalar. Surface heights are relative to the reference height. Units are in meters.

Data Types: double

Wind speed over sea surface, specified as a nonnegative scalar. Wind speed is defined at a height of 10 meters from the water surface. Wind speed is used as a parameter for the associated spectral model. Units are m/s.

Data Types: double

Wind direction over the sea surface, specified as a scalar in the range 0° to 180°. A standard right-handed Cartesian coordinate system is used. When the IsEarthCentered property of radarScenario is true, wind direction is a positive angle defined counterclockwise from the positive x-axis. Otherwise, wind direction is defined as clockwise from the North direction. This property is used to determine surface reflectivity and is used as a parameter for the associated spectral model. Units are in degrees.

Data Types: double

Fetch, specified as a positive scalar. Fetch is the distance over a sea surface in which the wind blows in a single direction without obstruction. The fetch is used as a parameter for the associated spectral model. Units are in meters.

Data Types: double

Object Functions

heightHeight of point on surface
occlusionTest for occlusion of point by a surface
plotReflectivityMapPlots reflectivity map

Examples

collapse all

Create a square sea surface area using the seaSurface object. Assume a moderate sea state with a wind speed of about 10 m/s, a fetch of 250 km and a length of 1.0 km. Add an Elfouhaily spectrum to the sea surface. Use the height function to determine the heights of 2 points on the map.

Create a radar scenario.

scene = radarScenario(IsEarthCentered = false);
rng('default')

Add a sea surface to the scene with an Elfouhaily spectrum.

spec = seaSpectrum(Resolution = 20);
srf = seaSurface(scene,Boundary = [-500 500; -500 500], ...
    WindSpeed = 10,Fetch = 250000,SpectralModel = spec);

Find the height at two points.

P1 = [0;0];
P2 = [30;-70];
H = height(srf,[P1 P2])
H = 1×2

   -0.9394   -0.2682

Display the sea surface properties in the surface manager.

mgr = scene.SurfaceManager
mgr = 
  SurfaceManager with properties:

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

mgr.Surfaces
ans = 
  SeaSurface with properties:

                WindSpeed: 10
            WindDirection: 0
                    Fetch: 250000
            SpectralModel: [1x1 seaSpectrum]
        RadarReflectivity: [1x1 surfaceReflectivitySea]
    ReflectionCoefficient: [1x1 radar.scenario.SurfaceReflectionCoefficient]
          ReflectivityMap: 1
          ReferenceHeight: 0
                 Boundary: [2x2 double]

Create a square sea surface assuming a moderate sea state with a wind speed of about 12 knots (6.17 m/s), a fetch of 120 nmi (222.24 km), and a length of 1.024 km. Add an Elfouhaily spectrum to the sea surface. Use the occlusion object function to determine if the path from point 1 to point 2 is occluded.

Start by creating a radar scenario;

scene = radarScenario;

Add a sea surface with an Elfouhaily spectrum.

rng('default');
spec = seaSpectrum('Resolution',16);

Create the sea surface.

bnds = [0 1024; 0 1024];
srf = seaSurface(scene,'Boundary',bnds, ...
    'WindSpeed',6.17,'Fetch',222.24e3, ...
    'SpectralModel',spec);

Set two points for testing occlusion.

p1 = [1016; 368; -0.082];
p2 = [10; 100; 0.13];

Determine if the path from p1 to p2 is occluded

tf1 = occlusion(srf,p1,p2)
tf1 = logical
   1

Create a 1024-by-1024 m square sea surface. Assume an NRL reflectivity model for a high sea state 6 with a wind speed of about 20 m/s and a fetch of 250 km. Set UseOcclusion in the SurfaceManager to false.

Create a radar scenario.

scene = radarScenario;

Model the reflectivity using the NRL model.

refl = surfaceReflectivitySea(Model = 'NRL',SeaState = 6, ...
    Polarization = 'V')
refl = 
  surfaceReflectivitySea with properties:

    EnablePolarization: 0
                 Model: 'NRL'
              SeaState: 6
          Polarization: 'V'
               Speckle: 'None'

rng(2033)
spec = seaSpectrum(Resolution = 2);
bnds = [0 1024; 0 1024];
srf = seaSurface(scene,Boundary = bnds, ...
    WindSpeed = 20,Fetch = 250e3, ...
    SpectralModel = spec);
mgr = scene.SurfaceManager;
mgr.UseOcclusion = false
mgr = 
  SurfaceManager with properties:

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

x = linspace(srf.Boundary(1,1),srf.Boundary(1,2),1000);
y = linspace(srf.Boundary(2,1),srf.Boundary(2,2),1000);
[X,Y] = meshgrid(x,y);
X1 = X(:)';
Y1 = Y(:)';
hts = height(srf,[Y1;X1]);
hts = reshape(hts,length(x),length(y));
surf(x,y,hts)
axis equal
shading interp
ylabel('X (m)')
xlabel('Y (m)')
zlabel('Height (m)')

Version History

Introduced in R2022a