exponenta event banner

расстояние

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

Описание

пример

d = distance(kalmanFilter,zmatrix) вычисляет расстояние между местоположением обнаруженного объекта и предсказанным местоположением с помощью объекта фильтра Калмана. Это вычисление расстояния учитывает ковариацию предсказанного состояния и технологического шума. 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) = (z Hx) T∑−1 (z Hx) +ln|∑|

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

Представлен в R2012b