Main Content


Normalized reflectivity of surface


The surfaceReflectivity System object™ creates a common interface for the surfaceReflectivityLand, surfaceReflectivityCustom, and surfaceReflectivitySea System objects.

To compute the normalized reflectivity:

  1. Create the surfaceReflectivity 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?




refl = surfaceReflectivity creates a normalized reflectivity object, refl, for a land surface. Use this object to generate a normalized radar cross section (NRCS) (also called surface σ0) as a function of frequency and grazing angle. This syntax creates a constant gamma land reflectivity model with a constant gamma value of -20 dB, which is representative of flatland.

refl = surfaceReflectivity(surfacetype) creates a normalized reflectivity object, refl, for a surfacetype specified as one of 'Land', 'Sea', or 'Custom'. Use this object to generate a normalized radar cross section (NRCS) (also called surface σ0) as a function of frequency and grazing angle.


refl = surfaceReflectivity(surfacetype,Name=Value) also creates a normalized reflectivity object for surface type surfacetype with the specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1=Value1,...,NameN=ValueN).

Example: refl = surfaceReflectivity('Land',Model="GIT",LandType="Soil",SurfaceHeightStandardDeviation=1) creates a normalized reflectivity object for land using the GIT model with a LandType of Soil and a SurfaceHeightStandardDeviation of 1.



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

Input Arguments

expand all

Grazing or depression angle of a surface relative to the radar, specified as a scalar or an M-length row vector of real values. When the land Model property is set to 'Billingsley', the angle is interpreted as a depression angle depressionang between –90° and 90°. For all other models, the angle is interpreted as a grazing angle grazingang ranging from 0° to 90° . Units are in degrees.

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

Example: freq = 7*10e9

Output Arguments

expand all

Normalized surface reflectivity, returned as either a real-valued N-length row vector or a real-valued M-by-N matrix. Normalized reflectivity is also called normalized radar cross section. M is the length of the grazing angle or depression angle vector graz and N is the length of the frequency vector freq. nrcs is dimensionless but often expressed as m²/m².

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:


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


collapse all

Obtain the constant gamma normalized reflectivity for using the default gamma value of -20 dB at a frequency of 10 GHz and a grazing angle of 10 degrees.

grazAng = 10;
freq = 10e9;
refl = surfaceReflectivity
refl = 
  surfaceReflectivityLand with properties:

      Model: 'ConstantGamma'
      Gamma: -20
    Speckle: 'None'

nrcs = refl(grazAng,freq)
nrcs = 0.0017

Create a normalized reflectivity cross-section object for a land surface using the GIT model and a soil land type. Obtain the NRCS at a frequency of 10 GHz over grazing angles from 20 to 60 degrees. Assume a standard deviation of surface height of 1 m.

grazAng = 20:60;
freq    = 10e9;
refl = surfaceReflectivity('Land','Model','GIT','LandType','Soil', ...
nrcs = refl(grazAng,freq);

Plot normalized reflectivities for grazing angles from 20 to 60 degrees.

grid on
xlabel('Grazing Angle (deg)')
ylabel('NRCS (dB m^2/m^2)')
title('GIT Model')

Figure contains an axes object. The axes object with title GIT Model contains an object of type line.

Create a sea normalized reflectivity object using the default NRL model and a sea state of 2. Obtain the normalized reflectivity at 10 GHz over grazing angles from 0.1 to 10 degrees. Assume horizontal polarization.

grazAng = 0.1:0.1:10;
freq = 10e9;
ss = 2;
pol = 'H';

Use the surfaceReflectivity object to obtain the normalized reflectivity.

refl = surfaceReflectivity('Sea',SeaState = ss,Polarization = pol);
nrcs = refl(grazAng,freq);

Plot the reflectivity as a function of grazing angle.

grid on
xlabel('Grazing Angle (deg)')
ylabel('NRCS (dB m^2/m^2)')
title('NRL Model, Horizontal Polarization')

Define a custom NRCS table using Nathanson reflectivity values for farmlands. Assume Rayleigh speckle. Next, calculate the RCS of a clutter patch and estimate the clutter-to-noise ratio at the receiver. Assume that the patch is 1000 meters away from the radar system. The azimuth and elevation beamwidths are 1 degree and 3 degrees, respectively. The grazing angle is 10 degrees. The pulse width is 10 microseconds. The radar operates at an L-band frequency of 1.5 GHz with a peak power of 5 kw. Use the general surfaceReflectivity object.

rng    = 1000;
bwAz   = 1;
bwEl   = 3;
graz   = 10;
tau    = 10e-6;
freq   = 1.5e9;
ppow   = 5000;

Configure a custom surface.

nathansonNRCS = db2pow([-35 -33 -32; -31 -30 -29; -29 -27 -25; ...
    -19 -17 -15; -14 -15 -14]);
nathansonFreq    = [1.5 3 6]*1e9;
nathansonGrazAng = [1.5 3 10 30 60];
refl = surfaceReflectivity('Custom',Reflectivity = nathansonNRCS, ...
    Frequency = nathansonFreq,GrazingAngle = nathansonGrazAng, ...
    Speckle = "Rayleigh")
refl = 
  surfaceReflectivityCustom with properties:

    Reflectivity: [5×3 double]
       Frequency: [1.5000e+09 3.0000e+09 6.0000e+09]
    GrazingAngle: [1.5000 3 10 30 60]
         Speckle: 'Rayleigh'
    SpeckleScale: 1.1284

[nrcs,n] = refl(graz,freq)
nrcs = 0.0013
n = 1.6210

Calculate the clutter RCS and apply multiplicative speckle

sigma = clutterSurfaceRCS(nrcs,rng,bwAz,bwEl,graz,tau)
sigma = 6.6253
rcs = sigma.*n   
rcs = 10.7394

Calculate clutter-to-noise ratio.

lambda = freq2wavelen(freq);
cnr = radareqsnr(lambda,rng,ppow,tau,'rcs',rcs)
cnr = 74.3130

Extended Capabilities

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

Version History

Introduced in R2022a