Main Content


Normalized reflectivity of surface

Since R2022a


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.

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

Input Arguments

expand all

Grazing or depression angle of a surface relative to the radar, specified as a Q-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 R-length vector of positive values. Units are in Hz.

Example: freq = 70e9

Output Arguments

expand all

Normalized surface reflectivity , returned as a real-valued Q-by-R matrix or a real-valued 2-by-2-Q-by-R array. Q is the length of the grazing angle graz or, for land surfaces only, depression angle. R is the length of the frequency vector freq. nrcs is dimensionless but often expressed as m²/m². Normalized reflectivity is also called normalized radar cross section (NRCS).

  • For the non-polarimetric reflectivity case, nrcs is returned as a real-valued Q-by-R matrix.

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


    where SHV and SVH are the cross-polarization components specified by the ReflectivityHV and ReflectivityVH properties. The σ0HH and σ0VV 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.


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

Multiplicative speckle, returned as an N-length real-valued vector where N is the length of the frequency vector in freq.

Data Types: double

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:

    EnablePolarization: 0
                 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')

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:

    EnablePolarization: 0
          Reflectivity: [5x3 double]
             Frequency: [1.5000e+09 3.0000e+09 6.0000e+09]
          GrazingAngle: [1.5000 3 10 30 60]
               Speckle: 'Rayleigh'
          SpeckleScale: 0.7979

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

Calculate the clutter RCS and apply multiplicative speckle

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

Calculate clutter-to-noise ratio.

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

Extended Capabilities

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

Version History

Introduced in R2022a