主要内容

距离

测量置信值

描述

例子

D =距离(kalmanFilterzmatrix计算被检测对象的位置与卡尔曼滤波对象预测位置之间的距离。这种距离计算考虑了预测状态和过程噪声的协方差。的距离函数只能在预测函数。

使用距离函数来查找最佳匹配。计算出的距离值描述了一组测量值如何与卡尔曼滤波相匹配。因此,您可以选择最适合过滤器的测量值。在多目标跟踪问题中,该策略可用于匹配目标检测与目标跟踪。这种距离计算考虑了预测状态和过程噪声的协方差。

例子

全部折叠

跟踪在一个方向上移动的物理物体的位置。

生成合成数据,模拟以恒定速度移动的物理对象的一维位置。

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

通过将一些元素设置为空来模拟缺失检测。

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

创建一个图来显示检测的位置和使用卡尔曼滤波进行跟踪的结果。

图;持有;ylabel (“位置”);ylim ([0, 50]);包含(“时间”);xlim([0,长度(detectedLocations)]);

图中包含一个axes对象。axes对象为空。

当第一次检测到物理对象时,创建一个1-D,恒速卡尔曼滤波器。根据之前的状态预测对象的位置。如果在当前时间步中检测到对象,则使用其位置来纠正状态。

Kalman = [];idx = 1: length(detectedLocations) location = detectedLocations{idx};如果isempty(卡尔曼滤波)如果~isempty(location) stateModel = [1 1;0 1];measurementModel = [1 0];卡尔曼=视觉。KalmanFilter (stateModel measurementModel,“ProcessNoise”1的军医,“MeasurementNoise”4);卡尔曼。State = [location, 0];结束其他的trackkedlocation = predict(kalman);如果~isempty(location) plot(idx, location,k +的);D =距离(卡尔曼,位置);标题(sprintf (“距离:% f ', d));trackedLocation =正确(卡尔曼,位置);其他的标题(缺失的检测);结束暂停(0.2);情节(idx trackedLocation,“罗”);结束结束传奇(检测到的位置的“预测/纠正位置”);

图中包含一个axes对象。标题为Distance:3.126145的axes对象包含66个line类型的对象。这些对象表示检测到的位置,预测/校正的位置。

使用卡尔曼滤波器从被零均值高斯噪声破坏的随机信号中去除噪声。

合成一个值为1的随机信号,它被标准偏差为0.1的零均值高斯噪声破坏。

X = 1;Len = 100;Z = x + 0.1 * randn(1,len);

用卡尔曼滤波器去除信号中的噪声。期望状态是恒定的,测量结果与状态相同。

stattransitionmodel = 1;测量模型= 1;Obj =愿景。KalmanFilter (stateTransitionModel measurementModel,“StateCovariance”, 1“ProcessNoise”1 e-5“MeasurementNoise”1依照);Z_corr = 0 (1,len);Idx = 1: len predict(obj);Z_corr (idx) =正确(obj,z(idx));结束

阴谋的结果。

图,plot(x * ones(1,len)),“g -”);持有;阴谋(1:len, z,“b +”1: len z_corr,的r -);传奇(原始信号的噪声信号的“过滤信号”);

图中包含一个axes对象。坐标轴对象包含3个line类型的对象。这些对象代表原始信号,噪声信号,滤波信号。

输入参数

全部折叠

卡尔曼滤波对象。

被检测对象的位置,指定为N列矩阵。每一行矩阵包含一个测量向量。的距离函数返回一个行向量,其中每个距离元素都对应于测量输入。

更多关于

全部折叠

距离方程

d z z H x T 1 z H x + ln | |

在哪里 Σ H P H T + R 而且 | Σ | 是的行列式 Σ .然后,您可以通过检查返回的距离值找到最佳匹配。

版本历史

在R2012b中介绍