distance

Доверительное значение измерения

Описание

пример

d = distance(kalmanFilter,zmatrix) вычисляет расстояние между местоположением обнаруженного объекта и предсказанным местоположением объектом фильтра Калмана. Этот расчет расстояния учитывает ковариацию предсказанного состояния и шум процесса. The distance функцию можно вызвать только после predict функция.

Используйте distance функция для поиска наилучших соответствий. Значения вычисленного расстояния описывают, как набор измерений соответствует фильтру Калмана. Таким образом, можно выбрать измерение, которое лучше всего подходит для фильтра. Эта стратегия может использоваться для согласования обнаружений объектов с треками объектов в задаче отслеживания мультиобъектов. Этот расчет расстояния учитывает ковариацию предсказанного состояния и шум процесса.

Примеры

свернуть все

Отслеживайте местоположение физического объекта, движущееся в одном направлении.

Сгенерируйте синтетические данные, которые имитируют 1-D местоположение физического объекта, движущегося с постоянной скоростью.

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

Симулируйте отсутствующие обнаружения, задав для некоторых элементов пустое значение.

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

Создайте рисунок, чтобы показать местоположение обнаружений и результаты использования фильтра Калмана для отслеживания.

figure;
hold on;
ylabel('Location');
ylim([0,50]); 
xlabel('Time');
xlim([0,length(detectedLocations)]);

Figure contains an axes. The axes is empty.

Создайте 1-D фильтр Калмана с постоянной скоростью, когда физический объект будет впервые обнаружен. Предсказать местоположение объекта на основе предыдущих состояний. Если объект обнаружен в текущем временном шаге, используйте его расположение, чтобы исправить состояния.

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]; 
     end 
   else
     trackedLocation = predict(kalman);
     if ~isempty(location) 
       plot(idx, location,'k+');
      d = distance(kalman,location); 
       title(sprintf('Distance:%f', d));
       trackedLocation = correct(kalman,location); 
     else 
       title('Missing detection'); 
     end 
     pause(0.2);
     plot(idx,trackedLocation,'ro'); 
   end 
 end 
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.

Используйте фильтр Калмана, чтобы удалить шум из случайного сигнала, поврежденного нулевым Гауссовым шумом.

Синтезируйте случайный сигнал, который имеет значение 1 и поврежден нулевым Гауссовым шумом со стандартным отклонением 0,1.

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

Снимите шум с сигнала с помощью фильтра Калмана. Ожидается, что состояние будет постоянным, и измерение будет таким же, как состояние.

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
 predict(obj);
 z_corr(idx) = correct(obj,z(idx));
end

Постройте график результатов.

figure, plot(x * ones(1,len),'g-'); 
hold on;
plot(1:len,z,'b+',1:len,z_corr,'r-');
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.

Входные параметры

свернуть все

Объект фильтра Калмана.

Расположение обнаруженного объекта, заданное как матрица N -столбец Каждая матрица строк содержит вектор измерения. distance функция возвращает вектор-строку, где каждый элемент расстояния соответствует входу измерения.

Подробнее о

свернуть все

Уравнение расстояния

d(z)=(zHx)T1(zHx)+ln||

Где Σ=HPHT+R и |Σ| является определяющим Σ. Затем можно найти лучшие соответствия, исследуя возвращенные значения расстояния.

Введенный в R2012b