Main Content

ClutterGenerator

Clutter generator object

Description

The ClutterGenerator object specifies clutter properties and regions that control and manage radar clutter for sensors in a radarScenario. Sensors types include radarDataGenerator and radarTransceiver objects.

Creation

Create a clutter generator using the clutterGenerator object function. Then use the getClutterGenerator object function to obtain information about clutter generators for radar scenarios and radars in the scenarios. Use the ringClutterRegion object function to create clutter regions.

Properties

expand all

Nominal resolution of clutter patches, specified as a positive scalar. The nominal value is the expected surface resolution of the radar system. Units are in meters.

Data Types: double

Range limit of clutter generation, specified as a positive scalar. Clutter generation is limited to this range when the clutter region is unbounded. Units are in meters.

Data Types: double

Enable the use of the beam footprint as the clutter region, specified as true or false. When true, the mainlobe clutter return is automatically included. Use the ringClutterRegion object function of the ClutterGenerator to create a custom region.

Data Types: logical

Enable use of surface self-occlusion when generating clutter, specified as true or false. Surface self-occlusion is referred to as shadowing.

Data Types: logical

This property is read-only.

Region of the scenario in which is generated, returned as a RingClutterRegion. There can be multiple clutter regions.

This property is read-only.

Radar objects for which clutter is generated, returned as a radarDataGenerator or a radarTransceiver object. There can be multiple radar objects.

Object Functions

getClutterGeneratorObtain clutter generator belonging to a radar
ringClutterRegionRing clutter region

Examples

collapse all

Generate clutter from a surface having two clutter regions. Start by creating a radarDataGenerator. Use a radar frequency of 1 GHz, a 100 meter range resolution, a 5 kHz pulse repetition frequency (PRF), and 128 pulses. The beam is symmetric with a 4 degree two-sided beamwidth in azimuth and elevation.

fc = 1e9;
rangeRes = 100;
prf = 5e3;
numPulses = 128;
beamwidth = 4;

Use the PRF and number of pulses to calculate the nominal Doppler and range-rate resolution. The radar will update once each coherent processing interval (CPI).

dopRes = prf/numPulses;
lambda = freq2wavelen(fc);
rangeRateRes = dop2speed(dopRes,lambda)/2;
cpiTime = numPulses/prf;

rdr = radarDataGenerator(1,'No scanning','UpdateRate',1/cpiTime, ...
    'DetectionMode','Monostatic','TargetReportFormat','Detections', ...
    'DetectionCoordinates','Scenario', ...
    'HasINS',true,'HasElevation',true,'HasFalseAlarms',false, ...
    'HasNoise',false,'HasRangeRate',true, ...
    'HasRangeAmbiguities',true,'HasRangeRateAmbiguities',true, ...
    'CenterFrequency',fc,'FieldOfView',beamwidth, ...
    'AzimuthResolution',beamwidth,'ElevationResolution', ...
    beamwidth,'RangeResolution', ...
    rangeRes,'RangeRateResolution',rangeRateRes, ...
    'ReferenceRange',20e3,'ReferenceRCS',0, ...
    'DetectionProbability',0.9);

Create a scenario using the radarScenario object, setting the update rate to zero so that the update interval is derived from sensors in the scene.

scenario = radarScenario('UpdateRate',0,'IsEarthCentered',false);

Now create the scenario surface. Choose a constant-gamma reflectivity model with a gamma value appropriate for flatland. This gamma value can be found using the surfacegamma function. Using this value, create a surfaceReflectivityLand object to add to a LandSurface using the RadarReflectivity property.

gammaDB = surfacegamma('Flatland');
refl = surfaceReflectivityLand('Model','ConstantGamma', ...
    'Gamma',gammaDB);
landSurface(scenario,'RadarReflectivity',refl);

Add two clutter regions to the scenario. Use the clutterGenerator object function to construct a clutter generator and enable clutter generation for the radar. The Resolution property defines the nominal spacing of clutter patches. Set this to be 1/5th of the range resolution to get multiple clutter patches per range gate. Set the range limit to 20 km. UseBeam indicates if clutter generation should be performed automatically for the mainlobe of the antenna pattern.

cluttergen = clutterGenerator(scenario,rdr,'Resolution', ...
    rangeRes/5,'RangeLimit',20e3,'UseBeam',true);
rgn1 = ringClutterRegion(cluttergen,1000,10000,30,45);
rgn2 = ringClutterRegion(cluttergen,1000,10000,30,105);

The getClutterGenerator function displays the two ring-shaped clutter regions belonging to the scenario.

getClutterGenerator(scenario,rdr)
ans = 
  ClutterGenerator with properties:

      Resolution: 20
      RangeLimit: 20000
         UseBeam: 1
    UseShadowing: 1
         Regions: [1×2 radar.scenario.RingClutterRegion]
           Radar: [1×1 radarDataGenerator]

Version History

Introduced in R2022a