卡尔曼滤波算法和应用

1. 状态转移矩阵 从当前状态到下一个状态的转换. 例子: 假设跟踪车辆形式 车辆的状态矩阵, 位置变量 $p_t$; 速度变量 $v_t$. $$ x_t=\begin{bmatrix} p_t \\ v_t \end{bmatrix} $$ 假设车辆有加速度变量 $u_t$; 这里 $\Delta t$ 是单位时间; 这里就可以从上一个单位时间的 $p_{t-1}v_{t-1}$ 推导出当前的 $p_tv_t$. $$ \begin{aligned}p_t=&p_{t-1}+v_{t-1}\times\Delta t+u_t\times\frac{\Delta t^2}{2}\\v_t=&v_{t-1}+u_t\times\Delta t\end{aligned} $$ 这里可以发现输出变量是输入变量的线性组合, 所以卡尔曼滤波器是线性滤波器, 只能描述状态与状态之间的线性关系. 由于是线性关系, 所以可以将公式写成矩阵的形式. $$ \left[\begin{array}{c}p_t \\v_t\end{array}\right]=\left[\begin{array}{cc}1 & \Delta t \\0 & 1\end{array}\right]\left[\begin{array}{c}p_{t-1} \\v_{t-1}\end{array}\right]+\left[\begin{array}{c}\frac{\Delta t^2}{2} \\\Delta t\end{array}\right] u_t $$ 提取公式中带时间参数矩阵之后, 就可以简化公式获得卡尔曼滤波器中的状态预测公式. $$ \begin{aligned}&F_t=\left[\begin{array}{cc}1 & \Delta t \\0 & 1\end{array}\right], B_t=\left[\begin{array}{c}\frac{\Delta t^2}{2} \\\Delta t\end{array}\right]\\&\hat{x}_t^{-}=F_t \hat{x}_{t-1}+B_t u_t\end{aligned} \quad\quad \text{(1)} $$ 这里的 $\hat{x}_t^{-}$ 表示, 这个值有 hat 符号是预测值, 并不是真实值; 右上角减号表示这个值是从 t-1 时刻的参数估计而来, 还需要 t 时刻的观测值进行修正. ...

2024年2月13日 · 7 分钟 · sun510001

数据结构与算法

1. 汉诺塔问题 问题: 将汉诺塔从A移动到C, 小圆盘必须在大圆盘上面. 分析: 可以将最底下的一块圆盘作为独立个体, 上面的所有圆盘作为另一个个体. 则整个汉诺塔的移动步骤如下. ...

2023年7月17日 · 14 分钟 · sun510001

最小二乘拟合函数

最小二乘法合函数的公式 使用最小二乘法拟合函数需要前置条件 设定多项式的阶数 $n$ 存在大于多项式阶数的点坐标 $((x_1,y_1), (x_2,y_2), ..., (x_k,y_k))$ 最小二乘拟合公式 $$ \begin{bmatrix} (\varphi_0,\varphi_0) & (\varphi_0,\varphi_1) & ... & (\varphi_0,\varphi_n)\\ (\varphi_1,\varphi_0) & (\varphi_1,\varphi_1) & ... & (\varphi_1,\varphi_n)\\ & &... \\ (\varphi_n,\varphi_0) & (\varphi_n,\varphi_1) & ... & (\varphi_n,\varphi_n)\end{bmatrix}\begin{bmatrix}a_0 \\ a_1 \\ ... \\ a_n\end{bmatrix}=\begin{bmatrix}(f,\varphi_0) \\(f,\varphi_1) \\ ... \\(f,\varphi_n) \end{bmatrix} $$ 其中括号的含义是矩阵内元素逐个相乘之和; $\varphi_n$ 是所有点坐标的 $x$ 坐标的 $n$ 次方; $a_n$ 是多项式每一阶前的参数, 从 0 开始增大; $f$ 表示所有点坐标的 $y$ 坐标; 最终可以获得 $n$ 个包含 $a_n$ 的公式, 计算公式即可算出 $a_0,a_1,...,a_n$ 参数, 从而拟合多项式. ...

2023年2月3日 · 1 分钟 · sun510001