# surfaceReflectivityCustom

Normalized reflectivity of custom surface

Since R2022a

## Description

Normalized reflectivity is the radar cross-section of a unit area of a general surface. Multiplying by the total area of the surface or the illuminated area of a surface gives the total radar cross-section. Normalized reflectivity is also referred to as surface σ0 and is a function of frequency and grazing angle.

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.

## Creation

### Syntax

``refl = surfaceReflectivityCustom``
``refl = surfaceReflectivityCustom(Name=Value)``

### Description

example

````refl = surfaceReflectivityCustom` creates a normalized reflectivity System object™ `refl` for a custom surface with default reflectivities. The default custom surface has reflectivity set to 1 m²/m² for grazing angles from 0° – 90° for frequencies from 0 – 1e20 Hz.```

example

````refl = surfaceReflectivityCustom(Name=Value)` also creates a normalized reflectivity object for a surface 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 = surfaceReflectivityCustom(Reflectivity = nrcsTable,Frequency = (0:10)*1e9,GrazingAngle = (0:0.001:2))``` creates a custom normalized reflectivity object from a table of reflectivity values `nrcsTable` for frequencies from 0 – 10 GHz and grazing angles from 0° – 2°.```

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

Enable polarization, specified as `false` or `true`.

• When `true`, the System object enables the specification of cross-polarization components to help form a complete polarimetric normalized radar cross-section (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 σ0HV and σ0VH are the cross-polarization components specified by the `ReflectivityHV` and `ReflectivityVH` properties, respectively. The remaining components, σ0HH and σ0VV, are determined by the particular model set by the `Model` property.

• When `false`, the System object lets you specify the mean polarization using the `Polarization` property based on the selected `Model`.

Cross-polarization components, specified as `'Full'` or `'Symmetric'`.

• When the `CrossPolarization` property is set to `'Full'`, the `ReflectivityHH`, `ReflectivityVV`, `ReflectivityHV` and `ReflectivityVH` properties are applicable, and unique speckle values are generated for all reflectivity components (SHH, SHV, SVH, and SVV).

• When the `CrossPolarization` property is set to `'Symmetric'`, reciprocity applies for monostatic geometry and the cross-polarization terms are equal, SHV = SVH. When this input method is selected, the `ReflectivityHV` property is available, but the `ReflectivityVH` property is not available. The `ReflectivityVH` property is assumed to be equal to the `ReflectivityHV` property. The speckle values corresponding to the HV and VH components are equal.

#### Dependencies

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

Data Types: `char` | `string`

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

For more than one surface, you can specify an Q-by-R-by-P real-valued array where P corresponds to the surface type index.

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

#### Dependencies

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

Data Types: `double`

Normalized radar cross section (NRCS), for the polarized SHH component, Specified as a Q-by-R real-valued matrix or Q-by-R-by-P real-valued array. The subscript HH represents horizontal transmission and horizontal 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. Units are m²/m².

For more than one surface, you can specify an Q-by-R-by-P real-valued array where P corresponds to the surface type index.

The full, real reflectivity matrix in this case is given by `Reflectivity` = [`ReflectivityHH`, `ReflectivityHV`; `ReflectivityVH`, `ReflectivityVV`];

#### Dependencies

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

Data Types: `double`

Normalized radar cross section (NRCS), for the polarized SVV component, Specified as a Q-by-R real-valued matrix or Q-by-R-by-P real-valued array. The subscript VV represents vertical 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. Units are m²/m².

For more than one surface, you can specify an Q-by-R-by-P real-valued array where P corresponds to the surface type index.

The full, real reflectivity matrix in this case is given by `Reflectivity` = [`ReflectivityHH`, `ReflectivityHV`; `ReflectivityVH`, `ReflectivityVV`];

#### Dependencies

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

Data Types: `double`

Normalized radar cross section (NRCS), for the polarized SHV component, specified as a Q-by-R real-valued matrix or Q-by-R-by-P real-valued array. The subscript 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. Units are m²/m².

For more than one surface, you can specify an Q-by-R-by-P real-valued array where P corresponds to the surface type index.

The full, real reflectivity matrix in this case is given by `Reflectivity` = [`ReflectivityHH`, `ReflectivityHV`; `ReflectivityVH`, `ReflectivityVV`];

#### Dependencies

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

Data Types: `double`

Normalized radar cross section (NRCS), for the polarized SVH component, Specified as a Q-by-R real-valued matrix or Q-by-R-by-P real-valued array. The subscript VH represents vertical transmission and horizontal 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. Units are m²/m².

Valid frequencies for the normalized reflectivity, specified as a length-R row-vector of real values. R corresponds to the number of rows in the `Reflectivity` property. Frequency units are in Hz.

Data Types: `double`

Grazing angles, specified as a length-Q row-vector of real values. Q corresponds to the number of columns in the `Reflectivity` property. Units are in degrees.

Data Types: `double`

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 identically-distributed unity mean noise statistical distribution.

• `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 Rayleigh distribution.

Data Types: `char` | `string`

Mean value of lognormal-distributed speckle, specified as a scalar.

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

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

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

#### Dependencies

To enable this property, set the `Speckle` property to `'Weibull'`.

Data Types: `double`

## Usage

### Syntax

``nrcs = refl(graz,freq)``
``nrcs = refl(graz,freq,idx)``
``[nrcs,speck] = relf(___)``

### 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 type index `idx` of the surface patch. To enable this syntax, specify the `Reflectivity` property as an M-by-N-by-P array, where M corresponds to the number of angles specified in the `GrazingAngle` property, N corresponds to the number of frequencies in the `Frequency` property, and P corresponds to the surface type index. MATLAB® array. ```
````[nrcs,speck] = relf(___)` also returns speckle values `speck`.```

### Input Arguments

expand all

Grazing angle of the surface relative to the radar, specified as a scalar or a M-length row vector of nonnegative values. The angles range from 0° to 90°. Units are in degrees.

Example: `10`

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

Example: `7*10e9`

Surface type index, specified as a scalar or length-P vector of positive values.

Data Types: `double`

### 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

`${\sigma }^{0}=\left[\begin{array}{cc}{\sigma }_{HH}^{0}& {\sigma }_{HV}^{0}\\ {\sigma }_{VH}^{0}& {\sigma }_{VV}^{0}\end{array}\right]$`

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.

#### Dependencies

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:

`release(obj)`

expand all

 `step` Run System object algorithm `release` Release resources and allow changes to System object property values and input characteristics `reset` Reset 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```

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')```