メインコンテンツ

surfaceReflectivityCustom

Normalized reflectivity of custom surface

Since R2022a

Description

This System object™ creates a normalized reflectivity object for custom surfaces. Use surfaceReflectivityCustom to generate normalized radar cross section (NRCS), and optionally speckle, as a function of frequency and grazing angle for custom 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 surfaceReflectityLand object to a landSurface or seaSurface in radarScenario using SurfaceManager. See Radar Surface Clutter Simulation for more information.

To compute the normalized reflectivity:

  1. Create the surfaceReflectivityCustom 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 = surfaceReflectivityCustom creates a normalized reflectivity System object, refl, for a custom surface with default reflectivities. Use refl to generate normalized radar cross section as a function of frequency and grazing angle. The default custom surface has reflectivities set to 1 m²/m² for grazing angles from 0° – 90° and frequencies from 0 – 1e20 Hz.

example

refl = surfaceReflectivityCustom(PropertyName=Value) also creates a normalized reflectivity object for custom surfaces with each specified PropertyName set to the corresponding Value. For example, all normalized polarimetric reflectivity components can be specified when EnablePolarization is set to true and CrossPolarization is set to "Full". 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.

Normalized radar cross section (NRCS) or mean reflectivity values, specified as an Q-by-R real-valued matrix, where Q corresponds to the number of angles in GrazingAngle and R corresponds to the number of frequencies in the Frequency property.

For more than one surface, you can specify an Q-by-R-by-P real-valued array, where P is the number of surfaces.

Units are dimensionless but often expressed in m²/m².

Dependencies

To enable this property, set the EnablePolarization property to false.

Data Types: double

Frequencies associated with Reflectivity or 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 reflectivities are valid. Frequency units are in Hz.

Example: [1e6,10e6]

Data Types: double

Grazing angles associated with Reflectivity or polarimetric reflectivity components, specified as a length-Q row vector, where Q is no less than two. When Q is a 2-element vector, it defines the minimum and maximum Grazing Angle over which the reflectivities are valid. Units are in degrees.

Example: [45:60]

Data Types: double

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

When set to true, EnablePolarization enables the CrossPolarization property. Specifying the CrossPolarization property enables additional polarization-related 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, ReflectivityHH, ReflectivityVV.

  • CrossPolarization set to "Symmetric" enables ReflectivityHV, ReflectivityHH, and ReflectivityVV.

When set to false, EnablePolarization enables:

Enabled PropertyEnabled Property
Reflectivity – Reflectivity values

Normalized radar cross section (NRCS), or reflectivity values.

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

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

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 componentVH is the cross-polarized reflectivity component that represents vertical transmission and horizontal reception.

ReflectivityHHHH co-polarized reflectivity component

HH is the co-polarized reflectivity component that represents horizontal transmission and horizontal reception.

ReflectivityVVVV co-polarized reflectivity component

VV is the co-polarized reflectivity component that represents vertical transmission and vertical reception.

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

Enabled PropertyDescriptionSpeckle

ReflectivityHVHV cross-polarized reflectivity component

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.

  • 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.

ReflectivityHHHH co-polarized reflectivity component

HH is the co-polarized reflectivity component that represents horizontal transmission and horizontal reception.

ReflectivityVVVV co-polarized reflectivity component

VV is the co-polarized reflectivity component that represents vertical transmission and horizontal vertical.

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.

For more than one surface, you can specify an Q-by-R-by-P array, where P is the number of surfaces.

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.

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.

For more than one surface, you can specify an Q-by-R-by-P array, where P is the number of surfaces.

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 CrossPolarization property to "Full".

Data Types: double

Specify normalized radar cross section (NRCS) or reflectivity values, for the co-polarized HH reflectivity component. HH represents horizontal 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.

For more than one surface, you can specify an Q-by-R-by-P array, where P is the number of surfaces.

The returned nrcs for co-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 dimensional but commonly expressed as m²/m².

Dependencies

To enable this property, set the EnablePolarization property to true.

Data Types: double

Specify normalized radar cross section (NRCS) or reflectivity values, for the co-polarized VV reflectivity component. VV represents vertical 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.

For more than one surface, you can specify an Q-by-R-by-P array, where P is the number of surfaces.

The returned nrcs for co-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 dimensional but commonly expressed as m²/m².

Dependencies

To enable this property, set the EnablePolarization property to true.

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. When either graz or freq lies outside of the valid region defined by the GrazingAngle and Frequency properties, the nearest value of the normalized reflectivity is returned.

nrcs = refl(graz,freq,idx) also specifies the surface indices, idx, of the custom surfaces. To enable this syntax, specify the Reflectivity property or each polarimetric reflectivity component as an Q-by-R-by-P array, where P is the number of surfaces.

[nrcs,speck] = relf(___) also returns speckle values 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. 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

Surface index, specified as a scalar or length-N vector of positive values. N must be less than or equal to P, the number of surfaces.

Dependencies

To enable this argument, specify the Reflectivity property or each polarimetric reflectivity component as an Q-by-R-by-P array, where P is the number of surfaces.

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 and input arguments:

  • For the non-polarimetric reflectivity case (EnablePolarization is false) and when idx is a scalar, nrcs is returned as a real-valued Q-by-R array, where Q is the length of graz and R is the length of freq.

  • For the non-polarimetric reflectivity case (EnablePolarization is false) and when idx is a length-N vector, nrcs is returned as a real-valued N-by-Q-by-R array, where Q is the length of graz and R is the length of freq.

  • For the polarimetric reflectivity case (EnablePolarization is true) and when idx is a scalar, 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 are the co-polarized components specified by ReflectivityHH and ReflectivityVV.

  • For the polarimetric reflectivity case (EnablePolarization is true) and when idx is a length-N vector, nrcs is returned as a real-valued 2-b-2-by-N-by-Q-by-R array, where Q is the length of graz and R is the length of freq. For each value of N, Q, and R, nrcs forms a polarimetric normalized radar cross section (NRCS) reflectivity matrix as described for the polarimetric reflectivity case when idx is a scalar.

The returned normalized reflectivity for polarization components σ0HV, σ0VH, σ0HH, and σ0VV is calculated using nearest neighbor interpolation at a given grazing angle and frequency. To avoid interpolation errors, the normalized reflectivity values in the ReflectivityHV, ReflectivityVH, ReflectivityHH, and ReflectivityVV 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

Construct a table of normalized reflectivities of a land surface using the surfacegamma function. The table covers frequencies from 1 - 10 GHz and grazing angles from 0 - 7 degrees. Use the surfaceReflectivityCustom System object™ directly.

freqs = (1:10)*1e9;
angs = 0:.1:7;
gammaFarm   = db2pow(surfacegamma('farmland',freqs));
gammaHills  = db2pow(surfacegamma('wooded hill',freqs));

Create a constant gamma model by multiplying the reflectivity coefficients by the sine of the grazing angle. Add Rayleigh speckle.

nrcsTbl   = zeros(numel(angs),numel(freqs),2);
nrcsTbl(:,:,1) = gammaFarm.*sind(angs).';  % Farmland
nrcsTbl(:,:,2) = gammaHills.*sind(angs).'; % Wooded hills
refl = surfaceReflectivityCustom(Reflectivity = nrcsTbl, Frequency = freqs, ...
    GrazingAngle = angs, Speckle = 'Rayleigh');

Find the normalized reflectivity of farm land (in dB).

nrcs = pow2db(refl(6.3, 2.5e9, 1));
disp(nrcs)
  -27.2110

Find the normalized reflectivity of wooded hills (in dB).

nrcs = pow2db(refl(6.3, 2.5e9, 2));
disp(nrcs)
  -22.2110

Create a land reflectivity model using the surfaceReflectivityCustom object and radarScenario.

First create a two hill scenario.

[x,y] = meshgrid(linspace(-100,100,201));
ht1 = 40*exp(-(x.^2 + y.^2)/30^2);
ht2 = 100*exp(-((x-60).^2 + y.^2)/25^2);
ht = ht1 + ht2;
p = surfc(x(1,:),y(:,1),ht);
shading interp

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Construct a table of normalized reflectivities of a land surface using the surfacegamma function. The table covers frequencies from 1 - 10 GHz and grazing angles from 0 - 7 degrees.

freqs = (1:10)*1e9;
angs = 0:.1:7;
gammaFarm   = db2pow(surfacegamma('farmland',freqs));
gammaHills  = db2pow(surfacegamma('wooded hill',freqs));

Create a constant gamma model by multiplying the reflectivity coefficients by the sine of the grazing angle. Add Rayleigh speckle.

nrcsTbl   = zeros(numel(angs),numel(freqs),2);
nrcsTbl(:,:,1) = gammaFarm.*sind(angs).';  % Farmland
nrcsTbl(:,:,2) = gammaHills.*sind(angs).'; % Wooded hills
simTime = 3;
scene = radarScenario(UpdateRate = 1, ...
    IsEarthCentered = false,StopTime = simTime);
refl = surfaceReflectivityCustom(Reflectivity = nrcsTbl, Frequency = freqs, ...
    GrazingAngle = angs, Speckle = 'Rayleigh');
srf = landSurface(scene,RadarReflectivity = refl, ...
    Terrain = ht,Boundary = [-100,100;-100,100]);

Find the normalized reflectivity of farm land (in dB).

nrcs = pow2db(refl(6.3, 2.5e9, 1));
disp(nrcs)
  -27.2110

Find the normalized reflectivity of wooded hills (in dB).

nrcs = pow2db(refl(6.3, 2.5e9, 2));
disp(nrcs)
  -22.2110

Construct a table of normalized polarized reflectivities of a land surface using the surfacegamma function. The table covers frequencies from 1 - 10 GHz and grazing angles from 0 - 90 degrees. Create a constant gamma model by multiplying the reflectivity coefficients by the sine of the grazing angle. Add Rayleigh speckle. Define the reflectivities for the VV, HV, and VH components as proportional to the HH component.

freqs = (1:10)*1e9;
angs = 0:.1:90;
gamma = db2pow(surfacegamma('farmland',freqs));
xhh = sind(angs)'*gamma;
xvv = 0.5*sind(angs)'*gamma;
xhv = 0.1*sind(angs)'*gamma;
xvh = 0.12*sind(angs)'*gamma;

Create the surfaceReflectivityCustom System object™.

refl = surfaceReflectivityCustom(Frequency=freqs, ...
    GrazingAngle=angs,Speckle='Rayleigh',EnablePolarization=true, ...
    CrossPolarization='Full',ReflectivityHH=xhh,ReflectivityVV=xvv, ...
    ReflectivityHV=xhv,ReflectivityVH=xvh);

Plot the normalized reflectivity of farm land for all grazing angles..

nrcs = refl(angs,3e9);
plot(angs,pow2db(squeeze(nrcs(1,1,:))), ...
    angs,pow2db(squeeze(nrcs(1,2,:))), ...
    angs,pow2db(squeeze(nrcs(2,1,:))), ...
    angs,pow2db(squeeze(nrcs(2,2,:))))
grid on
xlabel('Grazing angle (deg)')
ylabel('NRCS (dB m^2/m^2)')
title('Polarized Surface Reflectivity')

Figure contains an axes object. The axes object with title Polarized Surface Reflectivity, xlabel Grazing angle (deg), ylabel NRCS (dB m Squared baseline /m Squared baseline ) contains 4 objects of type line.

More About

expand all

Extended Capabilities

expand all

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

Version History

Introduced in R2022a