Main Content

clutterGenerator

Add clutter generator for radar

Since R2022a

    Description

    example

    genclutter = clutterGenerator(scenario,radar,Name=Value) adds a ClutterGenerator object genclutter for the radar to the radarScenario scenario.

    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:
    
        ScattererDistribution: "Uniform"
                   Resolution: 20
                      Regions: [1x2 radar.scenario.RingClutterRegion]
                      UseBeam: 1
                 UseShadowing: 1
                   RangeLimit: 20000
                        Radar: [1x1 radarDataGenerator]
                   SeedSource: "Auto"
    
    

    Input Arguments

    collapse all

    Radar scenario, specified as a radarScenario object.

    Radar, specified as a radarDataGenerator or radarTransceiver object.

    Name-Value Arguments

    Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

    Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

    Example: Resolution = 34

    Method for controlling clutter distribution, specified as 'Uniform' or 'RangeDopplerCells'.

    • When the ScattererDistribution property is set to 'Uniform', use the Resolution property to determine the nominal spacing of randomly-generated clutter scatterers.

    • When the ScattererDistribution property is set to 'RangeDopplerCells', exactly one clutter scatterer is used per range-Doppler resolution cell. This option is available only for the radarTransceiver radar model. Use the NumRepetitions property of the radarTransceiver to specify the number of Doppler bins. Only non-height-mapped surfaces (surface objects with no associated terrain or spectral model) can be specified with this option. This mode results in better performance.

    Data Types: char | string

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

    Dependencies

    To enable this property, set the ScattererDistribution property to 'Uniform'.

    Data Types: double

    Range limit for clutter generation, specified as a positive scalar. This property specifies the maximum ground range for which clutter is generated. 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, clutter in the mainlobe is automatically included. Use the ringClutterRegion object function of the ClutterGenerator to create a custom region.

    When true, the beam footprint is automatically used for clutter generation, in addition to any static regions, such as a RingClutterRegion. Then clutter is generated in the intersection of the radar beam and the scenario surface.

    • If a radarTransceiver uses a phased.ULA as the transmit antenna sensor, a fan-shaped beam is assumed and a 3 dB beamwidth measurement is taken in the plane perpendicular to the array axis. If any other array type is used, a conical beam shape is assumed and a 3 dB beamwidth measurement is taken in both the azimuth and elevation directions.

    • If a radarDataGenerator is used, the EffectiveFieldOfView property determines the width of the beam in the azimuth and elevation directions.

    In all cases, the beamwidths must be strictly less than 180° for a beam footprint to be used for clutter generation.

    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.

    Source of seed used for random number generation, specified as 'Auto' or 'Property'. If 'Auto', the global random number generator is used. If 'Property', a local random number generator is used with the seed specified by the Seed property.

    Data Types: char | string

    Seed used for random number generation, specified as a scalar. The seed is local to this random generator.

    Dependencies

    To enable this property, set the SeedSource property to 'Property'.

    Data Types: double

    Output Arguments

    collapse all

    Clutter generator, returned as a ClutterGenerator object.

    Version History

    Introduced in R2022a