Main Content


Confidence value of measurement



d = distance(kalmanFilter,zmatrix) computes a distance between the location of a detected object and the predicted location by the Kalman filter object. This distance computation takes into account the covariance of the predicted state and the process noise. The distance function can only be called after the predict function.

Use the distance function to find the best matches. The computed distance values describe how a set of measurements matches the Kalman filter. You can thus select a measurement that best fits the filter. This strategy can be used for matching object detections against object tracks in a multiobject tracking problem. This distance computation takes into account the covariance of the predicted state and the process noise.


collapse all

Track the location of a physical object moving in one direction.

Generate synthetic data which mimics the 1-D location of a physical object moving at a constant speed.

detectedLocations = num2cell(2*randn(1,40) + (1:40));

Simulate missing detections by setting some elements to empty.

detectedLocations{1} = [];
  for idx = 16: 25 
      detectedLocations{idx} = []; 

Create a figure to show the location of detections and the results of using the Kalman filter for tracking.

hold on;

Figure contains an axes. The axes is empty.

Create a 1-D, constant speed Kalman filter when the physical object is first detected. Predict the location of the object based on previous states. If the object is detected at the current time step, use its location to correct the states.

kalman = []; 
for idx = 1: length(detectedLocations) 
   location = detectedLocations{idx}; 
   if isempty(kalman)
     if ~isempty(location) 
       stateModel = [1 1;0 1]; 
       measurementModel = [1 0]; 
       kalman = vision.KalmanFilter(stateModel,measurementModel,'ProcessNoise',1e-4,'MeasurementNoise',4);
      kalman.State = [location, 0]; 
     trackedLocation = predict(kalman);
     if ~isempty(location) 
       plot(idx, location,'k+');
      d = distance(kalman,location); 
       title(sprintf('Distance:%f', d));
       trackedLocation = correct(kalman,location); 
       title('Missing detection'); 
legend('Detected locations','Predicted/corrected locations');

Figure contains an axes. The axes with title Distance:3.126145 contains 66 objects of type line. These objects represent Detected locations, Predicted/corrected locations.

Use Kalman filter to remove noise from a random signal corrupted by a zero-mean Gaussian noise.

Synthesize a random signal that has value of 1 and is corrupted by a zero-mean Gaussian noise with standard deviation of 0.1.

x = 1;
len = 100;
z = x + 0.1 * randn(1,len);

Remove noise from the signal by using a Kalman filter. The state is expected to be constant, and the measurement is the same as state.

stateTransitionModel = 1;
measurementModel = 1;
obj = vision.KalmanFilter(stateTransitionModel,measurementModel,'StateCovariance',1,'ProcessNoise',1e-5,'MeasurementNoise',1e-2);

z_corr = zeros(1,len);
for idx = 1: len
 z_corr(idx) = correct(obj,z(idx));

Plot results.

figure, plot(x * ones(1,len),'g-'); 
hold on;
legend('Original signal','Noisy signal','Filtered signal');

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Original signal, Noisy signal, Filtered signal.

Input Arguments

collapse all

Kalman filter object.

Location of a detected object, specified as an N-column matrix. Each row matrix contains a measurement vector. The distance function returns a row vector where each distance element corresponds to the measurement input.

More About

collapse all

Distance Equation


Where Σ=HPHT+R and |Σ| is the determinant of Σ. You can then find the best matches by examining the returned distance values.

Introduced in R2012b