- 前言
- 系统辨识定义
- 默认表示方法
- 系统模型分类
- 自回归模型AR
- 滑动平均模型MA
- 滑动平均自回归模型ARMA
- 确定性模型DARMA
- 受控自回归模型ARX
- 受控自回归滑动平均模型ARMAX
- 受控ARARX模型
- 受控ARARMA模型
- 输出误差模型OE
- 输出误差滑动平均模型OEMA
- 输出误差自回归模型OEAR
- 输出误差自回归滑动平均模型OEARMA
- 辨识模型与最小二乘
- 系统的辨识模型
- 参数的最小二乘
- 后记
电脑再跑程序把CPU占满了,那就回顾一下系统辨识课的内容吧。
系统辨识定义系统辨识可以分为两类,第一类是系统结构辨识,也就是判断系统属于哪种参数模型。第二类是已知系统结构,估计系统模型的参数。
本文总结的是第二类系统辨识的内容。
系统辨识的四大要素为:输入输出(已知),模型集合(给定),准则函数(误差函数)和优化方法(各种最小二乘迭代法)。
默认表示方法u ( t ) , y ( t ) , v ( t ) u(t),y(t),v(t) u(t),y(t),v(t)分别表示 t 时刻系统的输出,输入,系统白噪声,白噪声服从高斯分布 v ( t ) ∼ N ( 0 , σ 2 ) v(t) \sim N(0, \sigma^2) v(t)∼N(0,σ2)。默认每个时刻 t 的输入输出是已知的,白噪声是未知的。
此外,系统参数模型可以表示为: A ( z ) = 1 + a 1 z − 1 + . . . + a n a z − n a B ( z ) = b 1 z − 1 + . . . + b n b z − n b C ( z ) = 1 + c 1 z − 1 + . . . + c n c z − n c D ( z ) = 1 + d 1 z − 1 + . . . + d n d z − n d A(z)=1+a_1z^{-1}+...+a_{n_a}z^{-n_a} \\ B(z)=b_1z^{-1}+...+b_{n_b}z^{-n_b} \\ C(z)=1+c_1z^{-1}+...+c_{n_c}z^{-n_c} \\ D(z)=1+d_1z^{-1}+...+d_{n_d}z^{-n_d} \\ A(z)=1+a1z−1+...+anaz−naB(z)=b1z−1+...+bnbz−nbC(z)=1+c1z−1+...+cncz−ncD(z)=1+d1z−1+...+dndz−nd 其中, z − 1 ϕ ( t ) = ϕ ( t − 1 ) z^{-1}\phi(t)=\phi(t-1) z−1ϕ(t)=ϕ(t−1),依此类推。
例如: A ( z ) y ( t ) = B ( z ) u ( t ) + v ( t ) = > y ( t ) + a 1 y ( t − 1 ) + . . . + a n a y ( t − n a ) = b 1 u ( t − 1 ) + . . . + b n b y ( t − n b ) = > y ( t ) = − a 1 y ( t − 1 ) − . . . − a n a y ( t − n a ) + b 1 u ( t − 1 ) + . . . + b n b y ( t − n b ) A(z)y(t)=B(z)u(t)+v(t) \\ => \\ y(t)+a_1y(t-1)+...+a_{n_a}y(t-n_a)=b_1u(t-1)+...+b_{n_b}y(t-n_b) \\ => \\ y(t)=-a_1y(t-1)-...-a_{n_a}y(t-n_a)+b_1u(t-1)+...+b_{n_b}y(t-n_b) \\ A(z)y(t)=B(z)u(t)+v(t)=>y(t)+a1y(t−1)+...+anay(t−na)=b1u(t−1)+...+bnby(t−nb)=>y(t)=−a1y(t−1)−...−anay(t−na)+b1u(t−1)+...+bnby(t−nb)
系统模型分类 自回归模型ARA ( z ) y ( t ) = v ( t ) A(z)y(t)=v(t) A(z)y(t)=v(t)
滑动平均模型MAy ( t ) = D ( z ) v ( t ) y(t)=D(z)v(t) y(t)=D(z)v(t)
滑动平均自回归模型ARMAA ( z ) y ( t ) = D ( z ) v ( t ) A(z)y(t)=D(z)v(t) A(z)y(t)=D(z)v(t)
确定性模型DARMAA ( z ) y ( t ) = B ( z ) u ( t ) A(z)y(t)=B(z)u(t) A(z)y(t)=B(z)u(t)
受控自回归模型ARXA ( z ) y ( t ) = B ( z ) u ( t ) + v ( t ) A(z)y(t)=B(z)u(t)+v(t) A(z)y(t)=B(z)u(t)+v(t)
受控自回归滑动平均模型ARMAXA ( z ) y ( t ) = B ( z ) u ( t ) + D ( z ) v ( t ) A(z)y(t)=B(z)u(t)+D(z)v(t) A(z)y(t)=B(z)u(t)+D(z)v(t)
受控ARARX模型A ( z ) y ( t ) = B ( z ) u ( t ) + 1 C ( z ) v ( t ) A(z)y(t)=B(z)u(t)+\frac{1}{C(z)}v(t) A(z)y(t)=B(z)u(t)+C(z)1v(t)
受控ARARMA模型A ( z ) y ( t ) = B ( z ) u ( t ) + D ( z ) C ( z ) v ( t ) A(z)y(t)=B(z)u(t)+\frac{D(z)}{C(z)}v(t) A(z)y(t)=B(z)u(t)+C(z)D(z)v(t)
输出误差模型OEy ( t ) = B ( z ) A ( z ) u ( t ) + v ( t ) y(t)=\frac{B(z)}{A(z)}u(t)+v(t) y(t)=A(z)B(z)u(t)+v(t)
输出误差滑动平均模型OEMAy ( t ) = B ( z ) A ( z ) u ( t ) + D ( z ) v ( t ) y(t)=\frac{B(z)}{A(z)}u(t)+D(z)v(t) y(t)=A(z)B(z)u(t)+D(z)v(t)
输出误差自回归模型OEARy ( t ) = B ( z ) A ( z ) u ( t ) + 1 C ( z ) v ( t ) y(t)=\frac{B(z)}{A(z)}u(t)+\frac{1}{C(z)}v(t) y(t)=A(z)B(z)u(t)+C(z)1v(t)
输出误差自回归滑动平均模型OEARMAy ( t ) = B ( z ) A ( z ) u ( t ) + D ( z ) C ( z ) v ( t ) y(t)=\frac{B(z)}{A(z)}u(t)+\frac{D(z)}{C(z)}v(t) y(t)=A(z)B(z)u(t)+C(z)D(z)v(t)
辨识模型与最小二乘 系统的辨识模型上面的各种系统模型,经过移项或替换后都可以统一写成下面这样的形式: y ( t ) = φ T ( t ) θ + v ( t ) y(t)=\varphi^T(t)\theta+v(t) \\ y(t)=φT(t)θ+v(t) 其中, y ( t ) y(t) y(t)已知, v ( t ) v(t) v(t)未知, φ T ( t ) \varphi^T(t) φT(t)是否已知需要根据具体的移项操作判断,如果 φ T ( t ) \varphi^T(t) φT(t),则还需要替换成已知量,这是参数辨识的关键。
假设有如下的多输入单输出线性回归模型,其中 x i ( t ) , y ( t ) x_i(t), y(t) xi(t),y(t)分别表示 t 时刻的输入分量和输出, θ n \theta_n θn表示输入分量的权重参数: y ( t ) = θ 1 x 1 ( t ) + θ 2 x 2 ( t ) + . . . + θ n x n ( t ) + v ( t ) 设 : φ ( t ) = [ x 1 ( t ) x 2 ( t ) . . . x n ( t ) ] T θ = [ θ 1 θ 2 . . . θ n ] T 有 : y ( t ) = φ T ( t ) θ + v ( t ) y(t)=\theta_1x_1(t) + \theta_2x_2(t) + ... + \theta_nx_n(t) + v(t) \\ \quad \\ 设:\varphi(t)=[x_1(t)\quad x_2(t) \quad ... \quad x_n(t)]^T \\ \quad \\ \theta = [\theta_1 \quad \theta_2 \quad ... \theta_n]^T \\ \quad \\ 有:y(t)=\varphi^T(t)\theta+v(t) y(t)=θ1x1(t)+θ2x2(t)+...+θnxn(t)+v(t)设:φ(t)=[x1(t)x2(t)...xn(t)]Tθ=[θ1θ2...θn]T有:y(t)=φT(t)θ+v(t)
这就构建了该系统的辨识模型。辨识目的是获得参数 θ \theta θ的估计值。
参数的最小二乘我们的目的是估计模型参数 θ \theta θ,并且系统辨识模型中当前时刻与之前时刻的输入输出 y ( t ) y(t) y(t)和 φ T ( t ) \varphi^T(t) φT(t)都是已知的,即: { y ( 1 ) = φ T ( 1 ) θ + v ( 1 ) y ( 2 ) = φ T ( 2 ) θ + v ( 2 ) . . . y ( t ) = φ T ( t ) θ + v ( t ) 设 : Y t = [ y ( 1 ) y ( 2 ) . . . y ( t ) ] T H t = [ φ ( 1 ) φ ( 2 ) . . . φ ( t ) ] T V t = [ v ( 1 ) v ( 2 ) . . . v ( n ) ] T 有 : Y t = H t θ + V t \left \{ \begin{aligned} y(1)&=\varphi^T(1)\theta+v(1) \\ y(2)&=\varphi^T(2)\theta+v(2) \\ &... \\ y(t)&=\varphi^T(t)\theta+v(t) \end{aligned} \right . \\ \quad \\ \begin{aligned} 设: Y_t&=[y(1)\quad y(2)\quad ... \quad y(t)]^T \\ H_t&=[\varphi(1) \quad \varphi(2) \quad ... \quad \varphi(t)]^T \\ V_t&=[v(1) \quad v(2) \quad ... \quad v(n)]^T \end{aligned} \\ \quad \\ 有: Y_t=H_t\theta +V_t ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧y(1)y(2)y(t)=φT(1)θ+v(1)=φT(2)θ+v(2)...=φT(t)θ+v(t)设:YtHtVt=[y(1)y(2)...y(t)]T=[φ(1)φ(2)...φ(t)]T=[v(1)v(2)...v(n)]T有:Yt=Htθ+Vt
我们希望估计的参数 θ ^ \hat \theta θ^能够使系统输出误差尽量小: J ( θ ) = ∑ i = 1 t v 2 ( i ) = ∑ i = 1 t [ y ( i ) − φ T ( i ) θ ] 2 = V t T V t = ( Y t − H t θ ) T ( Y t − H t θ ) θ ^ L S = arg min θ J ( θ ) J(\theta)= \sum_{i=1}^t v^2(i) = \sum_{i=1}^t [y(i)-\varphi^T(i)\theta]^2 \\ =V_t^TV_t = (Y_t-H_t\theta)^T(Y_t-H_t\theta) \\ \quad \\ \hat \theta_{LS} = \argmin_\theta J(\theta) J(θ)=i=1∑tv2(i)=i=1∑t[y(i)−φT(i)θ]2=VtTVt=(Yt−Htθ)T(Yt−Htθ)θ^LS=θargminJ(θ)
求 J ( θ ) J(\theta) J(θ)取极值时的 θ ^ \hat \theta θ^,就是参数的最小二乘估计: d J d θ = H t T ( Y t − H t θ ^ ) = 0 ( H t T H t ) θ ^ L S = H t T Y t θ ^ L S = ( H t T H t ) − 1 H t T Y t \frac{dJ}{d\theta} = H_t^T(Y_t-H_t\hat \theta)=0 \\ (H_t^TH_t)\hat \theta_{LS} = H_t^TY_t \\ \hat\theta_{LS} = (H_t^TH_t)^{-1}H_t^TY_t dθdJ=HtT(Yt−Htθ^)=0(HtTHt)θ^LS=HtTYtθ^LS=(HtTHt)−1HtTYt
后记中篇将继续学习辨识模型的递归最小二乘算法。