系统辨识之最小二乘法
系统辨识之最小二乘法
系统辨识之最小二乘法方法一、最小二乘一次性算法:首先对最小二乘法的一次性辨识算法做简要介绍如下:过程的黑箱模型如图所示:其中u(k)和z(k)分别是过程的输入输出,)(1-z G 描述输入输出关系的模型,成为过程模型。
过程的输入输出关系可以描述成以下最小二乘格式:)()()(k n k h k z T +=θ (1)其中z(k)为系统输出,θ是待辨识的参数,h(k)是观测数据向量,n(k)是均值为0的随机噪声。
利用数据序列{z (k )}和{h (k )}极小化下列准则函数:∑=-=Lk T k h k z J 12])()([)(θθ (2)使J 最小的θ的估计值^θ,成为最小二乘估计值。
具体的对于时不变SISO 动态过程的数学模型为 )()()()()(11k n k u z B k z z A +=-- (3)应该利用过程的输入、输出数据确定)(1-z A 和)(1-Z B 的系数。
对于求解θ的估计值^θ,一般对模型的阶次a n ,b n 已定,且b a n n >;其次将(3)模型写成最小二乘格式)()()(k n k h k z T +=θ (4)式中=------=T n n T b a b a b b b a a a n k u k u n k z k z k h ],,,,,,,[)](,),1(),(,),1([)(2121 θ (5)L k ,,2,1 =因此结合式(4)(5)可以得到一个线性方程组L L L n H Z +=θ (6)其中==T L TL L n n n n L z z z z )](),2(),1([)](),2(),1([ (7)对此可以分析得出,L H 矩阵的行数为),max(b a n n L -,列数b a n n +。
在过程的输入为2n 阶次,噪声为方差为1,均值为0的随机序列,数据长度)(b a n n L +>的情况下,取加权矩阵L Λ为正定的单位矩阵I ,可以得出:L T L L T L z H H H 1^)(-=θ (8)其次,利用在Matlab 中编写M 文件,实现上述算法。
最小二乘法辨识
T 1 T T 1 T ˆ E [ θ ] E [ θ ( Φ Φ ) Φ ξ ] θ E [( Φ Φ ) Φ ξ ]
LS无偏估计的充要条件为:
E [( Φ Φ )
T 1
Φ
T
ξ] 0
下面讨论无偏估计的充分条件。
y ( k ) a1 y ( k 1) a n y ( k n ) b 0 u ( k ) b1u ( k 1) b n u ( k n ) ( k )
最小二乘的最早思想: 未知量的最大可能的值是这样 一个数值,它是实际观测值和计算 值的差值的平方和达到最小的数值。
基本的最小二乘估计 解决问题:在模型阶次n已知的情况下,根据系 统的输入输出数据,估计出系统差分方程的各 项系数。 1.基于输入/输出数据的系统模型描述
SISO系统的差分方程为
x ( k ) a 1 x ( k 1) a n x ( k n ) b 0 u ( k ) b n u ( k n ) y (k ) x(k ) n(k )
(k ) n(k )
a n(k i)
i i 1
n
则当前输出为:
y ( k ) a1 y ( k 1) a n y ( k n ) b 0 u ( k ) b1u ( k 1) b n u ( k n ) ( k )
ˆ min J
下面我们推导θ估计值的计算方法。
J取得最小值,也即J为极值,则有:
J ˆ θ
0
ˆ T ˆ [ (Y Φ θ ) (Y Φ θ ) ] ˆ θ
0
T ˆ 2 Φ (Y Φ θ ) 0
第五章 最小二乘法辨识
服从正态分
❖ 4)有效性
❖ 定理4:假设 (k) 是均值为零,方差为 2I 的正态
白噪声,则最小二乘参数估计量
^
是有效估计
量,即参数估计误差的协方差达到Cramer-Rao不
等式的下界
E (^
^
)(
)T
2E
(
T N
N
) 1
M 1
❖ 其中M为Fisher信息矩阵。
4、适应算法
❖ 随着更多观测数据的处理,递推最小二乘法对线性 定常系统的参数估计并非越来越精确,有时会发现
❖ 现举例说明最小二乘法的估计精度 ❖ 例5.1:设单输入-单输出系统的差分方程为
y(k) a1y(k 1) a2 y(k 2) b1u(k 1) b2u(k 2) (k)
❖ 设 u(k)是幅值为1的伪随机二位式序列,噪声 (k)是 一个方差 2可调的正态分布 N(0, 2 )随机序列。
❖ 为了克服数据饱和现象,可以用降低旧数据影响的 办法来修正算法。而对于时变系统,估计k时刻的 参数最好用k时刻附近的数据估计较准确。否则新 数据所带来的信息将被就数据所淹没。
❖ 几种算法:渐消记忆法,限定记忆法与振荡记忆法
❖ 矩阵求逆引理:设A为 n n 矩阵,B和C为 n m 矩阵,
并且A, A和 BCT I CT都A是1B 非奇异矩阵,则有矩
阵恒等式
A BCT 1 A1 A1B(I CT A1B)1CT A1
❖
令
A
PN1
,B
N 1
,C
T N 1
,根据引理有
PN1
T N 1 N 1
1
❖ 算法中,^ N 为2n+1个存贮单元(ai ,bi ,i 1,2, , n), 而 PN 是 (2n 1) (2n 1)维矩阵,显然,将 N 换成 PN 后,存贮量大为减少(因为n为模型的阶数,一般 远远小于N)
控制系统设计中的模型鉴别方法综述
控制系统设计中的模型鉴别方法综述在控制系统设计中,模型鉴别方法是一项关键性工作。
模型鉴别方法可以帮助工程师准确地识别出待控系统的数学模型,为后续的控制器设计和性能优化提供基础。
本文将对控制系统设计中常用的模型鉴别方法进行综述。
一、最小二乘法最小二乘法是一种常见的模型鉴别方法,它通过最小化误差的平方和来拟合实际测量数据和理论模型之间的差异。
最小二乘法可以用于线性和非线性模型的鉴别。
对于线性模型,最小二乘法可以通过矩阵运算求解最优解。
而对于非线性模型,最小二乘法可以通过迭代优化算法求解。
二、频域方法频域方法是一种将系统响应与频率特性相关联的模型鉴别方法。
它通常基于输入和输出信号的频谱分析,可以用于连续时间和离散时间系统。
频域方法可以采用傅里叶变换、拉普拉斯变换等数学工具,通过求解传递函数或频率响应函数来获得系统模型。
频域方法适用于具有周期性输入和输出信号的系统。
三、时域方法时域方法是一种将系统响应与时间域特性相关联的模型鉴别方法。
它通常基于实际采集到的离散时间数据,通过插值、拟合等技术来获得离散时间系统的模型。
时域方法可以采用多项式插值、曲线拟合等数学工具,通过建立系统差分方程或状态空间模型来进行模型鉴别。
时域方法适用于实际工程中获得的离散时间数据。
四、系统辨识方法系统辨识方法是一种通过试验数据来识别系统动态特性的模型鉴别方法。
它可以通过对系统施加特定的输入信号,观测系统输出响应来获得系统模型。
系统辨识方法可以分为参数辨识和非参数辨识两种方法。
参数辨识方法假设系统具有某种结构,通过最小化残差的平方和来确定模型参数。
非参数辨识方法不对系统结构进行假设,通过直接拟合试验数据来获得系统模型。
五、神经网络方法神经网络方法是一种基于人工神经网络的模型鉴别方法。
它可以通过输入输出数据训练神经网络,从而获得系统的模型。
神经网络方法可以适用于非线性系统的建模和鉴别。
神经网络方法具有较强的自适应能力和非线性拟合能力,但对于网络结构和训练样本的选择具有一定的要求。
系统辨识—最小二乘法
最小二乘法参数辨识1 引言系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。
现代控制理论中的一个分支。
通过辨识建立数学模型的目的是估计表征系统行为的重要参数,建立一个能模仿真实系统行为的模型,用当前可测量的系统的输入和输出预测系统输出的未来演变,以及设计控制器。
对系统进行分析的主要问题是根据输入时间函数和系统的特性来确定输出信号。
对系统进行控制的主要问题是根据系统的特性设计控制输入,使输出满足预先规定的要求。
而系统辨识所研究的问题恰好是这些问题的逆问题。
通常,预先给定一个模型类μ={M}(即给定一类已知结构的模型),一类输入信号u和等价准则J=L(y,yM)(一般情况下,J是误差函数,是过程输出y和模型输出yM的一个泛函);然后选择使误差函数J达到最小的模型,作为辨识所要求的结果。
系统辨识包括两个方面:结构辨识和参数估计。
在实际的辨识过程中,随着使用的方法不同,结构辨识和参数估计这两个方面并不是截然分开的,而是可以交织在一起进行的。
2 系统辨识的目的在提出和解决一个辨识问题时,明确最终使用模型的目的是至关重要的。
它对模型类(模型结构)、输入信号和等价准则的选择都有很大的影响。
通过辨识建立数学模型通常有四个目的。
①估计具有特定物理意义的参数有些表征系统行为的重要参数是难以直接测量的,例如在生理、生态、环境、经济等系统中就常有这种情况。
这就需要通过能观测到的输入输出数据,用辨识的方法去估计那些参数。
②仿真仿真的核心是要建立一个能模仿真实系统行为的模型。
用于系统分析的仿真模型要求能真实反映系统的特性。
用于系统设计的仿真,则强调设计参数能正确地符合它本身的物理意义。
③预测这是辨识的一个重要应用方面,其目的是用迄今为止系统的可测量的输入和输出去预测系统输出的未来的演变。
例如最常见的气象预报,洪水预报,其他如太阳黑子预报,市场价格的预测,河流污染物含量的预测等。
预测模型辨识的等价准则主要是使预测误差平方和最小。
系统辨识—最小二乘法_3
---------------------------------------------------------------最新资料推荐------------------------------------------------------系统辨识—最小二乘法最小二乘法参数辨识 1 引言系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。
现代控制理论中的一个分支。
通过辨识建立数学模型的目的是估计表征系统行为的重要参数,建立一个能模仿真实系统行为的模型,用当前可测量的系统的输入和输出预测系统输出的未来演变,以及设计控制器。
对系统进行分析的主要问题是根据输入时间函数和系统的特性来确定输出信号。
对系统进行控制的主要问题是根据系统的特性设计控制输入,使输出满足预先规定的要求。
而系统辨识所研究的问题恰好是这些问题的逆问题。
通常,预先给定一个模型类={M}(即给定一类已知结构的模型),一类输入信号 u 和等价准则 J=L(y,yM)(一般情况下,J 是误差函数,是过程输出 y 和模型输出 yM 的一个泛函);然后选择使误差函数J 达到最小的模型,作为辨识所要求的结果。
系统辨识包括两个方面:结构辨识和参数估计。
在实际的辨识过程中,随着使用的方法不同,结构辨识和参数估计这两个方面并不是截然分开的,而是可以交织在一起进行的。
2 系统辨识的目的在提出和解决一个辨识问题时,明确最终使1 / 17用模型的目的是至关重要的。
它对模型类(模型结构)、输入信号和等价准则的选择都有很大的影响。
通过辨识建立数学模型通常有四个目的。
①估计具有特定物理意义的参数有些表征系统行为的重要参数是难以直接测量的,例如在生理、生态、环境、经济等系统中就常有这种情况。
这就需要通过能观测到的输入输出数据,用辨识的方法去估计那些参数。
②仿真仿真的核心是要建立一个能模仿真实系统行为的模型。
用于系统分析的仿真模型要求能真实反映系统的特性。
最小二乘法
y (k ) = x(k ) + v(k )
y (k ) +
x(k ) = y (k ) − v(k )
n i=0
∑
n
i =1
ai y (k − i) =
∑
biu ( k − i ) + v ( k ) +
∑
n
i =1
aiv (k − i)
ξ (k ) = v(k ) +
∑
n
i =1
a iv (k − i)
系统辨识——最小二 (n) L − y (1) u (n + 1) L y (n + 1) y (n + 2) − y (n + 1) L − y (2) u (n + 2) L = M M M M M y (n + N ) − y (n + N − 1) L − y ( N ) u (n + N ) L a1 a 2 u (1) M ξ (n + 1) u (2) an ξ (n + 2) + b0 M u ( N ) b1 ξ (n + N ) M bn
系统辨识——最小二乘算法 系统辨识——最小二乘算法
系统参数a 系统参数a
a 1.5 a1 a2
^
1
a1 = −1.5003
a2 = 0.7006
^
0.5
a1=-1.5, a2= 0.7
0 theta -0.5 -1 -1.5 -2 0
10
20
30 time steps
40
50
(完整)系统辨识—最小二乘法汇总,推荐文档
最小二乘法参数辨识201403027摘要:系统辨识在工程中的应用非常广泛,系统辨识的方法有很多种,最小二乘法是一种应用极其广泛的系统辨识方法.阐述了动态系统模型的建立及其最小二乘法在系统辨识中的应用,并通过实例分析说明了最小二乘法应用于系统辨识中的重要意义.关键词:最小二乘法;系统辨识;动态系统Abstract: System identification in engineering is widely used, system identification methods there are many ways, least squares method is a very wide range of application of system identification method and the least squares method elaborated establish a dynamic system models in System Identification applications and examples analyzed by the least squares method is applied to illustrate the importance of system identification.Keywords: Least Squares; system identification; dynamic system引言随着科学技术的不断发展,人们认识自然、利用自然的能力越来越强,对于未知对象的探索也越来越深入.我们所研究的对象,可以依据对其了解的程度分为三种类型:白箱、灰箱和黑箱.如果我们对于研究对象的内部结构、内部机制了解很深入的话,这样的研究对象通常称之为“白箱”;而有的研究对象,我们对于其内部结构、机制只了解一部分,对于其内部运行规律并不十分清楚,这样的研究对象通常称之为“灰箱”;如果我们对于研究对象的内部结构、内部机制及运行规律均一无所知的话,则把这样的研究对象称之为“黑箱”.研究灰箱和黑箱时,将研究的对象看作是一个系统,通过建立该系统的模型,对模型参数进行辨识来确定该系统的运行规律.对于动态系统辨识的方法有很多,但其中应用最广泛,辨识效果良好的就是最小二乘辨识方法,研究最小二乘法在系统辨识中的应用具有现实的、广泛的意义.1.1 系统辨识简介系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。
最小二乘法在系统辨识中的应用
最小二乘法在系统辨识中的应用王文进控制科学与控制工程学院 控制理论与控制工程专业 2009010211摘要:在实际的工程中,经常要对一个系统建立数学模型。
很多时候,要面对一个未知的系统,对于这些未知系统,我们所知道的仅仅是它们的一些输入输出数据,我们要根据这些测量的输入输出数据,建立系统的数学模型。
由此诞生了系统辨识这门科学,系统辨识就是研究怎样利用对未知系统的输入输出数据建立描述系统的数学模型的科学。
系统辨识在工程中的应用非常广泛,系统辨识的方法有很多种,最小二乘法是一种应用及其广泛的系统辨识方法。
本文主要讲述了最小二乘估计在系统辨识中的应用。
首先,为了便于介绍,用一个最基本的单输入单输出模型来引入系统辨识中的最小二乘估计。
例如:y = ax + (1)其中:y、x 可测,为不可测的干扰项,a未知参数。
通过N 次实验,得到测量数据y k和x k ,其中k=1、2、3、…,我们所需要做的就是通过这N次实验得到的数据,来确定未知参数a 。
在忽略不可测干扰项的前提下,基本的思想就是要使观测点y k和由式(1)确定的估计点y的差的平方和达到最小。
用公式表达出来就是要使J最小:确定未知参数a的具体方法就是令: J a = 0 , 导出 a通过上面最基本的单输入单输出模型,我们对系统辨识中的最小二乘法有了初步的了解,但在实际的工程中,系统一般为多输入系统,下面就用一个实际的例子来分析。
在接下来的表述中,为了便于区分,向量均用带下划线的字母表示。
水泥在凝固过程中,由于发生了一系列的化学反应,会释放出一定的热量。
若水泥成分及其组成比例不同,释放的热量也会不同。
水泥凝固放热量与水泥成分的关系模型如下:y = a0+ a1x1+…+ a n x n +其中,y为水泥凝固时的放热量(卡/克);x1~x2为水泥的几种成分。
引入参数向量: = [ a0,a1,…,a n ]T经过N次试验,得出N个方程: y k = k T + k ; k=1、2…、N其中:k = [ 1,x1,x2,…,x N ]T方程组可用矩阵表示为: y = +其中:y = [ y1,y2,…,y N ] T = [ 1,2,…,N ] T估计准则:有=(y - )T( y - )J = y T y + T T - y T - T T y= y T y + T T - 2 T T y假设:(T)满秩,由根据矩阵值函数对矩阵变量的导数和数量函数对矩阵变量的导数可以得出以下两个公式:和有:和所以:解出参数估计向量:=(T)-1 T yLs至此,水泥的凝固放热量与水泥的成分关系模型即建立起来了。
最小二乘法系统辨识
最小二乘法一次完成算法的MATLAB仿真一、二阶系统的最小二乘法一次完成算法的辨识程序及结果程序源代码:clear % 工作间清零u = [-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1]; % 系统辨识的输入信号为一个周期的M序列z = zeros( 1, 16); % 定义输出观测值的长度for k = 3 : 16% 用理想输出值作为观测值z(k) = 1.8*z(k-1) - 0.8*z(k-2) + 1.1*u(k-1) + 0.4*u(k-2);ZL( k, : ) = z(k); % 给样本矩阵ZL赋值Hl = [ -z(k-1), -z(k-2), u(k-1), u(k-2) ]; % 用理想输出值作为观测值HL( k, : ) = Hl;endsubplot(3,1,1) % 画三行一列图形窗口中的第一个图形stem(u) % 画出输入信号u的经线图形subplot(3,1,2) % 画三行一列图形窗口中的第二个图形i=1:1:16; % 横坐标范围是1到16,步长为1% 图形的横坐标是采样时刻i, 纵坐标是输出观测值z, 图形格式为连续曲线plot(i,z)subplot(3,1,3) % 画三行一列图形窗口中的第三个图形stem(z),grid on % 画出输出观测值z的经线图形,并显示坐标网格u,z % 显示输入信号和输出观测信号c1=HL'*HL; % 计算参数并显示c2=inv(c1);c3=HL'*ZL;c=c2*c3a1=c(1), a2=c(2), b1=c(3), b2=c(4) % 从中分离出并显示a1 、a2、b1、b2运算结果如下:u =-1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1z =Columns 1 through 90 0 0.7000 0.5600 1.1480 3.1184 6.1947 10.1558 12.6246 Columns 10 through 1613.0997 11.9798 11.7838 10.9270 8.7416 7.6933 8.3546c =-1.80000.80001.10000.4000a1 =-1.8000a2 =0.8000b1 =1.1000b2 =0.4000所画图形如下:二、实际压力系统的最小二乘辨识程序及结果程序源代码:clear % 工作间清零V = [ 54.3, 61.8, 72.4, 88.7, 118.6, 194.0]' % 赋初值V,并显示P = [ 61.2, 49.5, 37.6, 28.4, 19.2, 10.1]' % 赋初值P,并显示% P、V之间的关系:logP=-alpha*logV% +logbeita=[-logV,1][alpha,log(beita)]'=HL*sitafor i = 1 : 6; % 循环变量的取值为从1到6 Z(i) = log( P (i) ); % 赋系统的输出采样值ZL( i, : ) = Z(i); % 给样本矩阵ZL赋值Hl = [ log( V(i) ),1 ]; % 给HL赋值HL( i, : ) = Hlend % 循环结束c1=HL'*HL; % 计算参数并显示c2=inv(c1);c3=HL'*ZL;c4=c2*c3alpha = c4(1) % 为c4的第1个元素beita = exp(c4(2)) % 为以自然数为底的c4的第2个元素的指数运算结果如下:V =54.300061.800072.400088.7000118.6000194.0000P =61.200049.500037.600028.400019.200010.1000HL =3.9945 1.0000HL =3.9945 1.00004.1239 1.0000HL =3.9945 1.00004.1239 1.00004.2822 1.0000HL =3.9945 1.00004.1239 1.00004.2822 1.00004.4853 1.0000HL =3.9945 1.00004.1239 1.00004.2822 1.00004.4853 1.00004.7758 1.0000HL =3.9945 1.00004.1239 1.00004.2822 1.00004.4853 1.00004.7758 1.00005.2679 1.0000 c4 =-1.40429.6786alpha =-1.4042beita =1.5972e+004。
系统辨识各类最小二乘法汇总
yk(k)=1.5*yk(k-1)-0.7*yk(k-2)+uk(k-1)+0.5*uk(k-2)+y1(k); end figure(3); plot(yk); title('对应输出曲线');
theta=[0;0;0;0]; p=10^6*eye(4);
9
for t=3:N h=([-yk(t-1);-yk(t-2);uk(t-1);uk(t-2)]); x=1+h'*p*h; p=(p-p*h*1/x*h'*p); theta=theta+p*h*(yk(t)-h'*theta);
12
p=(p-p*h*1/x*h'*p); theta=theta+p*h*(yk(t)-h'*theta);
a1t(t)=theta(1); a2t(t)=theta(2); b1t(t)=theta(3); b2t(t)=theta(4); d1t(t)=theta(5); d2t(t)=theta(6);
end 5、RGLS 试验程序(部分) for t=3:N
he=([-e(t-1);-e(t-2)]); xe=1+he'*pe*he; pe=(pe-pe*he*1/xe*he'*pe); thete=thete+pe*he*(e(t)-he'*thete);
c1t(t)=thete(1); c2t(t)=thete(2);
7
RELS: 当噪声模型: e k = D Z −1 ∗ v k ( v(k) 为白噪声 )时,我们采用增广最 小二乘方法。能辨识出参数(包括噪声参数)的无偏估计。 RGLS: 当噪声模型: e k =
系统辨识之最小二乘
写成矩阵的形式为:
Y = Fq + e
3.6
é - y(n)
- y(n -1) … - y(1) u(n) … u(1) ù
F
=
ê ê ê
-
y(n "
-1)
- y(n) "
… - y(2)
u(n +1)
…
u(2)
ú ú
…"
" # "ú
êë- y(n + N ) - y(n + N -1) ! - y(N ) u(n + N ) ! u(N )úû
q = F -1y
如果噪声x ¹ 0,则 q = F-1y - F-1x
从上式可以看出噪声 x 对参数估计有影响,为了尽量减小噪声 x 对q 估值的影响,应取 N>(2n+1), 即方程数大于未知数数目。在这种情况下,不能用解方程的办法来求q ,而要采用数理统计的办法, 以便减小噪声对q 估值的影响。在给定输出向量 y 和测量矩阵 F 的条件下求系统参数q 的估值,这 就是系统辨识问题。可用最小二乘法来就q 的估值。
在科学研究中,为了揭示某些相关量之间的关系,找出其规律,往往需要求解其函数解析式。
一种方法是采用插值逼近法,即所构造的近似函数 f (x) 在已知节点 xi 上必须满足 f(xi) = yi 要求逼 近函数 f (xi) 与被逼近函数 f (x) 在各已知点 xi 处的误差为零,即要求 f (x) 的曲线必须通过所有的
取泛函 J (q )为
N
å å J (q ) = (Y - Fq )2 = e2 (n + i) = eT • e = (Y - Fq )T (Y - Fq ) i =1
系统辨识最小二乘法
课 程 设 计 报 告学 院: 自动化学院 专业名称: 自动化 学生姓名: ** 指导教师: *** 时 间:2010年7月课程设计任务书一、设计内容SISO 系统的差分方程为:)()2()1()2()1()(2121k k u b k u b k z a k z a k z υ+-+-=-+-+参数取真值为:[]0.35 0.39 0.715 1.642=T θ,利用MATLAB 的M 语言辨识系统中的未知参数1a 、2a 、1b 、2b 。
二、主要技术要求用参数的真值及差分方程求出)(k z 作为测量值,)(k υ是均值为0,方差为0.1、0.5和0.01的不相关随机序列。
选取一种最小二乘算法利用MATLAB 的M 语言辨识参数。
三、进度要求2周(6月28日-7月11日)完成设计任务,撰写设计报告3000字以上,应包含设计过程、 计算结果、 图表等内容。
具体进度安排:◆ 6月28日,选好题目,查阅系统辨识相关最小二乘法原理的资料。
◆ 6月29日,掌握最小二乘原理,用MATLAB 编程实现最小二乘一次完成算法。
◆ 6月30日,掌握以最小二乘算法为基础的广义最小二乘递推算法。
◆ 7月1日,用MATLAB 编程实现广义最小二乘递推算法。
◆ 7月2日,针对题目要求进行参数辨识,并记录观察相关数据。
◆ 7月3日-7月5日,对参数辨识结果进行分析,找出存在的问题,提出改进方案,验证改进优化结果。
◆ 7月6日-7月7日,撰写课程设计报告。
◆ 7月8日,对课程设计报告进行校对。
◆ 7月9日,打印出报告上交。
学 生王景 指导教师 邢小军1. 设计内容设SISO 系统的差分方程为:)()2()1()2()1()(2121k k u b k u b k z a k z a k z υ+-+-=-+-+ 式(1-1)参数取真值为:[]0.35 0.39 0.715 1.642=Tθ,利用MATLAB 的M 语言辨识系统中的未知参数1a 、2a 、1b 、2b 。
系统辨识-最小二乘法
5.3 Matlab源程序:%最小二乘估计clearu=[ 1.147 0.201 -0.787 -1.589 -1.052 0.866 1.152 1.573 0.6260.433 -0.985 0.810 -0.044 0.947 -1.474 -0.719 -0.086 -1.099 1.4501.151 0.485 1.633 0.043 1.326 1.706 -0.340 0.890 0.144 1.177-0.390];n=normrnd(0, sqrt(0.1), 1, 31); %方差为0.1z=zeros(1,30);for k=3:31z(k)=-1.642*z(k-1)-0.715*z(k-2)+0.39*u(k-1)+0.35*u(k-2)+n(k)+1.642*n(k-1)+0.715 *n(k-2);endh0=[-z(2) -z(1) u(2) u(1)]';HLT=[h0,zeros(4,28)];for k=3:30h1=[-z(k) -z(k-1) u(k) u(k-1)]';HLT(:,k-1)=h1;endHL=HLT';y=[z(3);z(4);z(5);z(6);z(7);z(8);z(9);z(10);z(11);z(12);z(13);z(14);z(15);z(16) ;z(17);z(18);z(19);z(20);z(21);z(22);z(23);z(24);z(25);z(26);z(27);z(28);z(29); z(30);z(31)];%求出FAIc1=HL'*HL;c2=inv(c1);c3=HL'*y;c=c2*c3;%display('方差=0.1时,最小二乘法估计辨识参数θ如下:');a1=c(1)a2=c(2)b1=c(3)b2=c(4)%递推最小二乘法估计clearu=[ 1.147 0.201 -0.787 -1.589 -1.052 0.866 1.152 1.573 0.6260.433 -0.985 0.810 -0.044 0.947 -1.474 -0.719 -0.086 -1.099 1.4501.151 0.485 1.633 0.043 1.326 1.706 -0.340 0.890 0.144 1.177-0.390];z(2)=0;z(1)=0;n=normrnd(0, sqrt(0.1), 1, 31); %方差为0.1for k=3:31z(k)=-1.642*z(k-1)-0.715*z(k-2)+0.39*u(k-1)+0.35*u(k-2)+n(k)+1.642*n(k-1)+0.715 *n(k-2);endc0=[0.001 0.001 0.001 0.001]'; %直接给出被辨识参数的初始值,即一个充分小的实向量p0=10^6*eye(4,4); %直接给出初始状态P0,即一个充分大的实数单位矩阵E=0.000000005; %取相对误差E=0.000000005c=[c0,zeros(4,30)]; %被辨识参数矩阵的初始值及大小e=zeros(4,30); %相对误差的初始值及大小for k=3:30; %开始求Kh1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';x=h1'*p0*h1+1; x1=inv(x); %开始求K(k)k1=p0*h1*x1;%求出K的值d1=z(k)-h1'*c0; c1=c0+k1*d1; %求被辨识参数ce1=c1-c0; %求参数当前值与上一次的值的差值e2=e1./c0; %求参数的相对变化e(:,k)=e2; %把当前相对变化的列向量加入误差矩阵的最后一列c0=c1; %新获得的参数作为下一次递推的旧参数c(:,k)=c1; %把辨识参数c 列向量加入辨识参数矩阵的最后一列p1=p0-k1*k1'*[h1'*p0*h1+1]; %求出 p(k)的值p0=p1; %给下次用if e2<=Ebreak; %如果参数收敛情况满足要求,终止计算endend%display('方差为0. 1递推最小二乘法辨识后的结果是:');a1=c(1,:);a2=c(2,:);b1=c(3,:);b2=c(4,:);%display('a1,a2,b1,b2经过递推最小二乘法辨识的结果是:');for i=3:31;if(c(1,i)==0)q1=c(1,i-1);break;endendfor i=3:31;if(c(2,i)==0)q2=c(2,i-1);break;endendfor i=3:31;if(c(3,i)==0)q3=c(3,i-1);break;endendfor i=3:31;if(c(4,i)==0)q4=c(4,i-1);break;endenda1=q1a2=q2b1=q3b2=q4%辅助变量递推最小二乘法估计clearna=2;nb=2;siitt=[1.642 0.715 0.39 0.35]';siit0=0.001*eye(na+nb,1);p=10^6*eye(na+nb);siit(:,1)=siit0;y(2)=0;y(1)=0;x(1)=0;x(2)=0;j=0;u=[ 1.147 0.201 -0.787 -1.589 -1.052 0.866 1.152 1.573 0.6260.433 -0.985 0.810 -0.044 0.947 -1.474 -0.719 -0.086 -1.099 1.4501.151 0.485 1.633 0.043 1.326 1.706 -0.340 0.890 0.144 1.177-0.390];n=normrnd(0, sqrt(0.1), 1, 31); %方差为0.1for k=3:31;h=[-y(k-1),-y(k-2),u(k-1),u(k-2)]';y(k)=h'*siitt+n(k)+1.642*n(k-1)+0.715*n(k-2);hx=[-x(k-1),-x(k-2),u(k-1),u(k-2)]';kk=p*hx/(h'*p*hx+1);p=[eye(na+nb)-kk*h']*p;siit(:,k-1)=siit0+kk*[y(k)-h'*siit0];x(k)=hx'*siit(:,k-1);j=j+(y(k)-h'*[1.642 0.715 0.39 0.35]')^2;e=max(abs((siit(:,k-1)-siit0)./siit0));ess(:,k-2)=siit(:,k-1)-siitt;siit0=siit(:,k-1);enda1=siit0(1)a2=siit0(2)b1=siit0(3)b2=siit0(4)clear%广义最小二乘估计clear;nn = normrnd(0,sqrt(0.1),1,31)'; %方差为0.1uk=[1.147 0.201 -0.787 -1.589 -1.052 0.866 1.152 1.573 0.626 0.433 -0.958 0.810 -0.044 0.947 -1.474 -0.719 -0.086 -1.099 1.450 1.151 0.485 1.633 0.043 1.326 1.706 -0.340 0.890 1.144 1.177 -0.390];yk(1)=0;yk(2)=0;for i=1:29;yk(i+2)=-1.642*yk(i+1)-0.715*yk(i)+0.39*uk(i+1)+0.35*uk(i)+nn(i+2)+1.642*nn(i+1 )+0.715*nn(i);end;for i=1:29;A(i,:)=[-yk(i+1) -yk(i) uk(i+1) uk(i)];endsiit=inv(A'*A)*A'*(yk(3:31)+nn(2:30)')';e(1)=yk(1);e(2)=yk(2)+siit(1)*yk(1)-siit(3)*uk(1);for i=3:31;e(i)=yk(i)+siit(1)*yk(i-1)+siit(2)*yk(i-2)-siit(3)*uk(i-1)-siit(4)*uk(i-2); endfor i=1:29;fai(i,:)=[-e(i+1) -e(i)];endf=inv(fai'*fai)*fai'*e(3:31)';for i=3:31;yk(i)=yk(i)+f(1)*yk(i-1)+f(2)*yk(i-2);endyk(2)=yk(2)+f(1)*yk(1);for i=3:30;uk(i)=uk(i)+f(1)*uk(i-1)+f(2)*uk(i-2);enduk(2)=uk(2)+f(1)*uk(1);for j=1:30for i=1:29;A(i,:)=[-yk(i+1) -yk(i) uk(i+1) uk(i)];endsiit=inv(A'*A)*A'*yk(3:31)';e(1)=yk(1);e(2)=yk(2)+siit(1)*(yk(1))-siit(3)*uk(1);for i=3:31;e(i)=yk(i)+siit(1)*(yk(i-1))+siit(2)*(yk(i-2))-siit(3)*uk(i-1)-siit(4)*uk(i-2); endfor i=1:29;fai(i,:)=[-e(i+1) -e(i)];endf=inv(fai'*fai)*fai'*e(3:31)';k1(j)=f(1);k2(j)=f(2);for i=3:31;yk(i)=yk(i)+f(1)*(yk(i-1))+f(2)*(yk(i-2));endyk(2)=yk(2)+f(1)*yk(1);for i=3:30uk(i)=uk(i)+f(1)*uk(i-1)+f(2)*uk(i-2);enduk(2)=uk(2)+f(1)*uk(1);endsiit'%增广矩阵估计参数clearu=[ 1.147 0.201 -0.787 -1.589 -1.052 0.866 1.152 1.573 0.6260.433 -0.985 0.810 -0.044 0.947 -1.474 -0.719 -0.086 -1.099 1.4501.151 0.485 1.633 0.043 1.326 1.706 -0.340 0.890 0.144 1.177-0.390];n=normrnd(0, sqrt(0.1), 1, 31); %方差为0.1z=zeros(7,30);zs=zeros(7,30);zm=zeros(7,30);zmd=zeros(7,30);%输出采样、不考虑噪声时系统输出、不考虑噪声时模型输出、模型输出矩阵的大小z(2)=0;z(1)=0;zs(2)=0;zs(1)=0;zm(2)=0;zm(1)=0;zmd(2)=0;zmd(1)=0;%给输出采样、不考虑噪声时系统输出、不考虑噪声时模型输出、模型输出赋初值for k=3:31z(k)=-1.642*z(k-1)-0.715*z(k-2)+0.39*u(k-1)+0.35*u(k-2)+n(k)+1.642*n(k-1)+0.715 *n(k-2);endc0=[0.001 0.001 0.001 0.001]'; %直接给出被辨识参数的初始值,即一个充分小的实向量p0=10^6*eye(4,4); %直接给出初始状态P0,即一个充分大的实数单位矩阵E=0.000000005; %取相对误差E=0.000000005c=[c0,zeros(4,30)]; %被辨识参数矩阵的初始值及大小e=zeros(4,30); %相对误差的初始值及大小for k=3:30; %开始求Kh1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';x=h1'*p0*h1+1; x1=inv(x); %开始求K(k)k1=p0*h1*x1;%求出K的值d1=z(k)-h1'*c0; c1=c0+k1*d1; %求被辨识参数czs(k)=-1.642*z(k-1)-0.715*z(k-2)+0.39*u(k-1)+0.35*u(k-2);%系统在M序列的输入下不考虑扰动时的输出响应zm(k)=[-z(k-1),-z(k-2),u(k-1),u(k-2)]*[c1(1);c1(2);c1(3);c1(4)];%模型在输入下不考虑扰动时的的输出响应zmd(k)=h1'*c1;%模型在输入下的的输出响应e1=c1-c0;e2=e1./c0; %求参数的相对变化e(:,k)=e2; %把当前相对变化的列向量加入误差矩阵的最后一列c0=c1; %新获得的参数作为下一次递推的旧参数c(:,k)=c1; %把辨识参数c 列向量加入辨识参数矩阵的最后一列p1=p0-k1*k1'*[h1'*p0*h1+1]; %求出 p(k)的值p0=p1; %给下次用if e2<=Ebreak; %如果参数收敛情况满足要求,终止计算endend%display('方差为0. 1递推最小二乘法辨识后的结果是:');a1=c(1,:);a2=c(2,:);b1=c(3,:);b2=c(4,:);%display('a1,a2,b1,b2经过递推最小二乘法辨识的结果是:');for i=3:31;if(c(1,i)==0)q1=c(1,i-1);break;endendfor i=3:31;if(c(2,i)==0)q2=c(2,i-1);break;endendfor i=3:31;if(c(3,i)==0)q3=c(3,i-1);break;endendfor i=3:31;if(c(4,i)==0)q4=c(4,i-1);break;endenda1=q1a2=q2b1=q3b2=q4%用夏氏偏差修正法估计参数clear;u=[ 1.147 0.201 -0.787 -1.589 -1.052 0.866 1.152 1.573 0.6260.433 -0.985 0.810 -0.044 0.947 -1.474 -0.719 -0.086 -1.099 1.4501.151 0.485 1.633 0.043 1.326 1.706 -0.340 0.890 0.144 1.177-0.390];n=normrnd(0, sqrt(0.1), 1, 31); %方差为0.1z=zeros(1,30);for k=3:31z(k)=-1.642*z(k-1)-0.715*z(k-2)+0.39*u(k-1)+0.35*u(k-2)+n(k)+1.642*n(k-1)+0.715 *n(k-2);endh0=[-z(2) -z(1) u(2) u(1)]';HLT=[h0,zeros(4,28)];for k=3:30h1=[-z(k) -z(k-1) u(k) u(k-1)]';HLT(:,k-1)=h1;endHL=HLT';y=[z(3);z(4);z(5);z(6);z(7);z(8);z(9);z(10);z(11);z(12);z(13);z(14);z(15);z(16) ;z(17);z(18);z(19);z(20);z(21);z(22);z(23);z(24);z(25);z(26);z(27);z(28);z(29); z(30);z(31)];%求出FAIc1=HL'*HL;c2=inv(c1);c3=HL'*y;c=c2*c3;fai1_xiashi=HL;siit1_ls_guzhi=c;ka_ma=inv(fai1_xiashi'*fai1_xiashi)*fai1_xiashi';M_xiashi=eye(29)-fai1_xiashi*ka_ma;siit_N0_xshi=siit1_ls_guzhi;siit_bxs=[10,10,10,10]';for n=1:30e=zeros(29,1);e(3)=y(5)+siit_N0_xshi(1,1)*y(4)+siit_N0_xshi(2,1)*y(3)-siit_N0_xshi(3,1)*u(4)-siit_N0_xshi(4,1)*u(3);e(4)=y(6)+siit_N0_xshi(1,1)*y(5)+siit_N0_xshi(2,1)*y(4)-siit_N0_xshi(3,1)*u(5)-siit_N0_xshi(4,1)*u(4);e(5:29) = y(5:29) - fai1_xiashi(5:29,:) * siit_N0_xshi;ou_mei_ka=zeros(29,1);for i=1:29ou_mei_ka(i,:)=-e(i);endD_xiashi=ou_mei_ka'*M_xiashi*ou_mei_ka;f_xiashi=inv(D_xiashi)*ou_mei_ka'*M_xiashi*y(1:29);siit_b=ka_ma*ou_mei_ka*f_xiashi;siit_xiashi=siit1_ls_guzhi-siit_b;if norm(siit_b-siit_bxs)/norm(siit_bxs)<0.0001break ;endsiit_N0_xshi=siit_xiashi;siit_bxs=siit_b;endsiit1_xiashi=siit_xiashi;%display('利用夏氏修正法得出的辨识结果:');a1=siit1_xiashi(1)a2=siit1_xiashi(2)b1=siit1_xiashi(3)b2=siit1_xiashi(4)。
系统辨识相关分析和最小二乘
bnu k n k
n(k ) 是均值为0的白噪声, 其中: k n k a n k i , 现分别测出n+N个输出输入值y(1),y(2)......y(n+N), u(1),u(2)......u(n+N),则可写出N个方程,写成向量 1 y n y 1 u n 1 u 1 -矩阵形式 yy nn 2 y n 1 y 2 u n2 u 2
J ˆ 0 2T y ˆ
ˆ y 得: 1 T ˆ 推出: T y 其中,J为极小值的充分条件是: 2 J
T T
ˆ2
T 0
即矩阵ΦTΦ为正定矩阵,或者说是非奇异的。
ΦTΦ正定的必要条件是:输入u(k)为持续激励信号。
T1 * K1 * T1 * ( E1 1) T0 * u ( k ) u (k 1) / T0 ; T2 * T2 * ( E2 1) T0 * x(k ) x(k 1) / T0 ;
2)白噪声生成: 利用U[0,1]均匀分布的随机数生成正态分布的白噪 声 12 2
1
N
于是
ˆ P T Y N N N
N
如果再获得1组新的观测值,则又增加1个方程 T yN 1 N 1 N 1 得新的参数估计值
ˆ P T Y y N 1 N 1 N N N 1 N 1
N 1 1 T T PN N 1 N 1 N 1
3)M序列生成: 用M序列作为辨识的输入信号,循环周期取 N 时钟节拍 t 1Sec ,幅度 a 1 . 生成M序列的结构图:
matlab系统辨识工具箱使用的算法
matlab系统辨识工具箱使用的算法MATLAB的系统辨识工具箱使用多种算法来进行系统辨识。
这些算法通常包括以下几种:
1. 最小二乘法(Least Squares):这是最常用的系统辨识方法。
最小二乘法试图找到一组参数,使得实际数据和模型预测之间的误差平方和最小。
2. 极大似然估计(Maximum Likelihood Estimation):这种方法基于数据生成的模型概率密度函数,通过最大化似然函数来估计模型参数。
3. 递归最小二乘法(Recursive Least Squares):这是一种在线算法,可以在数据流中实时更新模型参数。
4. 扩展最小二乘法(Extended Least Squares):这种方法可以处理包含噪声和异常值的数据,通过引入权重来调整误差平方和。
5. 非线性最小二乘法(Nonlinear Least Squares):对于非线性系统,需要使用非线性最小二乘法来估计参数。
6. 遗传算法(Genetic Algorithms):这是一种启发式搜索算法,通过模拟自然选择和遗传过程来寻找最优解。
7. 粒子群优化算法(Particle Swarm Optimization):这是一种基于群体智能的优化算法,通过模拟鸟群、鱼群等生物群体的行为来寻找最优解。
以上这些算法都是MATLAB系统辨识工具箱中常用的算法,根据具体的问题和数据,可以选择最适合的算法来进行系统辨识。
系统辨识第5章 线性动态模型参数辨识 最小二乘法
度函数
,则称uS(uk()为) “持续激励”信号。
● 定义4 一个具有谱密度 Fn (为z 1的) 平f1z稳1 信f2号z 2u(k)称fn为z nn 阶
“持续激励”Fn信(e号j ),2 S若u (对) 一0 切形如 Fn (e j ) 0
的滤波器,关系式
,意味着
。
● 定理2 设输入信号u(kR)u是(0)平稳R随u (1机) 信号,Ru (如n 果1)相关函数矩阵
式中
zL H L nL
nzHLLL[[zn(h(hh11TT)T),((,(zL12n())()22)),,,,znz(((LzLzL)(()]10]))1)
z(1 na ) z(2 na )
z(L na )
u(0) u(1)
u(L 1)
u(1 nb )
u(2
nb
)
u(L nb )
5.2 最小二乘法的基本概念
● 两种算法形式
① 批处理算法:利用一批观测数据,一次计算或经反复迭代,
以获得模型参数的估计值。
②
递推算法:在上次模型参数估计值
ˆ
(k
1)的基础上,根据当
前获得的数据提出修正,进而获得本次模型参数估计值ˆ (k ),
广泛采用的递推算法形式为
(k ) (k 1) K (k )h(k d )~z (k )
z(k ) h (k ) n(k )
式中z(k)为模型输出变量,h(k)为输入数据向量, 为模型参
数向量,n(k)为零均值随机噪声。为了求此模型的参数估计值, 可以利用上述最小二乘原理。根据观测到的已知数据序列
和{z(k)} ,{h极(k小)} 化下列准则函数
L
J ( ) [z(k ) h (k ) ]2
系统辨识之最小二乘
设
n
x (k) = n(k) + å ain(k - i) i =1
(4)
则式(3)可以写成
y(k) = -a1y(k -1) -!- an y(k - n) + b0u(k) + b1u(k -1) +!+
bnu(k - n) + x (k)
(5)
在测量 u(k) 时也有测量误差,系统内部也可能有噪声,应当考虑它们的影响。因此假定
ê ê
y(n
+
2)
ú ú
=
ê ê
- y(n + 1)
ê!úê
"
! - y(2)
u(n + 2)
u(2)
ú ú
´
"
"
"ú
ê ë
y(n
+
N
)úû
êë- y(n + N -1) ! - y(N ) u(n + N ) u(N )úû
éa1 ù
ê ê
!
êêêbb0n
ê! ê
ú ú ú ú ú ú ú
+
é x (n + 1) ù
个方程,即
y(n +1) = -a1 y(n) - a2 y(n -1) -!- an y(1) + b0u(n +1) + b1u(n) + !+ bnu(1) + x (n +1) y(n + 2) = -a1 y(n +1) - a2 y(n) -!- an y(2) +
b0u(n + 2) + b1u(n +1) +!+ bnu(2) + x (n + 2)
系统辨识—最小二乘法概要
最小二乘法参数辨识1 引言系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。
现代控制理论中的一个分支。
通过辨识建立数学模型的目的是估计表征系统行为的重要参数,建立一个能模仿真实系统行为的模型,用当前可测量的系统的输入和输出预测系统输出的未来演变,以及设计控制器。
对系统进行分析的主要问题是根据输入时间函数和系统的特性来确定输出信号。
对系统进行控制的主要问题是根据系统的特性设计控制输入,使输出满足预先规定的要求。
而系统辨识所研究的问题恰好是这些问题的逆问题。
通常,预先给定一个模型类μ={M}(即给定一类已知结构的模型),一类输入信号u和等价准则J=L(y,yM)(一般情况下,J是误差函数,是过程输出y和模型输出yM的一个泛函);然后选择使误差函数J达到最小的模型,作为辨识所要求的结果。
系统辨识包括两个方面:结构辨识和参数估计。
在实际的辨识过程中,随着使用的方法不同,结构辨识和参数估计这两个方面并不是截然分开的,而是可以交织在一起进行的。
2 系统辨识的目的在提出和解决一个辨识问题时,明确最终使用模型的目的是至关重要的。
它对模型类(模型结构)、输入信号和等价准则的选择都有很大的影响。
通过辨识建立数学模型通常有四个目的。
①估计具有特定物理意义的参数有些表征系统行为的重要参数是难以直接测量的,例如在生理、生态、环境、经济等系统中就常有这种情况。
这就需要通过能观测到的输入输出数据,用辨识的方法去估计那些参数。
②仿真仿真的核心是要建立一个能模仿真实系统行为的模型。
用于系统分析的仿真模型要求能真实反映系统的特性。
用于系统设计的仿真,则强调设计参数能正确地符合它本身的物理意义。
③预测这是辨识的一个重要应用方面,其目的是用迄今为止系统的可测量的输入和输出去预测系统输出的未来的演变。
例如最常见的气象预报,洪水预报,其他如太阳黑子预报,市场价格的预测,河流污染物含量的预测等。
预测模型辨识的等价准则主要是使预测误差平方和最小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方法一、最小二乘一次性算法:首先对最小二乘法的一次性辨识算法做简要介绍如下:过程的黑箱模型如图所示:其中u(k)和z(k)分别是过程的输入输出,)(1-z G 描述输入输出关系的模型,成为过程模型。
过程的输入输出关系可以描述成以下最小二乘格式: )()()(k n k h k z T +=θ (1)其中z(k)为系统输出,θ是待辨识的参数,h(k)是观测数据向量,n(k)是均值为0的随机噪声。
利用数据序列{z (k )}和{h (k )}极小化下列准则函数:∑=-=Lk T k h k z J 12])()([)(θθ (2)使J 最小的θ的估计值^θ,成为最小二乘估计值。
具体的对于时不变SISO 动态过程的数学模型为 )()()()()(11k n k u z B k z z A +=-- (3)应该利用过程的输入、输出数据确定)(1-z A 和)(1-Z B 的系数。
对于求解θ的估计值^θ,一般对模型的阶次a n ,b n 已定,且b a n n >;其次将(3)模型写成最小二乘格式 )()()(k n k h k z T +=θ (4)式中⎪⎩⎪⎨⎧=------=T n n T b a b a b b b a a a n k u k u n k z k z k h ],,,,,,,[)](,),1(),(,),1([)(2121 θ (5)L k ,,2,1 =因此结合式(4)(5)可以得到一个线性方程组L L L n H Z +=θ (6)其中⎩⎨⎧==T L TL L n n n n L z z z z )](),2(),1([)](),2(),1([ (7)对此可以分析得出,L H 矩阵的行数为),max (b a n n L -,列数b a n n +。
在过程的输入为2n 阶次,噪声为方差为1,均值为0的随机序列,数据长度)(b a n n L +>的情况下,取加权矩阵L Λ为正定的单位矩阵I ,可以得出:L T L L T L z H H H 1^)(-=θ (8) 其次,利用在Matlab 中编写M 文件,实现上述算法。
此次算法的实现,采用6阶M 序作为过程黑箱的输入;噪声采用方差为1,均值为0的随机数序列;黑箱模型假设为:y(k)-1.5y(k-1)+0.7y(k-2)=2u(k-1)+0.5u(k-2),则系统输出为Z(k)-1.5Z(k-1)+0.7Z(k-2)=2U(k-1)+0.5U(k-2)+n (k );模型的阶次2,2==b a n n ;数据长度取L=200。
程序清单如下见附录:最小二乘一次性算法Matlab 程序运行结果如下:图1 最小二乘一次性算法参数真值与估计值其中re 为真值,ans 为估计值^θ结果发现辨识出的参数与真值之间存在细微误差,这是由于系统噪声以及数据长度L 的限制引起的,最小二乘辨识法是一种无偏估计方法。
方法二、最小二乘递推算法:最小二乘一次性算法计算量大,并且浪费存储空间,不利于在线应用,由此引出最小二乘参数估计的递推算法,其基本思想是按观测次序一步一修正,即:^^^'(1)()[()()(1)]k K k z k h k k θθθ=-+--'11()()(1)()[()(1)()]k K k P k h k h k P k h k -Λ=--+'()[()()](1)P k I K k h k P k =--这里选取估计参数的初值为全0矩阵,P 矩阵设置参数为100的对角阵,增益阵K 初值设置为10。
程序清单如下见附录:最小二乘递推算法Matlab 程序。
程序运行结果如下:图2 最小二乘递推算法参数真值与估计值图3 最小二乘递推算法待估参数过渡过程附录:1. 最小二乘一次性算法Matlab 程序%最小二乘一次性算法%Z(k)=1.5*Z(k-1)-0.7*Z(k-2)+2*u(k-1)+0.5u(k-2)+v(k)% na=2,nb=2clearclctic %计时开始L=200; %数据长度%生成M序列6阶a1=1;a2=0;a3=1;a4=0;a5=1;a6=0;M=zeros(L,1);for i=1:1:LM(i)=a1;a1=a2;a2=a3;a3=a4;a4=a5;a5=a6;a6=xor(M(i),a1);end%噪声v=randn(1,L);% na=2, 设置测量输出z(1)到z(na)的值为0z=[];z(1)=0;z(2)=0;%产生输出序列z 从z(na+1)开始,即z(3)开始for i=3:Lz(i)=1.5*z(i-1)-0.7*z(i-2)+2*M(i-1)+0.5*M(i-2)+v(i-2); end%构造HL矩阵na=2;nb=2; %模型阶次,并找出最大者赋给max if na>nbmax=na;elsemax=nb;end%HL矩阵的的维数hang=L-max;lie=na+nb;%构建HL矩阵用z和M填充HL矩阵与na,nb的最大数max有关HL=zeros(hang,lie);a=na;for j=1:1:nafor i=1:1:hangHL(i,j)=-z(i+a-1);enda=a-1;endb=nb;for j=na+1:1:liefor i=1:1:hangHL(i,j)=M(i+b-1);endb=b-1;end%构建ZL矩阵ZL=zeros(hang,1);for i=1:1:hang;ZL(i)=z(i+max);end%参数估计值th=zeros(na+nb,1);th=inv((HL'*HL))*HL'*ZL;th;%比较估计误差re为真值,th为估计值re=[-1.5,0.7,2,0.5]th'toc %计时结束2. 最小二乘递推算法Matlab程序%最小二乘递推算法%Z(k)=1.5*Z(k-1)-0.7*Z(k-2)+2*u(k-1)+0.5u(k-2)+v(k)% na=2,nb=2clearclctic %计时开始L=200; %数据长度%生成M序列6阶a1=1;a2=0;a3=1;a4=0;a5=1;a6=0;M=zeros(L,1);for i=1:1:LM(i)=a1;a1=a2;a2=a3;a3=a4;a4=a5;a5=a6;a6=xor(M(i),a1);end%噪声v=randn(1,L);% na=2, 设置测量输出z(1)到z(na)的值为0z=[];z(1)=0;z(2)=0;%产生输出序列z 从z(na+1)开始,即z(3)开始for i=3:Lz(i)=1.5*z(i-1)-0.7*z(i-2)+2*M(i-1)+0.5*M(i-2)+v(i-2); endna=2;nb=2; %模型阶次,并找出最大者赋给max if na>nbmax=na;elsemax=nb;end%HL矩阵的的维数hang=L-max;lie=na+nb;%构建HL矩阵用z和M填充HL矩阵与na,nb的最大数max有关HL=zeros(hang,lie);a=na;for j=1:1:nafor i=1:1:hangHL(i,j)=-z(i+a-1);enda=a-1;endb=nb;for j=na+1:1:liefor i=1:1:hangHL(i,j)=M(i+b-1);endb=b-1;end%P是(na+nb)*(na+nb)维,K是(na+nb)*1维,h'是1*(na+nb)维%递推求解P=100*eye(na+nb);Pstore=zeros(na+nb,hang);Pstore(:,1)=[P(1,1),P(2,2),P(3,3),P(4,4)];th=zeros(na+nb,hang);% 预估参数初值矩阵K初值th(:,1)=[0.001;0.001;0.001;0.001];K=[10;10;10;10];for i=1:hangh=HL(i,:)';K=P*h*inv(h'*P*h+1);th(:,i+1)=th(:,i)+K*(z(i+na)-h'*th(:,i));P=(eye(na+nb)-K*h')*P;Pstore(:,i+1)=[P(1,1),P(2,2),P(3,3),P(4,4)];endre=[-1.5,0.7,2,0.5]th(:,hang+1)'toc %计时结束i=1:hang+1;figure(1)plot(i,th(1,:),i,th(2,:),i,th(3,:),i,th(4,:))title('待估参数过渡矩阵')figure(2)plot(i,Pstore(1,:),i,Pstore(2,:),i,Pstore(3,:),i,Pstore(4,:)) title('估计方差变化过程')。