一.编制基本最小二乘算法和加权最小二乘算法(包括一次完成
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.编制基本最小二乘算法和加权最小二乘算法(包括一次完成算法和递推算法)程序,并进行测试。
辨识模型:() 1.5(1)0.7(2)(1)0.5(2)()z k z k z k u k u k v k --+-=-+-+,()v k 是服从标准正态分布的噪声,()u k 是幅度为1的7阶M 序列。
1.一次完成最小二乘算法:
编程思路:对此辨识模型来说2a b n n ==,0.99β= ,
(3)(4),(2)L z z Z Z L ⎛⎫ ⎪ ⎪= ⎪ ⎪+⎝⎭(1)(2)()(1)(2)z k z k h k u k u k --⎛⎫
⎪-- ⎪= ⎪
- ⎪-⎝⎭
,(3)(4)(2)T T
L T h h H h L ⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪+⎝⎭,当L
Λ(加权矩阵)为单位阵时,即为最小二乘基本一次完成算法,否则为最小二乘加权一次完成算法。
程序运行结果:
最小二乘基本一次完成算法: compare1 =
-1.5000 -1.4967 0.7000 0.6956 1.0000 1.0386 0.5000 0.5076
最小二乘加权一次完成算法: compare2 =
-1.5000 -1.5084 0.7000 0.7039 1.0000 1.0546 0.5000 0.5238 2.最小二乘递推算法:
编程思路:1()(1)()[()(1)()1/()]()(1)()[()()(1)]()[()()](1)T T T K k P k h k h k P k h k k k k K k z k h k k P k I K k h k P k θθθ-⎧=--+Λ⎪
=-+--⎨⎪=--⎩
,并且给定()P k ,
()k θ 的初值。
()P k 为充分大的实数,()k θ为充分小的向量。
()k Λ为1时,为
最小二乘递推算法(RLS ),否则为加权最小二乘递推算法(RWLS )。
程序运行结果:
050100150200250300350
-3
-2
-1
1
2
3
4
最小二乘基本递推算法参数估计
a1a2b1b2
050100150200250300350
-2
-1.5-1-0.500.511.52最小二乘加权递推算法参数估计
a1a2b1b2
可以看出,最小二乘一次完成算法和最小二乘递推算法估计出的系统参数和给定的参数相近,因此利用这两种方法可以辨识系统。
二.实现最小二乘算法的适应算法和进行偏差补偿的最小二乘算法。
1.最小二乘适应算法 (1)遗忘因子法:
a )一次完成算法:
编程思路:给数据加上衰减因子(01)ββ<≤,
12*(1)(2),()L L L z z Z Z L ββ--⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭12*(1)(2)()L T L T L T h h H h L ββ--⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭,**1**()T T L L L L H H H Z θ-=。
程序运行结果:
最小二乘遗忘因子法一次完成算法: compare1 =
-1.5000 -1.4677 0.7000 0.6925 1.0000 1.0537 0.5000 0.6236 b )递推算法: 编程思路:
12
()(1)()[()(1)()]()(1)()[()()(1)],(01)()[()()](1)/T T T K k P k h k h k P k h k k k K k z k h k k P k I K k h k P k μθθθμβμμ-⎧=--+⎪=-+--=<≤⎨⎪=--⎩
相比于最小二乘基本递推算法加了遗忘因子β。
程序运行结果:
050100150200250300
-3
-2
-1
1
2
3
4
最小二乘遗忘因子法递推算法参数估计
a1a2b1b2
最小二乘遗忘因子法递推算法:
ans =
-1.5065 0.7142 0.9547 0.4239
程序中0.99β=,本来想实现β从0.9每隔0.01一直到11种情况下的参数估计情况,但是循环一直写不对,就没再写。
(2)限定记忆法: 编程思路: 1(1,)(,)()[1()(,)()](1,)(,)(1,)[()()(,)](1,)[(1,)()](,)T T
T
K k k L P k k l h k h k P k k L h k k k L k k L K k k L z k h k k k L P k k L I K k k L h k P k k L θθθ-⎧++=+-+⎪++=+-++-+⎨⎪++=-+++⎩
去老 1
(,)(,1)()[1()(,1)()](,)(,1)(,)[()()(,1)](,)[(,)()](,1)T T
T K k k L P k k L h k L h k L P k k L h k L k k L k k L K k k L z k L h k L k k L P k k L I K k k L h k L P k k L θθθ-⎧+=+-++++-+⎪+=+-+++-++-⎨⎪
+=-+++-⎩
更新 给定初值,利用上式不断迭代,即可获得最终辨识结果。
程序运行结果:
050100150200250300350
-1.5
-1
-0.5
0.5
1
1.5
限定记忆递推算法
a1a2b1b2
限定记忆递推算法: ans =
-1.4589 0.6724 1.0278 0.5119 theta1 = -1.4579 0.6699 1.0314 0.5079
2.偏差补偿最小二乘算法(RCLS ):
编程思路:1
2
2()(1)()[()(1)()1]()(1)()[()()(1)]
()[()()](1)
[()()(1)]()(1)()(1)()1()
[1(1)()]
000()a b T T LS LS LS T T LS T w c LS n n c K k P k h k h k P k h k k k K k z k h k k P k I K k h k P k z k h k k J k J k h k P k h k J k k k D k I D k θθθθσθθθ-=--+=-+--=----=-+
-+=
+-⎡⎤=⎢⎥
⎢⎥⎣⎦
2()()(1)
LS w c k k P k D k θσθ=+-
程序运行结果:
偏差补偿最小二乘算法:
ans =
-1.6010 0.8123 1.0368
0.3411
50
100
150
200
250
300-5-4-3-2-1012345偏差补偿最小二乘算法参数估计
a1a2b1b2
调试过程中遇到的问题:(1)矩阵尺寸对应问题,尤其是后面的算法:限定记忆法,偏差补偿最小二乘法,matlab中矩阵运算一定要尺寸对应上,所以事
先得计算好矩阵行值列值,而且得赋初值。
(2)编写偏差补偿最小二乘递推算法的时候从课件上抄公式漏掉了转置,结果调了半天也不知道怎么回事,后来再核对了一遍
公式才发现。
(3)循环问题,写循环遇到各种问题,解决了一些,还是比较难的。
由于每个程序都要()
v k,()
u k序列,我采用的方法是把产生的数的序列保存成.mat文件,直接调用就行。
最小二乘参数估计的各种程序都在文件夹里。