您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页系统辨识与自适应控制实验报告

系统辨识与自适应控制实验报告

来源:化拓教育网
系统辨识与自适应控制实验报告

一、 实验目的

1. 了解最小二乘算法的实现;

2. 使用最小二乘法一次完成算法、递推最小二乘法以及广义最小二乘法对系统进行辨识。

二、 实验内容

设单输入-单输出系统的差分方程为

y(k)=-

取真实值下表所列。

k u(k) 1 1.147 2 0.201 3 -0.787 4 -1.5 5 -1.052 6 0.866 7 1.152 8 1.157 9 0.626 10 0.433

=[ 1.2 0.715 0.39 0.35] ,输入数据如

k u(k) 11 -0.958 12 0.810 13 -0.044 14 0.947 15 -1.474 16 -0.719 17 -0.086 18 -1.099 19 1.450 20 1.151 作为测量值,

k u(k) 21 0.485 22 1.633 23 0.043 24 1.326 25 1.706 26 -0.340 27 0.0 28 1.144 29 1.177 30 -0.390 为均值为0,方差为

用的真实值利用查分方程求出0.1,0.5的不相关随机序列。

(1) 用最小二乘法估计参数

(2) 用递推最小二乘法估计参数θ。 (3) 用辅助变量法估计参数θ。 (4) 设

,用广义最小二乘法估计参数θ。

(5) 用增广矩阵法估计参数θ

详细分析和比较所获得的参数辨识结果,并说明上述参数辨识方法的优点。

三、 实验设备

Matlab软件,PC机一台。

四、实验原理

4.1 最小二乘一次完成算法 4.1.1 公式 辨识参数

LS(XTLX)L1XTLy

上式中

4.1.2 程序流程图

图 1最小二乘一次完成程序流程图

4.2 递推最小二乘算法

4.2.1 递推公式 公式为

其中,

4.2.2 算法流程图

图 2 递推最小二乘法实现程序框图

4.3 增广最小二乘递推算法 4.3.1 递推公式 公式为:

其中,

4.3.2 算法流程图

图 3 增广最小二乘法算法流程图

五、实验结果

5.1 最小二乘法一次完成实验结果 XL =

0 0 0 0 0 0 0 0 0 0 0.2010 1.1470 -0.4798 0 -0.7870 0.2010 1.0245 -0.4798 -1.50 -0.7870 -0.4439 0.9629 -1.2332 0.5840 -1.0939 0.5840 -0.57 0.7317 -0.7784 0.4885 -0.5996 0.8786 -0.2177 0.0144 0.5907 -1.1611 0.5277 -0.6284 -0.1521 0.1108 -0.6053 -0.2147 0.3208 -0.6014 0.0005 yL =

0 0 0.4798 -1.0245 0.4439 -0.9629 1.2332 -0.5840 1.0939

1.0245 -0.4439 0.9629 -1.2332 0.5840 -1.0939 0.5840 -0.57 0.7317 -0.7784 0.4885 -0.5996 0.8786 -0.2177 0.0144 0.5907 -1.1611 0.5277 -0.6284 -0.1521 0.1108 -0.6053 -0.2147 0.3208 -0.6014 -1.0520 0.8660 1.1520 1.5730 0.6260 0.4330 -0.9580 0.8100 -0.0440 0.9470 -1.4740 -0.7190 -0.0860 -1.0990 1.4500 1.1510 0.4850 1.6330 0.0430 1.3260 1.7060 -0.3400 0.00 1.1440 1.1770 -1.50 -1.0520 0.8660 1.1520 1.5730 0.6260 0.4330 -0.9580 0.8100 -0.0440 0.9470 -1.4740 -0.7190 -0.0860 -1.0990 1.4500 1.1510 0.4850 1.6330 0.0430 1.3260 1.7060 -0.3400 0.00 1.1440 -0.5840 0.57 -0.7317 0.7784 -0.4885 0.5996 -0.8786 0.2177 -0.0144 -0.5907 1.1611 -0.5277 0.6284 0.1521 -0.1108 0.6053 0.2147 -0.3208 0.6014 -0.0005 0.4302 辨识参数矩阵 c =

1.20 0.7150 0.3900 0.3500

a1 =1.20;a2 =0.7150;b1 =0.3900;b2 =0.3500 下图为输入、输出矩阵的根径图

图 4最小二乘法一次实现输入输出根径图

5.2 递推最小二乘法算法辨识结果 系统输出矩阵: y =

Columns 1 through 13

0 0 0.4798 -1.0245 0.4439 -0.9629 1.2332 -0.5840 1.0939 -0.5840 0.57 -0.7317 0.7784

Columns 14 through 26

-0.4885 0.5996 -0.8786 0.2177 -0.0144 -0.5907 1.1611 -0.5277 0.6284 0.1521 -0.1108 0.6053 0.2147

Columns 27 through 30

-0.3208 0.6014 -0.0005 0.4302

辨识参数矩阵(辨识过程执行26次即满足了误差要求): c =

Columns 1 through 13

0.0010 0 0.0010 0.5690 1.3863 1.20 1.20 1.20 1.20 1.20 1.20 1.20

0.0010 0 0.0010 0.0010 -0.2821 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150

0.0010 0 0.0719 1.0162 0.5392 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900

0.0010 0 0.4057 0.2403 0.3239 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500

Columns 14 through 26

1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20

0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150

0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900

0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 辨识误差矩阵: e =

Columns 1 through 13

0 0 0 567.9876 1.4365 0.1844 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

0 0 0 0 -283.1457 -3.5341 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

0 0 70.9263 13.1283 -0.4694 -0.2767 1.20 0.7150 0.3900 0.3500 1.20 0.7150 0.3900 0.3500 0.0000 -0.0000 0.0000

0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000

0 0 404.7388 -0.4078 0.3479 0.0807 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

Columns 14 through 26

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000

0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000

输入输出根径图

图 5 递推最小二乘法输入输出根径图

辨识参数过程 辨识误差:

图 6 递推最小二乘法辨识参数(辨识过程)

0.0000 0.0000

图 7 递推最小二乘法辨识过程中的误差曲线

5.3 增光最小二乘法实验结果 随机噪声 e0 =

Columns 1 through 13

0.8017 0.3112 0.0400 1.5927 2.1796 -0.2063 -0.4914 0.9967 -2.0484 1.3063 0.5351 0.5779

Columns 14 through 26

1.5297 0.0416 0.1831 -0.9543 -1.3474 -0.3873 -0.2250 -1.0173 1.38 -0.3959 0.3049 0.3154

Columns 27 through 30

0.0668 0.7128 0.0522 -1.3478 考虑噪声的系统输出矩阵 y =

Columns 1 through 13

0 0 1.3292 -2.76 3.0444 -3.4535 -1.2169 1.8419 -1.5061 0.3942 -3.0734 2.3278

Columns 14 through 26

-0.7705 1.1973 -0.1962 0.3711 -0.4941 -1.4314 -1.56 0.0303 1.8310 0.3403 -0.3472 0.5176

Columns 27 through 30

-1.1419 -0.4368 0.0696 1.6791 不考虑噪声的系统输出矩阵 ys =

Columns 1 through 13

0 0 0.4798 -2.4191 2.9124 -3.36 0.4197 0.5971 4.0637 1.2987 3.4635

-3.4509 0.1092 -1.3596 1.5440 0.2076 4.7453

Columns 14 through 26

-1.3584 -0.0452 -1.6585 -1.3303 -0.7543 0.0873 2.8846 -0.1526 2.2396 1.8786 -2.4398 -1.3358 1.4562

Columns 27 through 30

-0.1371 1.7331 2.2914 1.0575 不考虑噪声时的模型输出 ym =

Columns 1 through 13

0 0 0.8502 -2.7124 3.2115 -4.4770 -3.4086 0.1092 -1.3596 1.5440 0.2076 4.7453

Columns 14 through 26

-1.3584 -0.0452 -1.6585 -1.3303 -0.7543 0.0873 -0.1526 2.2396 1.8786 -2.4398 -1.3358 1.4562

Columns 27 through 30

-0.1371 1.7331 2.2914 1.0575 考虑噪声时的模型输出 ymd =

Columns 1 through 13

0 0 1.3292 -2.76 3.0444 -3.4535 -1.2169 1.8419 -1.5061 0.3942 -3.0734 2.3278

Columns 14 through 26

-0.7705 1.1973 -0.1962 0.3711 -0.4941 -1.4314 -1.56 0.0303 1.8310 0.3403 -0.3472 0.5176

Columns 27 through 30

-1.1419 -0.4368 0.0696 1.6791 辨识参数矩阵: c =

Columns 1 through 13

0.0010 0 0.0010 1.5171 1.6829 1.8435 1.6529 1.20 1.20 1.20 1.20 1.20

0.0010 0 0.0010 0.0010 -0.1409 0.7419 0.7388 0.7150 0.7150 0.7150 0.7150 0.7150

0.0010 0 0.1268 1.0576 0.8180 0.3002 0.3921 0.3900 0.3900 0.3900 0.3900 0.3900

0.0010 0 0.7190 0.67 0.7019 0.4396 4.5771 2.8846 4.0637 1.2987 1.8250 0.6281 0.4168 0.1656

0.3522 0.3500 0.3500 0.3500 0.3500 0.3500

0.0010 0 -0.1988 0.0261 0.0572 -0.0988 -0.0852 1.0030 1.0000 1.0000 1.0000 1.0000 1.0000

0.0010 0 0.2540 0.6848 0.6545 1.3496 1.4284 1.6100 1.20 1.20 1.20 1.20 1.20

0.0010 0 0.4430 0.0984 0.1605 0.2657 0.6386 0.7305 0.7150 0.7150 0.7150 0.7150 0.7150

Columns 14 through 26

1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20

0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150

0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900 0.3900

0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500 0.3500

1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000

1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20 1.20

0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150 0.7150

Columns 27 through 30

1.20 1.20 1.20 1.20 0.7150 0.7150 0.7150 0.7150 0.3900 0.3900 0.3900 0.3900 0.3500 0.3500 0.3500 0.3500 1.0000 1.0000 1.0000 1.0000 1.20 1.20 1.20 1.20 0.7150 0.7150 0.7150 0.7150 辨识参数误差矩阵 e =

1.0e+003 *

Columns 1 through 13

0 0 0 1.5161 0.0001 0.0001 -0.0001 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000

0 0 0 0 -0.1419 -0.0063 1.20 0.7150 0.3900 0.3500 1.0000 1.20 0.7150 -0.0000 -0.0002

0.0002 -0.0000 0.0000 0.0000 -0.0000 -0.0000

0 0 0.1258 0.0073 -0.0002 -0.0006 0.0004 -0.0001 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000

0 0 0.7180 -0.0001 0.0000 -0.0004 -0.0006 0.0011 -0.0000 0.0000 -0.0000 -0.0000 0.0000

0 0 -0.1998 -0.0011 0.0012 -0.0027 -0.0001 -0.0128 -0.0000 0.0000 0.0000 0.0000 -0.0000

0 0 0.2530 0.0017 -0.0000 0.0011 0.0001 0.0001 0.0000 -0.0000 0.0000 0.0000 0.0000

0 0 0.4420 -0.0008 0.0006 0.0007 0.0001 -0.0000 0.0000 0.0000 -0.0000 0.0000

Columns 14 through 26

0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000

0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000

-0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000

0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000

-0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000

-0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000

Columns 27 through 30

0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000

0.0000 -0.0000 0.0000 0.0000 输入输出根径图:

0.0014 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000

图 8 增广最小二乘法输入输出根径图

辨识过程的参数:

图 9 增广最小二乘法辨识过程参数

辨识过程中的误差

图 10 增广最小二乘法辨识过程中的误差

系统输出矩阵和模型输出矩阵的对比:

图 11 系统输出矩阵和模型输出矩阵的对比图

六、结果分析

利用最小二乘法对系统进行辨识,能够在最小误差平方的意义上对实验数据实现最好的拟合。本实验完成过程中使用以下三种方法:最小二乘法一次完成、递推最小二乘法、增广矩阵法。

1. 在辨识方法上的比较:最小二乘法的一次实现是离线辨识,需要

采集的数据量较大,一次完成计算;递推最小二乘法为在线计算,在某个初始条件下启动,按照递推算法,随着信息的不断货的而不断修正模型参数的估计值;增光矩阵法为在线算法,可以处理噪声不相关时的系统辨识问题。而前面两种方法则只能是将噪声视白噪声才可以进行系统的辨识(均值为0的噪声)。

2.

辨识结果的比较:从实验所得数据结果可以看出:最小二乘法一次实现算法较为简单,实现容易;递推最小二乘法辨识过程中出现了较大的误差,这可以从误差矩阵的图形看出,虽然最后辨识误差为0,但却经历了误差较大的结果;增广矩阵法的算法实现与递推最小二乘法的实现接近,但区别在于前者可以处理不相关噪声的问题,在辨识过程中,也会产生一定的误差,这是在线辨识与离线辨识的区别所在。

七、附录(程序)

最小二乘法一次实现:

%最小二乘法一次实现

u=[1.147,0.201,-0.787,-1.5,-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.,1.144,1.177,-0.390];

y=zeros(1,30); %产生输出序列初值

e=randn(1,30); %产生随机噪声 for k=3:30

y(k)=-1.2*y(k-1)-0.715*y(k-2)+0.39*u(k-1)+0.35*u(k-2); %生成输出序列 end

subplot(3,1,1)

stem(u) %绘制输入矩阵的根径图 subplot(3,1,2) i=1:30;

plot(i,y) %绘制输出矩阵 subplot(3,1,3)

stem(y)

%绘制输出矩阵的根径图 grid on;

u,y %输出输入和输出矩阵 for

k=3:30 %利用循环,表示出矩阵XL和yL

x1=[-y(k-1) -y(k-2) u(k-1) u(k-2)]; y1=[y(k)];

XL(k,:)=x1 %每次循环都增加XL的一行

yL(k,:)=y1 %每次循环都增加yL的一行 end

c1=XL'*XL; %利用最小二乘法公式对参数进行辨识 c2=inv(c1);c3=XL'*yL; c=c2*c3

a1=c(1),a2=c(2),b1=c(3),b2=c(4) %输出辨识参数

递推最小二乘法:

%递推最小二乘法实现参数估计 clc;

u=[1.147,0.201,-0.787,-1.5,-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.,1.144,1.177,-0.390];

y=zeros(1,30); %给输出矩阵赋初值 e0=randn(1,30); %产生随机误差 for k=3:16 %产生随机噪声 v(k)=e0(k)+1.2*e0(k-1)+0.715*e0(k-2); end for k=3:30

y(k)=-1.2*y(k-1)-0.715*y(k-2)+0.39*u(k-1)+0.35*u(k-2); %产生输出矩阵 end

figure(1); %第一个图形,绘制出输入、输出的根径图 subplot(3,1,1) stem(u) subplot(3,1,2) i=1:30; plot(i,y)

subplot(3,1,3) stem(y) grid on; u,y,v

c0=[0.001 0.001 0.001 0.001]'; %为待估参数赋初值

p0=10^6*eye(4,4); %为p0赋初值,为递推做准备 E=0.0000000005; %规定误差允许范围 c=[c0,zeros(4,29)]; %待估矩阵(经过多次估计后全部值)

e=zeros(4,30); %估计误差矩阵赋初值 for k=3:30

x1=[-y(k-1) -y(k-2) u(k-1) u(k-2)]'; h=1+x1'*p0*x1;

k1=inv(h); %递推公式:K(N+1)=1/[1+x'(N+1)*P(N)*x(N+1)] h1=k1*p0*x1; d1=y(k)-x1'*c0;

c1=c0+h1*d1; %前面三句是使用递推公式计算待估计的参数:c(K+1)=c(N)+K(N+1)*P(N)*x(N+1)*[y(N+1)-x'(N+1)*c(N)]

e1=c1-c0; %求估计参数的误差 e2=e1./c0;

e(:,k)=e2; %完善误差矩阵e c0=c1; %为下次循环做准备 c(:,k)=c1; %每次循环都使待估计参数矩阵增加一列,记录每一次的估计值

p1=p0-h1*x1'*p0; %利用递推公式:P(N+1)=P(N)-K(N+1)*P(N)*x(N+1)*x'(N+1)P(N)来计算P(N+1)

p0=p1; %为下次循环做准备 if e2<=E %判断估计参数与实际参数之间的误差是否满足要求

m=k %若满足要求,则跳出循环,并且输出停止估计的次数 break; end end

a1=c(1,1:k);a2=c(2,1:k);b1=c(3,1:k);b2=c(4,1:k);ea1=e(1,1:k);ea2=e(2,1:k);eb1=e(3,1:k); %输出最终估计参数的矩阵,包含所有估计值

eb2=e(4,1:k); %(由于矩阵初始值为0,若不改变矩阵值,则仍为0,所以,在循环跳出时,记录循环次数,不输出后续的0) c,e %输出辨识参数矩阵和辨识误差矩阵 figure(2); i=1:k;

plot(i,a1,'r',i,a2,':',i,b1,'g',i,b2,'y') %第二个图

形,用于绘制所估计的参数全部估计过程

gtext('\\leftarrow') %点击鼠标,标注左箭头

gtext('a1') %点击鼠标,标注a1曲线

gtext('\\leftarrow') %点击鼠标,标注左箭头

gtext('a2') %点击鼠标,标注a2曲线

gtext('\\leftarrow') gtext('b1')

gtext('\\leftarrow') gtext('b2') figure(3); i=1:k;

plot(i,ea1,'r',i,ea2,':',i,eb1,'g',i,eb2,'y') %第三个图形,绘制辨识的误差

title('Identification Precision') %为图形注释标题

gtext('\\leftarrow') %点击鼠标,标注左箭头

gtext('ea1') %点击鼠标,标注ea1曲线 gtext('\\leftarrow') gtext('ea2') gtext('\\leftarrow') gtext('eb1') gtext('\\leftarrow') gtext('eb2')

增广最小二乘法

clc;

u=[1.147,0.201,-0.787,-1.5,-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.,1.144,1.177,-0.390];

y=zeros(1,30); %给输出矩阵赋初值

ys=zeros(1,30); %ys为不考虑噪声时的输出矩阵,为其赋初值 ym=zeros(1,30); %ym为模型输出矩阵(不考虑择噪声) ymd=zeros(1,30); %ymd为模型输出矩阵(考虑择噪声) e0=sqrt(0.1)+randn(1,30) %产生随机序列e0 for k=3:30

y(k)=-1.2*y(k-1)-0.715*y(k-2)+0.39*u(k-1)+0.35*u(k-2)+e0(k)+1.2*e0(k-1)+0.715*e0(k-2); %产生输出矩阵(带噪声)

ys(k)=-1.2*y(k-1)-0.715*y(k-2)+0.39*u(k-1)+0.35*u(k-2); %产生输出矩阵(不带噪声) end

figure(1); %第一个图形,绘制出输入、输出的根径图 subplot(3,1,1) stem(u) subplot(3,1,2) i=1:30; plot(i,y) subplot(313) stem(y) grid on;

u,y,ys %输出输入、输出矩阵 c0=[0.001 0.001 0.001 0.001 0.001 0.001 0.001]'; %c0为待估计参数的初始值,辨识参数为7个,所以为7行

p0=10^6*eye(7,7); %p0为递推公式中的变量,设置其初始值为单位阵

E=0.0000000000005; %设定误差允许值 c=[c0,zeros(7,29)]; %c为辨识参数矩阵,设置其初始值

e=zeros(7,30); %e为辨识误差矩阵,该句用于设置其初值 for k=3:30

x1=[-y(k-1) -y(k-2) u(k-1) u(k-2) e0(k) e0(k-1) e0(k-2)]';

h=1+x1'*p0*x1;k1=inv(h); %该两句为利用递推公式K(N+1)=1/[1+x'(N+1)*P(N)*x(N+1)]

h1=k1*p0*x1; d1=y(k)-x1'*c0;

c1=c0+h1*d1; %前面三句是使用递推公式计算待估计的参数:c(K+1)=c(N)+K(N+1)*P(N)*x(N+1)*[y(N+1)-x'(N+1)*c(N)]

ym(k)=[-y(k-1) -y(k-2) u(k-1) u(k-2)]*[c1(1);c1(2);c1(3);c1(4)]; %产生不考虑噪声时的模型输出

ymd(k)=x1'*c1; %产生考虑噪声时的模型输出

e1=c1-c0; %求估计参数的误差 e2=e1./c0;

e(:,k)=e2; %完善误差矩阵e c0=c1; %为下次循环做准备 c(:,k)=c1; %每次循环都使待估计参数矩阵增加一列,记录每一次的估计值

p1=p0-h1*x1'*p0; %利用递推公式:P(N+1)=P(N)-K(N+1)*P(N)*x(N+1)*x'(N+1)P(N)来计算P(N+1)

p0=p1; %为下次循环做准备

if e2<=E %判断估计参数与实际参数之间的误差是否满足要求

m=k; %若满足要求,则跳出循环,并且输出停止估计的次数 break; end end

c,e %输出辨识矩阵和辨识误差矩阵

ym,ymd %输出带噪声的输出矩阵和不带噪声的输出矩阵

a1=c(1,1:k);a2=c(2,1:k);b1=c(3,1:k);b2=c(4,1:k);d0=c(5,1:k);d1=c(6,1:k);d2=c(6,1:k); %输出辨识矩阵(由于矩阵初始值为0,若不改变矩阵值,则仍为0,所以,在循环跳出时,记录循环次数,不输出后续的0)

ea1=e(1,1:k);ea2=e(2,1:k);eb1=e(3,1:k);eb2=e(4,1:k);ed0=e(5,1:k);ed1=e(6,1:k);ed2=e(7,1:k); %输出辨识误差矩阵,共7个 figure(2); i=1:k;

plot(i,a1,'r',i,a2,':',i,b1,'g',i,b2,'.',i,d0,'y',i,d1,':r',i,d2,':y'); %第二个图形,绘制出各个辨识参数

title('辨识参数图形') %标注标题

gtext('\\leftarrow') %点击鼠标,标注左箭头

gtext('a1') %点击鼠标,标注a1曲线

gtext('\\leftarrow') %点击鼠标,标注左箭头

gtext('a2') %点击鼠标,标注a2曲线

gtext('\\leftarrow') gtext('b1')

gtext('\\leftarrow') gtext('b2')

gtext('\\leftarrow') gtext('d0')

gtext('\\leftarrow') gtext('d1')

gtext('\\leftarrow') gtext('d2') figure(3) i=1:k;

plot(i,ea1,'r',i,ea2,':',i,eb1,'g',i,eb2,'.',i,ed0,'y',i,ed1,':r',i,ed2,':y') %第三个图形,绘制辨识的误差

title('Identification Precision') %为图形注释标题

gtext('\\leftarrow') %点击鼠标,标注左箭头

gtext('ea1') %点击鼠标,标注ea1曲线 gtext('\\leftarrow') gtext('ea2') gtext('\\leftarrow') gtext('eb1') gtext('\\leftarrow') gtext('eb2') gtext('\\leftarrow') gtext('ed0') gtext('\\leftarrow') gtext('ed1') gtext('\\leftarrow') gtext('ed2')

figure(4) %个图形,绘制输出矩阵(系统输出和模型输出)subplot(411) i=1:30;

plot(i,y) %噪声时的系统输出矩阵图形 title('带噪声时的系统输出') subplot(412) i=1:30;

plot(i,ys) %不考虑噪声时的系统输出矩阵图形 title('不带噪声时的系统输出') subplot(413) i=1:30;

plot(i,ym) %考虑噪声时的模型输出矩阵图形 title('不带噪声时的模型输出') subplot(414) i=1:30;

plot(i,ymd) %虑噪声时的模型输出矩阵图形 title('带噪声时的模型输出')

第四绘制考虑绘制绘制不绘制考

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务