Main Content

surfaceReflectivitySea

Normalized reflectivity of sea surface

Since R2022a

Description

This System object™ creates a normalized reflectivity object for a sea surface. Use surfaceReflectivitySea to generate normalized radar cross section (NRCS), and optionally speckle, as a function of frequency and grazing angle for sea surfaces. NRCS is the radar cross section (RCS) of a unit area of a surface. Multiplying by the total area of a surface or the illuminated area of a surface gives the total RCS.

NRCS is used to calculate RCS and surface clutter returns. Speckle is a multiplicative factor used to make surface clutter appear noisier and is especially applicable to imaging applications. Attach a surfaceReflectitySea object to a seaSurface in radarScenario using SurfaceManager. See Radar Surface Clutter Simulation for more information.

To compute the normalized reflectivity:

  1. Create the surfaceReflectivitySea object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

refl = surfaceReflectivitySea creates a normalized reflectivity System object, refl, for a sea surface. Use refl to generate normalized radar cross section as a function of frequency and grazing angle. This syntax creates a normalized reflectivity object for an "NRL" sea Model with a SeaState of 1.

example

refl = surfaceReflectivitySea(PropertyName=Value) also creates a normalized reflectivity object for a sea surface with each specified PropertyName set to the corresponding Value. For example, the Model and SeaState properties specify built-in reflectivity models. The table Sea Reflectivity Models summarizes supported sea surface models and their domain of application. You can specify additional pairs of arguments in any order as (PropertyName1=Value1, … ,PropertyNameN=ValueN).

example

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Sea reflectivity model, specified as "NRL", "APL", "GIT", "Hybrid", "Masuko", "Nathanson", "RRE", "Sittrop", "TSC", or "ConstantGamma".

Tip

It is not recommended to use sea models outside of their valid frequency, grazing angle, and sea state ranges. See Sea Reflectivity Models for more information about the range of validity for supported sea models.

Sea state, specified as a nonnegative integer from 0 – 8. See Sea States for more information on sea state values. When Model is set to "ConstantGamma", specify the Gamma property instead of the SeaState.

Data Types: double

Enable polarization, specified as true or false. When EnablePolarization is set to true, the output nrcs argument includes polarimetric normalized radar cross section components. EnablePolarization enables additional polarization-related properties when set to either true or false.

When set to true, EnablePolarization enables the CrossPolarization property. Specifying the CrossPolarization property enables additional properties that are relevant for frequencies and grazing angles that you can specify using additional properties:

Enabled PropertyDescription

CrossPolarization, specified as "Full" or "Symmetric" – Enables cross polarization

  • CrossPolarization set to "Full" enables ReflectivityHV and ReflectivityVH, except when Model is set to "ConstantGamma" (the Gamma property defines polarization).

  • CrossPolarization set to "Symmetric" enables ReflectivityHV, except when Model is set to "ConstantGamma" (the Gamma property defines polarization).

Frequency – Frequencies

Frequencies associated with polarimetric reflectivity components. You can specify this property when Model is set to any value other than "ConstantGamma".

GrazingAngle – Grazing angles

Grazing angles associated with polarimetric reflectivity components. You can specify this property when Model is set to any value other than "ConstantGamma".

When set to false, EnablePolarization enables:

Enabled PropertyEnabled Property
Polarization – Mean polarization

Mean polarization of the sea reflectivity model. You can specify this property when Model is set to any value except "ConstantGamma".

Data Types: char | string

Cross-polarization type, specified as "Full" or "Symmetric".

When set to "Full", the CrossPolarization property enables additional polarization-related properties and impacts speckle:

Enabled PropertyDescriptionSpeckle

ReflectivityHVHV cross-polarized reflectivity component

Note

The HH and VV co-polarized components are determined by the particular model selected in the Model property.

  • HV is the cross-polarized reflectivity component that represents horizontal transmission and vertical reception.

  • You can specify this property when Model is set to any value other than "ConstantGamma".

  • When Model is set to "ConstantGamma", you can specify the HV component in the Gamma property.

When the Speckle property is also set to any value other than "None", unique speckle values are generated for all polarimetric reflectivity components (HV, VH, HH, and VV).

ReflectivityVHVH cross-polarized reflectivity component
  • VH is the cross-polarized reflectivity component that represents vertical transmission and horizontal reception.

  • You can specify this property when Model is set to any value other than "ConstantGamma".

  • When Model is set to "ConstantGamma", you can specify the VH component in the Gamma property.

When set to "Symmetric", the CrossPolarization property enables additional polarization-related properties and impacts speckle:

Enabled PropertyDescriptionSpeckle

ReflectivityHVHV cross-polarized reflectivity component

Note

The HH and VV co-polarized components are determined by the particular model selected in the Model property.

  • HV is the cross-polarized reflectivity component that represents horizontal transmission and vertical reception. Reciprocity is assumed and the cross-polarization terms are set to be equal so that ReflectivityVH = ReflectivityHV.

  • You can specify this property when Model is set to any value other than "ConstantGamma".

  • When Model is set to "ConstantGamma", you can specify the HV component in the Gamma property.

  • When the Speckle property is also set to any value other than "None", speckle values corresponding to the HV and VH polarimetric reflectivity components are equivalent.

  • Unique speckle values are generated for HH and VV polarimetric reflectivity components.

Data Types: char | string

Specify normalized radar cross section (NRCS), or reflectivity values, for the cross-polarized HV reflectivity component. HV represents horizontal transmission and vertical reception. Q corresponds to the number of angles in GrazingAngle and R corresponds to the number of frequencies in the Frequency property.

The HH and VV co-polarized polarimetric reflectivity components are determined by the particular model selected in the Model property.

The returned nrcs for cross-polarized components is calculated using nearest neighbor interpolation at a given grazing angle and frequency. Therefore, normalized reflectivity values should cover grazing angles from 0–90° and all expected frequencies to avoid interpolation errors. Units are dimensionless but commonly expressed as m²/m².

Dependencies

To enable this property, set the EnablePolarization property to true and set the Model property to any value other than "ConstantGamma".

Data Types: double

Specify normalized radar cross section (NRCS), or reflectivity values, for the cross-polarized VH reflectivity component. VH represents vertical transmission and horizontal reception. Q corresponds to the number of angles in GrazingAngle and R corresponds to the number of frequencies in the Frequency property.

The returned nrcs for cross-polarized components is calculated using nearest neighbor interpolation at a given grazing angle and frequency. Therefore, normalized reflectivity values should cover grazing angles from 0–90° and all expected frequencies to avoid interpolation errors. Units are dimensionless but commonly expressed as m²/m².

Dependencies

To enable this property, set the EnablePolarization property to true, set the CrossPolarization property to "Full", and set the Model property to any value other than "ConstantGamma".

Data Types: double

Frequencies associated with polarimetric reflectivity components, specified as a length-R row vector, where R is no less than two. When R is a 2-element vector, it defines the minimum and maximum frequencies over which the reflectivity components are valid. By default, the EnablePolarization property is false and the Frequency property is ignored. Frequency units are in Hz.

Example: [1e6,10e6]

Dependencies

To enable this property, set the EnablePolarization property to true and set the Model property to any value except "ConstantGamma".

Data Types: double

Grazing angles associated with polarimetric reflectivity components, specified as a length-R row vector, where R is no less than two. When Q is a 2-element vector, it defines the minimum and maximum Grazing Angle over which the reflectivity components are valid. By default, the EnablePolarization property is false and the GrazingAngle property is ignored. Units are in degrees.

Example: [45:60]

Dependencies

To enable this property, set the EnablePolarization property to true and set the Model property to any value except "ConstantGamma".

Data Types: double

Mean polarization of surface reflectivity model, specified as "H" or "V". "H" designates horizontal polarization and "V" designates vertical polarization.

Dependencies

To enable this property, set the EnablePolarization property to false and set the Model property to any value except "ConstantGamma".

Data Types: char | string

Gamma value, γ, used in the Constant Gamma Model, specified as a scalar or 2-by-2 real-valued matrix. When Model is set to "ConstantGamma", you specify the Gamma value that represents the desired sea characteristics at a given frequency instead of the SeaState property. The default value of -40 is representative of sea state 3. Units are in dB.

  • If EnablePolarization is false, specify Gamma as a scalar.

  • If EnablePolarization is true, specify Gamma as a scalar or a 2-by-2 matrix, such that Gamma = [GammaHH GammaHV; GammaVH GammaVV]. When specified as a scalar, it is assumed that all polarimetric components are equal. When CrossPolarization is set to "Symmetric", GammaVH must be set equal to GammaHV.

Tip

You can use the surfacegamma function to return the gamma value for supported terrain types and frequencies.

Dependencies

To enable this property, set the Model property to "ConstantGamma".

Data Types: double

Speckle distribution type, specified as one of "None", "Lognormal", "Rayleigh", or "Weibull". Speckle is a multiplicative factor used to make surface clutter appear noisier and is especially applicable to imaging applications. See Speckle Model for more information.

  • "None" – No speckle is applied.

  • "Lognormal" – Speckle has a lognormal distribution. Define the distribution using the SpeckleMean and SpeckleStandardDeviation properties. Default values of these properties create speckle with a normalized mean lognormal distribution.

  • "Rayleigh" – Speckle has a Rayleigh distribution. Define the distribution using the SpeckleScale property. The default value of this property creates speckle with a unit mean Rayleigh distribution.

  • "Weibull" – Speckle has a Weibull distribution. Define the distribution using the SpeckleScale and SpeckleShape properties. The default values of these properties create speckle with a unit mean Weibull distribution.

Data Types: char | string

Mean value of lognormal-distributed speckle, specified as a scalar. When the Speckle property is set to "Lognormal", speckle has a lognormal distribution and you can define the distribution using the SpeckleMean and SpeckleStandardDeviation properties. Default values of these properties create speckle with a normalized mean lognormal distribution.

A lognormal distribution is parameterized with a mean, μlog, and a standard deviation, σlog. The expected value of the speckle distribution can be expressed as

speckle_dist=e(μlog+σlog22).

A μlog of -0.5*log(2) and a σlog of sqrt(log(2)) results in a speckle_dist equal to one.

Dependencies

To enable this property, set the Speckle property to "Lognormal".

Data Types: double

Standard deviation of lognormal-distributed speckle, specified as a non-negative scalar. When the Speckle property is set to "Lognormal", speckle has a lognormal distribution and you can define the distribution using the SpeckleMean and SpeckleStandardDeviation properties. Default values of these properties create speckle with a normalized mean lognormal distribution.

A lognormal distribution is parameterized with a mean, μlog, and a standard deviation, σlog. The expected value of the speckle distribution can be expressed as

speckle_dist=e(μlog+σlog22).

A μlog of -0.5*log(2) and a σlog of sqrt(log(2)) results in a speckle_dist equal to one.

Dependencies

To enable this property, set the Speckle property to "Lognormal".

Data Types: double

Scale parameter for speckle for the Rayleigh and Weibull distributions, specified as a positive scalar.

  • When the Speckle property is set to "Rayleigh", speckle has a Rayleigh distribution. The default value of SpeckleScale creates speckle with a unit mean Rayleigh distribution. A Rayleigh distribution is parameterized only by the speckle scale, λscale. The expected value of the speckle distribution can be expressed as

    speckle_dist = λscaleπ2.

    A λscale of sqrt(4/π) results in a speckle_dist equal to one.

  • When the Speckle property is set to "Weibull", speckle has a Weibull distribution and you can define the distribution using the SpeckleScale and SpeckleShape properties. The default values of these properties create speckle with a unit mean Weibull distribution. A Weibull distribution is parameterized by the speckle scale, λscale, and speckle shape, kshape.

    speckle_dist = λscaleΓ(1+1kshape),

    where is Γ is the gamma function. A λscale of sqrt(4/π) and a kshape of 2 results in a speckle_dist equal to one.

Dependencies

To enable this property, set the Speckle property to "Rayleigh" or "Weibull".

Data Types: double

Shape value for the Weibull speckle distribution, specified as a positive scalar. When the Speckle property is set to "Weibull", speckle has a Weibull distribution and you can define the distribution using the SpeckleScale and SpeckleShape properties. The default values of these properties create speckle with a unit mean Weibull distribution.

A Weibull distribution is parameterized by the speckle scale, λscale, and speckle shape, kshape.

speckle_dist = λscaleΓ(1+1kshape),

where Γ is the gamma function. A λscale of sqrt(4/π) and a kshape of 2 results in a speckle_dist equal to one.

Dependencies

To enable this property, set the Speckle property to "Weibull".

Data Types: double

Usage

Description

nrcs = refl(graz,freq) returns the normalized radar cross section, nrcs, at grazing angle graz and frequency freq.

example

nrcs = refl(graz,freq,lookangle) also specifies the radar look angle, lookangle, with respect to the wind direction. To enable this syntax, set the Model property to one of "APL", "GIT", "Hybrid", "Masuko", "Sittrop", or "TSC".

[nrcs,speck] = refl(___) also returns multiplicative speckle, speck.

Input Arguments

expand all

Grazing Angle of surface relative to radar, specified as a scalar or a length-Q row vector of nonnegative values. It is not recommended to use Sea Reflectivity Models outside of their defined validity regions. Grazing angles must lie between 0° and 90°. Units are in degrees.

Data Types: double

Transmitted frequencies, specified as a positive scalar or R-length vector of positive values. Units are in Hz.

Example: freq = 70e9

Data Types: double

Look angle with respect to wind direction, specified as a scalar between 0° and 180°. The look angle is zero when looking upwind.

The look angle for different directions is:

  • Upwind – 0°

  • Downwind – 180°

  • Crosswind – 90°

Dependencies

To enable this argument, set the Model property to "APL", "GIT", "Hybrid", "Masuko", "Sittrop", or "TSC".

Data Types: double

Output Arguments

expand all

Normalized radar cross section, also referred to as surface σ0. Units are dimensionless, but often expressed as m²/m². nrcs is returned as an array with dimensions that are determined by object properties:

  • For the non-polarimetric reflectivity case, nrcs is returned as a real-valued Q-by-R matrix, where Q is the length of graz and R is the length of freq.

  • For the polarimetric reflectivity case, nrcs is returned as a real-valued 2-b-2-by-Q-by-R array, where Q is the length of graz and R is the length of freq. For each value of Q and R, nrcs forms a polarimetric normalized radar cross section (NRCS) reflectivity matrix, σ0, of the form

    σ0=[σHH0σHV0σVH0σVV0]

    where σ0HV and σ0VH are the cross-polarization components specified by the ReflectivityHV and ReflectivityVH properties. The σ0HH and σ0VV co-polarized components are derived from the specified model as set by the Model property.

The returned normalized reflectivity for cross-polarization components σ0HV and σ0VH is calculated using nearest neighbor interpolation at a given grazing angle and frequency. To avoid interpolation errors, the normalized reflectivity values in the ReflectivityHV and ReflectivityVH properties should cover grazing angles from 0–90 degrees and all expected frequencies.

Dependencies

To enable the polarimetric reflectivity matrix, set the EnablePolarization to true.

Multiplicative speckle, returned as a Q-by-R matrix where Q is the length of ang and R is the length of freq. For the polarimetric reflectivity case, speckle is returned as a 2-by-2-by-Q-by-R array.

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Create a sea surface normalized reflectivity object using the default NRL model and a sea state of 6. Obtain the normalized reflectivity at a frequency of 1 GHz over grazing angles from 0.1 to 10 degrees and assume vertical polarization. Plot the normalize reflectivity as a function of grazing angle.

grazAng = 0.1:0.1:10;
freq = 1e9;
seastate = 6;
pol = 'V';
refl = surfaceReflectivitySea(SeaState = seastate,Polarization = pol);
nrcs = refl(grazAng,freq);
plot(grazAng,pow2db(nrcs))
grid on
xlabel('Grazing Angle (deg)')
ylabel('NRCS (dB m^2/m^2)')
title('NRL Model, Vertical Polarization')

Figure contains an axes object. The axes object with title NRL Model, Vertical Polarization, xlabel Grazing Angle (deg), ylabel NRCS (dB m Squared baseline /m Squared baseline ) contains an object of type line.

Create a sea surface normalized reflectivity object using the default model parameters. Obtain the normalized reflectivity at a frequency of 1 GHz over grazing angles from 0.1 to 10 degrees and assume vertical polarization. Plot the normalize reflectivity as a function of grazing angle.

grazAng = 0.1:0.1:10;
freq = 1e9;
refl = surfaceReflectivitySea
refl = 
  surfaceReflectivitySea with properties:

    EnablePolarization: 0
                 Model: 'NRL'
              SeaState: 1
          Polarization: 'H'
               Speckle: 'None'

nrcs = refl(grazAng,freq);
plot(grazAng,pow2db(nrcs))
grid on
xlabel('Grazing Angle (deg)')
ylabel('NRCS (dB m^2/m^2)')
title('NRL Model, Vertical Polarization')

Figure contains an axes object. The axes object with title NRL Model, Vertical Polarization, xlabel Grazing Angle (deg), ylabel NRCS (dB m Squared baseline /m Squared baseline ) contains an object of type line.

Configure a radarscenario to simulate a reflective sea surface. Add a sea surface object to define the physical properties of the scenario surface. The surface is a simple 400-by-400 meter rectangle. Use the surfaceReflectivitySea function to create a GIT model with a sea state 3. Then, use the scenario seaSurface method to add the rectangular sea region and the radar reflectivity model to the scenario. Use a surface reference height of 16 meters.

scene = radarScenario(UpdateRate = 0, IsEarthCentered = false);
refl = surfaceReflectivitySea(Model = "GIT", SeaState = 3, Polarization = "V");
srf = seaSurface(scene,RadarReflectivity = refl, ...
    Boundary=[-200 200; -200 200],ReferenceHeight = 16)
srf = 
  SeaSurface with properties:

                WindSpeed: 10
            WindDirection: 0
                    Fetch: Inf
            SpectralModel: []
        RadarReflectivity: [1×1 surfaceReflectivitySea]
    ReflectionCoefficient: [1×1 radar.scenario.SurfaceReflectionCoefficient]
          ReflectivityMap: 1
          ReferenceHeight: 16
                 Boundary: [2×2 double]

Create a sea surface normalized reflectivity object using the NRL model and a sea state of 6. Specify the cross-polarization reflectivity. Obtain the NRCS at a frequency of 10 GHz over grazing angles from 1 to 10 degrees. Plot the reflectivities.

refl = surfaceReflectivitySea(Model='NRL',SeaState=6, ...
   EnablePolarization=true,CrossPolarization='full', ...
   GrazingAngle = 0:.1:90,Frequency = [100,1e6,11e6], ...
   ReflectivityHV=0.002*sind(0:.1:90)'*[1 1 1], ...
   ReflectivityVH=0.001*sind(0:.1:90)'*[1 1 1]);

Set the grazing angles and frequencies. Plot the reflectivities.

grazAng = 0.1:0.1:10;
freq = 10e9;
nrcs = refl(grazAng,freq);
plot(grazAng,pow2db(squeeze(nrcs(1,1,:))), ...
    grazAng,pow2db(squeeze(nrcs(2,2,:))), ...
    grazAng,pow2db(squeeze(nrcs(1,2,:))), ...
    grazAng,pow2db(squeeze(nrcs(2,1,:))))
legend('HH','VV','HV','VH');
grid on
xlabel('Grazing Angle (deg)')
ylabel('NRCS (dB m^2/m^2)')
title('NRL Model: Sea State 6')

Figure contains an axes object. The axes object with title NRL Model: Sea State 6, xlabel Grazing Angle (deg), ylabel NRCS (dB m Squared baseline /m Squared baseline ) contains 4 objects of type line. These objects represent HH, VV, HV, VH.

More About

expand all

References

[1] Gregers-Hansen, V. and Mittal, R. "An Improved Empirical Model for Radar Sea Clutter Reflectivity." NRL/MR/5310-12-9346, Apr. 27, 2012.

[2] Barton, David Knox. Radar Equations for Modern Radar. Artech House, 2013.

[3] Reilly, J. P., R. L. McDonald, and G. D. Dockery. "RF-Environment Models for the ADSAM Program." Report No. A1A97U-070, Laurel, MD: Johns Hopkins University Applied Physics Laboratory, August 22, 1997.

[4] Ward, Keith D., Simon Watts, and Robert J. A. Tough. Sea Clutter: Scattering, the K-Distribution and Radar Performance. IET Radar, Sonar, Navigation and Avionics Series 20. London: Institution of Engineering and Technology, 2006.

[5] Antipov, Irina. "Simulation of Sea Clutter Returns." Department of Defence, June 1998.

[6] Masuko, Harunobu, Ken'ichi Okamoto, Masanobu Shimada, and Shuntaro Niwa. "Measurement of Microwave Backscattering Signatures of the Ocean Surface Using X Band and K a Band Airborne Scatterometers." Journal of Geophysical Research 91, no. C11 (1986): 13065. https://doi.org/10.1029/JC091iC11p13065.

[7] Nathanson, Fred E., et al. Radar Design Principles: Signal Processing and the Environment. 2. ed., Repr, Scitech Publ, 2004.

Extended Capabilities

expand all

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2022a