Main Content

trackHistoryLogic

Confirm and delete tracks based on recent track history

Description

The trackHistoryLogic object determines if a track should be confirmed or deleted based on the track history. A track should be confirmed if there are at least Mc hits in the recent Nc updates. A track should be deleted if there are at least Md misses in the recent Nd updates.

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

Creation

Description

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

logic = trackHistoryLogic(Name,Value,...) specifies the properties of the track history logic object using one or more Name,Value pair arguments. Any unspecified properties take default values.

example

Properties

expand all

Confirmation threshold, specified as a positive integer scalar or 2-element vector of positive integers. If the logic score is above this threshold, the track is confirmed. ConfirmationThreshold has the form [Mc Nc], where Mc is the number of hits required for confirmation in the recent Nc updates. When specified as a scalar, then Mc and Nc have the same value.

Example: [3 5]

Data Types: single | double

Deletion threshold, specified as a positive integer scalar or 2-element vector of positive integers. If the logic score is above this threshold, the track is deleted. DeletionThreshold has the form [Md Nd], where Md is the number of misses required for deletion in the recent Nd updates. When specified as a scalar, then Md and Nd have the same value.

Example: [5 5]

Data Types: single | double

This property is read-only.

Track history, specified as a logical vector of length N, where N is the larger of the second element in the ConfirmationThreshold and the second element in the DeletionThreshold. The first element is the most recent update. A true value indicates a hit and a false value indicates a miss.

Object Functions

initInitialize track logic with first hit
hitUpdate track logic with subsequent hit
missUpdate track logic with miss
checkConfirmationCheck if track should be confirmed
checkDeletionCheck if track should be deleted
outputGet current state of track logic
resetReset state of track logic
syncSynchronize trackHistoryLogic objects
cloneCreate copy of track logic

Examples

collapse all

Create a history-based logic. Specify confirmation threshold values Mc and Nc as the vector [3 5]. Specify deletion threshold values Md and Nd as the vector [6 7].

historyLogic = trackHistoryLogic('ConfirmationThreshold',[3 5], ...
    'DeletionThreshold',[6 7])
historyLogic = 
  trackHistoryLogic with properties:

    ConfirmationThreshold: [3 5]
        DeletionThreshold: [6 7]
                  History: [0 0 0 0 0 0 0]

Initialize the logic, which records a hit as the first update to the logic.

init(historyLogic)
history = historyLogic.History;
disp(['History: [',num2str(history),'].']);
History: [1  0  0  0  0  0  0].

Update the logic four more times, where only the odd updates register a hit. The confirmation flag is true by the end of the fifth update, because three hits (Mc) are counted in the most recent five updates (Nc).

for i = 2:5
    isOdd = logical(mod(i,2));
    if isOdd
        hit(historyLogic)
    else
        miss(historyLogic)
    end
    
    history = historyLogic.History;
    confFlag = checkConfirmation(historyLogic);
    delFlag = checkDeletion(historyLogic,true,i);
    disp(['History: [',num2str(history),']. Confirmation Flag: ',num2str(confFlag), ...
        '. Deletion Flag: ',num2str(delFlag)']);
end
History: [0  1  0  0  0  0  0]. Confirmation Flag: 0. Deletion Flag: 0
History: [1  0  1  0  0  0  0]. Confirmation Flag: 0. Deletion Flag: 0
History: [0  1  0  1  0  0  0]. Confirmation Flag: 0. Deletion Flag: 0
History: [1  0  1  0  1  0  0]. Confirmation Flag: 1. Deletion Flag: 0

Update the logic with a miss six times. The deletion flag is true by the end of the fifth update, because six misses (Md) are counted in the most recent seven updates (Nd).

for i = 1:6
    miss(historyLogic);
    
    history = historyLogic.History;
    confFlag = checkConfirmation(historyLogic);
    delFlag = checkDeletion(historyLogic);
    disp(['History: [',num2str(history),']. Confirmation Flag: ',num2str(confFlag), ...
        '. Deletion Flag: ',num2str(delFlag)']);
end
History: [0  1  0  1  0  1  0]. Confirmation Flag: 0. Deletion Flag: 0
History: [0  0  1  0  1  0  1]. Confirmation Flag: 0. Deletion Flag: 0
History: [0  0  0  1  0  1  0]. Confirmation Flag: 0. Deletion Flag: 0
History: [0  0  0  0  1  0  1]. Confirmation Flag: 0. Deletion Flag: 0
History: [0  0  0  0  0  1  0]. Confirmation Flag: 0. Deletion Flag: 1
History: [0  0  0  0  0  0  1]. Confirmation Flag: 0. Deletion Flag: 1

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