Main Content

trackScoreLogic

Confirm and delete tracks based on track score

Description

The trackScoreLogic object determines if a track should be confirmed or deleted based on the track score (also known as the log likelihood of a track). A track should be confirmed if the current track score is greater than or equal to the confirmation threshold. A track should be deleted if the current track score has decreased relative to the maximum track score by the deletion threshold.

The confirmation and deletion decisions contribute to the track management by a trackerGNN or trackerTOMHT.

Creation

Description

logic = trackScoreLogic creates a trackScoreLogic object with default confirmation and deletion thresholds.

example

logic = trackScoreLogic(Name,Value,...) specifies the ConfirmationThreshold and DeletionThreshold properties of the track score logic object using one or more Name,Value pair arguments. Any unspecified properties take default values.

Properties

expand all

Confirmation threshold, specified as a positive scalar. If the logic score is above this threshold, then the track is confirmed.

Data Types: single | double

Deletion threshold, specified as a negative scalar. If the value of Score - MaxScore is more negative than the deletion threshold, then the track is deleted.

Data Types: single | double

This property is read-only.

Current track logic score, specified as a numeric scalar.

This property is read-only.

Maximum track logic score, specified as a numeric scalar.

Object Functions

initInitialize track logic with first hit
hitUpdate track logic with subsequent hit
missUpdate track logic with miss
syncSynchronize scores of trackScoreLogic objects
mergeScoresUpdate track score by track merging
checkConfirmationCheck if track should be confirmed
checkDeletionCheck if track should be deleted
outputGet current state of track logic
resetReset state of track logic
cloneCreate copy of track logic

Examples

collapse all

Create a score-based logic. Specify the confirmation threshold as 20 and the deletion threshold as -5.

scoreLogic = trackScoreLogic('ConfirmationThreshold',20,'DeletionThreshold',-5)
scoreLogic = 
  trackScoreLogic with properties:

    ConfirmationThreshold: 20
        DeletionThreshold: -5
                    Score: 0
                 MaxScore: 0

Specify the probability of detection (pd), the probability of false alarm (pfa), the volume of a sensor detection bin (volume), and the new target rate in a unit volume (beta). Initialize the logic using these parameters. The first update to the logic is a hit.

pd = 0.9;     % Probability of detection
pfa = 1e-6;   % Probability of false alarm
volume = 1;   % Volume of a sensor detection bin
beta = 0.1;   % New target rate in a unit volume

init(scoreLogic,volume,beta,pd,pfa);

disp(['Score and MaxScore: ', num2str(output(scoreLogic))])
Score and MaxScore: 11.4076      11.4076

Update the logic four more times, where only the odd updates register a hit. The score increases with each hit and decreases with each miss. The confirmation flag is true whenever the current score is larger than 20.

for i = 2:5
    
    isOdd = logical(mod(i,2));
    if isOdd
        likelihood = 0.05 + 0.05*rand(1);
        hit(scoreLogic,volume,likelihood)
    else
        miss(scoreLogic)
    end
    
    confFlag = checkConfirmation(scoreLogic);
    delFlag = checkDeletion(scoreLogic);
    disp(['Score and MaxScore: ', num2str(output(scoreLogic)), ...
      '.  Confirmation Flag: ',num2str(confFlag), ...
       '. Deletion Flag: ',num2str(delFlag)'])
end
Score and MaxScore: 9.10498      11.4076.  Confirmation Flag: 0. Deletion Flag: 0
Score and MaxScore: 20.4153      20.4153.  Confirmation Flag: 1. Deletion Flag: 0
Score and MaxScore: 18.1127      20.4153.  Confirmation Flag: 0. Deletion Flag: 0
Score and MaxScore: 29.4721      29.4721.  Confirmation Flag: 1. Deletion Flag: 0

Update the logic with a miss three times. The deletion flag is true by the end of the third miss, because the difference between the current score and maximum score is greater than five.

for i = 1:3
    miss(scoreLogic)
    
    confFlag = checkConfirmation(scoreLogic);
    delFlag = checkDeletion(scoreLogic);
    disp(['Score and MaxScore: ', num2str(output(scoreLogic)), ...
      '.  Confirmation Flag: ',num2str(confFlag), ...
      '.  Deletion Flag: ',num2str(delFlag)])
end
Score and MaxScore: 27.1695      29.4721.  Confirmation Flag: 1.  Deletion Flag: 0
Score and MaxScore: 24.8669      29.4721.  Confirmation Flag: 1.  Deletion Flag: 0
Score and MaxScore: 22.5643      29.4721.  Confirmation Flag: 1.  Deletion Flag: 1

Tips

  • If you specify either ConfirmationThreshold or DeletionThreshold in single precision, then the trackScoreLogic object converts the other property to single precision and performs computations in single precision.

References

[1] Blackman, S., and R. Popoli. Design and Analysis of Modern Tracking Systems. Boston, MA: Artech House, 1999.

Extended Capabilities

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

Version History

Introduced in R2018b