surfaceReflectivityLand
Description
This System object™ computes the normalized reflectivity of a land surface. Normalized reflectivity is the radar crosssection 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 radar crosssection. Normalized reflectivity is also referred to as surface σ^{0} and is a function of frequency and grazing angle.
To compute the normalized reflectivity:
Create the
surfaceReflectivityLand
object and set its properties.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
creates a
normalized reflectivity object refl
= surfaceReflectivityLandrefl
for a land surface. Use this
object to generate a normalized radar cross section (NRCS). This syntax creates a
normalized reflectivity object with a 'Barton'
land
Model
and a 'Flatland'
LandType
.
It is not recommended to use models outside of their defined validity regions. See
the Model
property description for more information about available
models and at what frequency and grazing angles the models are valid. See the
LandType
property help for information about applicable land types
for each model.
creates a normalized reflectivity object for a land surface with the specified property
refl
= surfaceReflectivityLand(Name=Value
)Name
set to the specified Value
. You can
specify additional namevalue pair arguments in any order as
(Name1=Value1
, … ,NameN=ValueN
).
Example: refl =
surfaceReflectivityLand(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.
Properties
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.
EnablePolarization
— Enable polarization
false
(default)  true
Enable polarization, specified as false
or true
.
When
true
, the System object enables the specification of crosspolarization components to help form a complete polarimetric normalized radar crosssection (NRCS) reflectivity matrix σ^{0} of the form$${\sigma}^{0}=\left[\begin{array}{cc}{\sigma}_{HH}^{0}& {\sigma}_{HV}^{0}\\ {\sigma}_{VH}^{0}& {\sigma}_{VV}^{0}\end{array}\right]$$
where σ^{0}_{HV} and σ^{0}_{VH} are the crosspolarization components specified by the
ReflectivityHV
andReflectivityVH
properties, respectively. The remaining components, σ^{0}_{HH} and σ^{0}_{VV}, are determined by the particular model set by theModel
property.When
false
, the System object lets you specify the mean polarization using thePolarization
property based on the selectedModel
.
CrossPolarization
— Crosspolarization components
'Full'
(default)  'Symmetric'
Crosspolarization components, specified as 'Full'
or
'Symmetric'
.
When the CrossPolarization
property is set to
'Full'
:
If the
Model
property is not set to'ConstantGamma'
, theReflectivityHV
andReflectivityVH
properties are applicable, and unique speckle values are generated for all reflectivity components (σ^{0}_{HH}, σ^{0}_{HV}, σ^{0}_{VH}, and σ^{0}_{VV}).If the
Model
property set to'ConstantGamma'
, theCrossPolarization
property only affects speckle generation.
When the CrossPolarization
property is set to
'Symmetric'
then reciprocity applies for monostatic geometry and
the crosspolarization terms are equal,
σ^{0}_{HV} =
σ^{0}_{VH}.
If the
Model
property is not'ConstantGamma'
, only theReflectivityHV
property can be set. TheReflectivityVH
property is assumed to be equal to theReflectivityHV
property. In addition, speckle values corresponding to the HV and VH components are equal.If the
Model
property is'ConstantGamma'
, setting theCrossPolarization
property to'Symmetric'
requires that the HV and VH components of theGamma
property are equal and the object returns equal HV and VH speckle values.
Dependencies
To enable this property, set the EnablePolarization
property
to true
.
Data Types: char
 string
Model
— Land reflectivity model
'Barton'
(default)  'APL'
 'Billingsley'
 'GIT'
 'Morchin'
 'Nathanson'
 'UlabyDobson'
 'ConstantGamma'
Land reflectivity model, specified as 'Barton'
,
'APL'
, 'Billingsley'
, 'GIT'
,
'Morchin'
, 'Nathanson'
,
'Nathanson'
, 'UlabyDobson'
, or
'ConstantGamma'
. Descriptions of the models and land types are
shown in the table Land Reflectivity Models and Land Types.
LandType
— Land type
char  string
Land type, specified as a char or string. The allowable land type and their default
values depend on the Model
property. If the
Model
property is not specified, the default land type is
'Flatland'
. Descriptions of the models and land types are shown in
the table Land Reflectivity Models and Land Types.
Data Types: char
 string
SurfaceHeightStandardDeviation
— Surface height standard deviation
0 (default)  scalar
Standard deviation of the surface height, specified as a positive scalar. Units are in meters.
Dependencies
To enable this property, set the SurfaceType
property to
'land'
and the Model
property to
'GIT'
.
Data Types: double
Polarization
— Mean polarization of reflectivity model
'H'
(default)  'V'
Mean polarization of reflectivity model, specified as 'H'
or
'V'
. 'H'
designates horizontal polarization and
'V'
designates vertical polarization.
Dependencies
To enable this property, set the Model
property to
'UlabyDobson'
and set the EnablePolarization
property to false
.
Data Types: char
 string
Gamma
— Terrain gamma value
20
(default)  real scalar  2by2 realvalued matrix
Gamma value used in the constant gamma clutter reflectivity model, specified as a scalar or 2by2 realvalued matrix. The gamma value depends on both terrain type and operating frequency. The default value is representative of flat land. Units are in dB.
If
EnablePolarization
isfalse
, specifyGamma
as a scalar.If
EnablePolarization
istrue
, specifyGamma
as a scalar or a 2by2 matrix, such that Gamma = [GammaHH GammaHV; GammaVH GammaVV]. When specified as a scalar, it is assumed that all polarimetric components are equal.To control the speckle values for the polarimetric
Gamma
case, set theCrossPolarization
property to'Full'
for unique speckle values for all components or'Symmetric'
to set the speckle value for HV = VH.
Example: 15
Dependencies
To enable this property, set the Model
property to
'ConstantGamma'
.
Data Types: double
ReflectivityHV
— HV normalized radar cross section
zeros(91,2)
(default)  QbyR realvalued matrix
Normalized radar cross section (NRCS), for the crosspolarized
σ^{0}_{HV}
component, where HV represents horizontal transmission and vertical
reception. Q corresponds to the number of angles in either the
GrazingAngle
or DepressionAngle
property.
R corresponds to the number of frequencies in the
Frequency
property. The
σ^{0}_{HH} and
σ^{0}_{VV}
components are derived from the selected model designated by the
Model
property and associated properties. Units are
m²/m².
Dependencies
To enable this property, set the EnablePolarization
property to
true
and set the Model
property is
anything other than 'ConstantGamma'
.
Data Types: double
ReflectivityVH
— VH normalized radar cross section
zeros(91,2)
(default)  QbyR realvalued matrix
Normalized radar cross section (NRCS), for the crosspolarized
σ^{0}_{VH}
component, where VH represents horizontal transmission and vertical
reception. Q corresponds to the number of angles in either the
GrazingAngle
or DepressionAngle
property.
R corresponds to the number of frequencies in the
Frequency
property. The
σ^{0}_{HH} and
σ^{0}_{VV}
components are derived from the selected model designated by the
Model
property and associated properties. Units are
m²/m².
Dependencies
To enable this property, set the CrossPolarization
property
to 'Full'
.
Frequency
— Radar frequency
[0 1e20]
(default)  lengthR row vector
Valid frequencies for the normalized reflectivity, specified as a lengthR row vector. 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 'Constant Gamma'
.
Data Types: double
GrazingAngle
— Grazing angles
[0:90]
(default)  lengthQ row vector
Grazing angles, as a lengthQ row vector. Units are in degrees.
Example: [45:60]
Dependencies
To enable this property, set the EnablePolarization
property
to true
and set the Model
property any value
except 'Billingsley'
or 'Constant Gamma'
.
Data Types: double
DepressionAngle
— Depression angles
[0:90]
(default)  lengthQ row vector
Depression angles, specified as a lengthQ row vector. Units are in degrees.
Example: [10:5:80]
Dependencies
To enable this property, set the EnablePolarization
property
to true
and set the Model
property to
'Billingsley'
.
Data Types: double
Speckle
— Speckle distribution type
'None'
(default)  'Lognormal'
 'Rayleigh'
 'Weibull'
Speckle distribution type, specified as 'None'
,
'Lognormal'
, 'Rayleigh'
, or
'Weibull'
. Speckle is a multiplicative factor used to make
clutter data appear noisier and is especially applicable to imaging applications.
Speckle is correlated with clutter RCS and is applied as I = σ*n, where σ represents the clutter RCS and n represents random numbers, which are often drawn from an independent identicallydistributed unity mean noise statistical distribution.
None
– No speckle is applied.Lognormal
– Speckle has a lognormal distribution. Define the distribution using theSpeckleMean
andSpeckleStandardDeviation
properties. Default values of these properties create speckle with a normalized mean lognormal distribution.Rayleigh
– Speckle has a Rayleigh distribution. Define the distribution using theSpeckleScale
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 theSpeckleScale
andSpeckleShape
properties. The default values of these properties create speckle with a unit mean Rayleigh distribution.
Data Types: char
 string
SpeckleMean
— Mean of value of lognormaldistributed speckle
0.5*log(2)
(default)  scalar
Mean value of lognormaldistributed speckle, specified as a scalar.
Dependencies
To enable this property, set the
Speckle
property to
'Lognormal'
.
Data Types: double
SpeckleStandardDeviation
— Standard deviation of lognormaldistributed speckle
sqrt(log(2))
(default)  nonnegative scalar
Standard deviation of lognormaldistributed speckle, specified as a nonnegative scalar.
Dependencies
To enable this property, set the
Speckle
property to
'Lognormal'
.
Data Types: double
SpeckleScale
— Scale parameter for Weibull and Rayleigh speckle distribution
sqrt(4/π)
(default)  nonnegative scalar
Scale parameter for speckle for the Rayleigh and Weibull distributions, specified as a positive scalar.
Dependencies
To enable this property, set the Speckle
property to 'Rayleigh'
or 'Weibull'
.
Data Types: double
SpeckleShape
— Shape value for Weibull distribution
2
(default)  positive scalar
Shape value for the Weibull speckle distribution, specified as a positive scalar.
Dependencies
To enable this property, set the Speckle
property to
'Weibull'
.
Data Types: double
Usage
Description
Input Arguments
graz
— Grazing or depression angle
Qlength vector of real values
Grazing or depression angle of a surface relative to the radar, specified as a
Qlength 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.
freq
— Transmitted frequencies
Rlength vector of positive values
Transmitted frequencies, specified as a positive scalar or Rlength vector of positive values. Units are in Hz.
Example: freq = 70e9
Output Arguments
nrcs
— Normalized surface reflectivity
realvalued QbyR matrix  realvalued 2by2byQbyR array
Normalized surface reflectivity , returned as a realvalued
QbyR matrix or a realvalued
2by2QbyR 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 nonpolarimetric reflectivity case,
nrcs
is returned as a realvalued QbyR matrix.For the polarimetric reflectivity case,
nrcs
is returned as a realvalued 2b2byQbyR array. For each value of Q and R,NRCS
forms a polarimetric normalized radar crosssection (NRCS) reflectivity matrix s of the form$${\sigma}^{0}=\left[\begin{array}{cc}{\sigma}_{HH}^{0}& {\sigma}_{HV}^{0}\\ {\sigma}_{VH}^{0}& {\sigma}_{VV}^{0}\end{array}\right]$$
where S_{HV} and S_{VH} are the crosspolarization components specified by the
ReflectivityHV
andReflectivityVH
properties. The σ^{0}_{HH} and σ^{0}_{VV} components are derived from the specified model as set by theModel
property
The returned normalized reflectivity for crosspolarization components
σ^{0}_{HV} and
σ^{0}_{VH} 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, set the
EnablePolarization
to true
.
speck
— Multiplicative speckle
QbyR matrix  2by2byQbyR
MATLAB^{®} array
Multiplicative speckle, returned as a QbyR
matrix where Q is the length of the angles vector in
ang
and R is the length of the frequency
vector in freq
. For the polarimetric reflectivity case, speckle
is returned as a 2by2byQbyR
MATLAB array.
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:
release(obj)
Examples
Surface Reflectivity of Default Land Model
Plot the normalized radar crosssection for grazing angles from 5 to 90 degrees. Assume the default 'Barton' land Model
and 'Flatland' LandType
. Set the radar frequency to 1 GHz.
grazAng = 5:90; freq = 1e9; reflectivity = surfaceReflectivityLand; nrcs = reflectivity(grazAng,freq); plot(grazAng,pow2db(nrcs)) grid on xlabel('Grazing Angle (deg)') ylabel('NRCS (dB m^2/m^2)') title('Barton Land Model with Flat Land Type')
Create Reflective Land Surface in Radar Scenario
Configure a radarscenario
to simulate a reflective land surface. Add a land surface object to define the physical properties of the scenario surface. The surface is a simple 200by200 meter rectangle. Use the surfaceReflectivityLand
function to create a constantgamma reflectivity model with a gamma value of 10 dB. Use the scenario landSurface
method to add the rectangular land region and the radar reflectivity model to the scenario. Use a surface reference height of 16 meters.
scene = radarScenario(UpdateRate = 0, IsEarthCentered = false); refl = surfaceReflectivityLand(Model = "ConstantGamma", Gamma = 10); srf = landSurface(scene,RadarReflectivity = refl, ... Boundary=[100 100; 100 100],ReferenceHeight = 16)
srf = LandSurface with properties: RadarReflectivity: [1x1 surfaceReflectivityLand] ReflectivityMap: 1 ReferenceHeight: 16 Boundary: [2x2 double] Terrain: []
Surface Reflectivity of GIT Land Model
Create a normalized reflectivity object using the GIT 'Model' and a 'Soil' land type. Obtain the normalized radar crosssection at a frequency of 3 GHz over grazing angles from 20 to 60 degrees. Assume a surface height standard deviation of two meters. Plot the surface reflectivity.
grazAng = 20:60; freq = 10e9; reflectivity = surfaceReflectivityLand(Model="GIT", ... LandType="Soil",SurfaceHeightStandardDeviation=2); nrcs = reflectivity(grazAng,freq); plot(grazAng,pow2db(nrcs)) grid on xlabel('Grazing Angle (deg)') ylabel('NRCS (dB m^2/m^2)') title('GIT Model')
Surface Reflectivity of Billingsley Land Model
Create a normalized reflectivity object using the Billingsley 'Model' and a 'LowReliefRural' land type. Obtain the normalized radar crosssection at a frequency of 3 GHz over depression angles from 0.1 to 3 degrees. Plot the surface reflectivity.
depAng = 0.1:0.1:2; freq = 3e9; reflectivity = surfaceReflectivityLand(Model="Billingsley", ... LandType="LowReliefRural"); nrcs = reflectivity(depAng,freq); plot(depAng,pow2db(nrcs)) grid on xlabel('Depression Angle (deg)') ylabel('NRCS (dB m^2/m^2)') title('Billingsley Model')
Surface Reflectivity of UlabyDobson Land Model
Create a normalized reflectivity object using the UlabyDobson model for a grass land type. Obtain the normalized radar crosssection for both vertical and horizontal polarizations at a frequency of 10 GHz over grazing angles from 1 to 10 degrees. Plot the surface reflectivities.
grazAng = 1:0.1:10; freq = 10e9; reflectivity_v = surfaceReflectivityLand(Model="UlabyDobson", ... LandType="Grass",Polarization="V"); nrcs_v = reflectivity_v(grazAng,freq); reflectivity_h = surfaceReflectivityLand(Model="UlabyDobson", ... LandType="Grass",Polarization="H"); nrcs_h = reflectivity_h(grazAng,freq); plot(grazAng,pow2db(nrcs_v)) hold on plot(grazAng,pow2db(nrcs_h)) grid on legend('Vertical Polarization','Horizonal Polarization') xlabel('Grazing Angle (deg)') ylabel('NRCS (dB m^2/m^2)') title('UlabyDobson Model')
Create Land Surface in Radar Scenario
Create a surface with two hills. Plot the surface on a 200by200 meter grid with grid points one meter apart. Add the surface to a radar scenario. Assume the surface has a radar reflectivity defined by a constant gamma model.
[x,y] = meshgrid(linspace(100,100,201)); ht1 = 40*exp((x.^2 + y.^2)/30^2); ht2 = 100*exp(((x60).^2 + y.^2)/25^2); ht = ht1 + ht2; p = surfc(x(1,:),y(:,1),ht); axis equal axis tight shading interp simTime = 3; scene = radarScenario(UpdateRate = 1, ... IsEarthCentered = false,StopTime = simTime); gammaDB = surfacegamma('Flatland'); refl = surfaceReflectivityLand(Model = 'ConstantGamma',Gamma = gammaDB); srf = landSurface(scene,RadarReflectivity = refl, ... Terrain = ht,Boundary = [100,100;100,100]);
Use surface manager to identify the surface.
scene.SurfaceManager
ans = SurfaceManager with properties: UseOcclusion: 1 Surfaces: [1x1 radar.scenario.LandSurface]
scene.SurfaceManager.Surfaces
ans = LandSurface with properties: RadarReflectivity: [1x1 surfaceReflectivityLand] ReflectivityMap: 1 ReferenceHeight: 0 Boundary: [2x2 double] Terrain: [201x201 double]
Obtain and plot the height of the surface at the point (50,30).
xt = 50; yt = 30; htx = height(srf,[xt,yt])
htx = 21.1046
hold on plot3(xt,yt,htx+5,'ow','MarkerFaceColor','r') xlabel('x') ylabel('y') hold off
Display Reflectivity Matrix for Land
Create a land normalized reflectivity object using the UlabyDobson model and a grass land type. Enable polarization and specify the crosspolarization reflectivity. Obtain the NRCS at a frequency of 10 GHz over grazing angles from 1 to 10 degrees. Plot the reflectivities.
grazAng = 0:0.1:20; freq = 10e9; surf = surfaceReflectivityLand(Model='UlabyDobson', ... LandType='Grass',EnablePolarization=true, ... GrazingAngle=0:.1:90,Frequency=[100,1e6,11e6], ... ReflectivityHV=0.05*sind(0:.1:90)'*[1 1 1], ... ReflectivityVH=0.04*sind(0:.1:90)'*[1 1 1])
surf = surfaceReflectivityLand with properties: EnablePolarization: 1 CrossPolarization: 'Full' Model: 'UlabyDobson' LandType: 'Grass' ReflectivityHV: [901x3 double] ReflectivityVH: [901x3 double] Frequency: [100 1000000 11000000] GrazingAngle: [0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2 2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 2.7000 2.8000 2.9000 3 3.1000 3.2000 3.3000 ... ] Speckle: 'None'
nrcs = surf(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('UlabyDobson Model for Land Surface')
More About
Land Reflectivity Models and Land Types
Model  Land Type  Range of Validity  Settable Properties  




 



 



 



 



 
'Nathanson' – Applicable up to Ka band for low grazing
angle surface radars and medium grazing angle airborne radars for low mountains,
farmland, and wooded areas. See [3]. 


 



 
 Gamma 
Constant Gamma Model
The constantgamma model expresses a simple analytic relationship between the normalized radar crosssection and grazing angle.
σ = 10^{(γ/10)}sin(θ)
γ is defined by the Gamma
property and
θ is the grazing angle input argument graz
given
in degrees. The default value of Gamma
is –20, which is representative
of flat land.
Speckle Model
Speckle is modeled as an uncorrelated, multiplicative factor I = σ∙n, where σ represents the clutter RCS and n are independent identically distributed (IDD) mean noise samples with unity mean. Because speckle is correlated with underlying terrain RCS, it is usually applied to radar intensity. The speckle noise models include Weibull, Rayleigh, and lognormal.
References
[1] Barton, David Knox. Radar Equations for Modern Radar. Artech House, 2013.
[2] Long, Maurice W. Radar Reflectivity of Land and Sea. 3rd ed, Artech House, 2001.
[3] Nathanson, Fred E., et al. Radar Design Principles: Signal Processing and the Environment. 2. ed., Repr, Scitech Publ, 2004.
[4] Reilly, J. P., R. L. McDonald, and G. D. Dockery. "RFEnvironment Models for the ADSAM Program." Report No. A1A97U070, Laurel, MD: Johns Hopkins University Applied Physics Laboratory, August 22, 1997.
[5] Billingsley, J. Barrie. LowAngle Radar Land Clutter: Measurements and Empirical Models. William Andrew Pub. : SciTech Pub. ; Institution of Electrical Engineers, 2002.
[6] Richards, M. A., et al., editors. Principles of Modern Radar. SciTech Pub, 2010.
[7] Morchin, Fred E., J. Patrick Reilly, and Marvin Cohen. Radar Design Principles: Signal Processing and the Environment. 2nd ed. New York: McGrawHill, 1991.
[8] Ulaby, Fawwaz T., and M. Craig Dobson. Handbook of Radar Scattering Statistics for Terrain. Artech House, 1989.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
Introduced in R2022a
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
 América Latina (Español)
 Canada (English)
 United States (English)
Europe
 Belgium (English)
 Denmark (English)
 Deutschland (Deutsch)
 España (Español)
 Finland (English)
 France (Français)
 Ireland (English)
 Italia (Italiano)
 Luxembourg (English)
 Netherlands (English)
 Norway (English)
 Österreich (Deutsch)
 Portugal (English)
 Sweden (English)
 Switzerland
 United Kingdom (English)