教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析(2)

来源:网络收集 时间:2026-06-01
导读: k1=p0*h1*x1;%求出K的值 d1=z(k)-h1'*c0; c1=c0+k1*d1; %求被辨识参数c e1=c1-c0; %求参数当前值与上一次的值的差值 e2=e1./c0; %求参数的相对变化 e(:,k)=e2; %把当前相对变化的列向量加入误差矩阵的最后一列 c0=c

k1=p0*h1*x1;%求出K的值

d1=z(k)-h1'*c0; c1=c0+k1*d1; %求被辨识参数c 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<=E break; %如果参数收敛情况满足要求,终止计算 end %小循环结束 end %大循环结束

c,e %显示被辨识参数及其误差(收敛)情况 %分离参数

a1=c(1,:); a2=c(2,:); b1=c(3,:); b2=c(4,:); ea1=e(1,:); ea2=e(2,:);

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析

eb1=e(3,:); eb2=e(4,:); figure(2); %第二个图形 i=1:15; %横坐标从1到15

plot(i,a1,'r',i,a2,':',i,b1,'g',i,b2,':') %画出a1,a2,b1,b2的各次辨识结果

title('Parameter Identification with Recursive Least Squares Method') %图形标题

figure(3); %第三个图形 i=1:15; %横坐标从1到15

plot(i,ea1,'r',i,ea2,'g',i,eb1,'b',i,eb2,'r:') %画出a1,a2,b1,b2的各次辨识结果的收敛情况

title('Identification Precision') %图形标题

程序运行结果: >>

c =

0.0010 0 0.0010 -0.4984 -1.2328 -1.4951 -1.4962 -1.4991 -1.4998 -1.4999 0.0010 0 0.0010 0.0010 -0.2350 0.6913 0.6941 0.6990 0.6998 0.6999 0.0010 0 0.2509 1.2497 1.0665 1.0017 1.0020 1.0002 0.9999 0.9998 0.0010 0 -0.2489 0.7500 0.5668 0.5020 0.5016 0.5008 0.5002 0.5002

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析

0.03

0.02

0.01

Fig.1 Input Signal

1

Fig. 2 Parameter Identification with Recursive Least Squares Method

Identification Precision

300200

100

Fig.3 Identification Error

图3.8 最小二乘递推算法的参数辨识仿真

-1.5000 -1.5000 -1.5000 -1.4999 -1.4999 0.7000 0.7000 0.7000 0.7000 -0.7000 0.9999 0.9999 0.9999 0.9999 0.9999 0.5000 0.5000 0.5000 0.5000 0.5000 e =

0 0 0 -499.4200 1.4734 0.2128 0.0007 0.0020 0.0004 0.0000 0 0 0 0 -235.9916 -3.9416 0.0042 0.0070 0.0012 0.0001 0 0 249.8612 3.9816 -0.1466 -0.0607 0.0003 -0.0018 -0.0003 -0.0001 0 0 -249.8612 -4.0136 -0.2443 -0.1143 -0.0007 -0.0016 -0.0012 -0.0001 0.0001 0.0000 -0.0000 -0.0000 0.0000

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析

0.0001 -0.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0000 0.0000 -0.0000 -0.0004 0.0000 -0.0000 0.0000 -0.0000

表3.2 最小二乘递推算法的辨识结果

参 数 a

1 a2 b1 b2 真 值 -1.5 0.7 1.0 0.5 估计值 -1.4999 0.7 0.9999 0.5000

仿真结果表明,大约递推到第十步时,参数辨识的结果基本达到稳定状态,即a1=-1.4999, a2= 0.7000, b1=0.9999, b2=0.5000。此时,参数的相对变化量E 0.000000005。从整个辨识过程来看,精度的要求直接影响辨识的速度。虽然最终的精度可以达到很小,但开始阶段的相对误差会很大,从图3.8(3)图形中可看出,参数的最大相对误差会达到三为数

例3.6 考虑图3.10所示的仿真对象,图中, v(k)是服从N(0,1)分

1

G(z 1) B(z)

A(z 1)

,N(z

1

1

) D(z)

C(z 1)

A(z 1) 1 1.5az 1 0.7z 2 C(z 1)

1

1 1 2 B(z) 1.0z 0.5z 1 1 2D(z) 1 z 0.2z

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析

模型结构选用如下形式:

z(k) a1z(k 1) a2(k 2) b1u(k 1) b2u(k 2) v(k) d1v(k 1) d2(v(k 2)

增广最小二乘辨识程序流程如图3.11所示。Matlab6.0程序如下。

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析

%增广最小二乘辨识程序,在光盘中的文件名:FLch3ELSeg4.m clear

L=60; %4位移位寄存器产生的M序列的周期 y1=1;y2=1;y3=1;y4=0; %4个移位寄存器的输出初始值 for i=1:L;

x1=xor(y3,y4); %第一个移位寄存器的输入信号 x2=y1; %第二个移位寄存器的输入信号

x3=y2; %第三个移位寄存器的输入信号 x4=y3; %第四个移位寄存器的输入信号

y(i)=y4; %第四个移位寄存器的输出信号,M序列, 幅值"0"和"1",

if y(i)>0.5,u(i)=-1; %M序列的值为"1"时,辨识的输入信号取“-1” else u(i)=1; %M序列的值为"0"时,辨识的输入信号取“1” end

y1=x1;y2=x2;y3=x3;y4=x4; %为下一次的输入信号准备 end

figure(1); %画第一个图形

subplot(2,1,1); %画第一个图形的第一个子图 stem(u),grid on %画出M序列输入信号

v=randn(1,60); %产生一组60个正态分布的随机噪声 subplot(2,1,2); %画第一个图形的第二个子图 plot(v),grid on; %画出随机噪声信号

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析

u ,v %显示输入信号和噪声信号

z=zeros(7,60);zs=zeros(7,60);zm=zeros(7,60);zmd=zeros(7,60); %输出采样矩阵、不考虑噪声时系统输出矩阵、不考虑噪声时模型输出矩阵、模型输出矩阵的大小

z(2)=0; z(1)=0; zs(2)=0; zs(1)=0; zm(2)=0; zm(1)=0; zmd(2)=0; zmd(1)=0; %输出采样、不考虑噪声时系统输出、不考虑噪声时模型输出、模型输出的初值

c0=[0.001 0.001 0.001 0.001 0.001 0.001 0.001]'; %直接给出被辨识参数的初始值,即一个充分小的实向量

p0=10^6*eye(7,7); %直接给出初始状态P0,即一个充分大的实数单位矩阵

E=0.00000000005; %相对误差E=0.000000005 c=[c0,zeros(7,14)]; %被辨识参数矩阵的初始值及大小 e=zeros(7,15); %相对误差的初始值及大小 for k=3:60; %开始求K

z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+v(k)-v(k-1)+0.2*v(k-2); %系统在M序列输入下的输出采样信号

h1=[-z(k-1),-z(k-2),u(k-1),u(k-2),v(k),v(k-1),v(k-2)]'; %为求K(k)作准备

x=h1'*p0*h1+1; x1=inv(x); k1=p0*h1*x1; %K d1=z(k)-h1'*c0; c1=c0+k1*d1; %辨识参数c

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析

zs(k)=-1.5*z(k-1)+0.7*z(k-2)+u(k-1)+0.5*u(k-2); %系统在M序列的输入下的输出响应

zm(k)=[-z(k-1),-z(k-2),u(k-1),u(k-2)]*[c1(1);c …… 此处隐藏:4202字,全部文档内容请下载后查看。喜欢就下载吧 ……

Matlab 系统辨识 仿真 CH3,CH4,CH6程序注释与剖析(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/114708.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)