yincwxa2006的个人博客分享 http://blog.sciencenet.cn/u/yincwxa2006

博文

[转载]【建模与辨识程序】梯度校正的最小二乘辨识程序

已有 349 次阅读 2019-11-4 14:15 |系统分类:科研笔记|文章来源:转载

梯度校正的最小二乘辨识程序

%FLch4GAeg1
clear
u=[-1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1];
y=[0,-2,-6,-7,-7,-3,5,7,3,-1,5,3,-5,-3,1,-1,1,-5,-7,-7];
%
画出uy图形
figure(1), subplot(2,1,1), stem(u), subplot(2,1,2), stem(y), hold on
k=1:20
plot(k,y)
%
给出初始值
h1=[-1,0,0]';h2=[-1,-1,0]';g=[0,0,0]';I=[1,0,0;0,1/2,0;0,0,1/4];
h=[h1,h2,zeros(3,16)];
%
计算输入样本数据h(k)
for k=3:18
h(:,k)=[u(k),u(k-1),u(k-2)]';
end
%
计算出权矩阵R(k)和估计值g
for k=1:18
a=h(1,k)^2+(h(2,k)^2)/2+(h(3,k)^2)/4;%
按照式(4.45)开始计算权矩阵
a1=1/a;
R=a1*I;%
按照式(4.45)计算出权矩阵
g(:,k+1)=g(:,k)+R*h(:,k)*(y(k+1)-h(:,k)'*g(:,k));%
按照式(4.44)计算脉冲响应估计值
end
%
画出图形
g1=g(1,; g2=g(2,; g3=g(3,;
figure(2)
k=1:19;
subplot(121)
plot(k,g1,'r',k,g2,'g',k,g3,'b'),grid on
%
计算模型输出值ym及系统输出与模型输出之间的误差Ey
for k=1:18
ym(k)=h(:,k)'*g(:,k); Ey(k)=y(k+1)-ym(k);
end
k=1:18;
subplot(122)
plot(k,Ey),grid on
g, ym, Ey %
显示脉冲响应估计值、模型输出值及系统输出与模型输出之间的误差
figure(3)%
画出脉冲响应曲线
x=0:1:3;y=[0,g(1,18),g(2,18),g(3,18)];
xi=linspace(0,3);
yi=interp1(x,y,xi,'cubic');%
三次插值
plot(x,y,'o',xi,yi,'m'),grid on%
画出脉冲响应估计值及其三次插值曲线

 




http://blog.sciencenet.cn/blog-748007-1204782.html

上一篇:[转载]【建模与辨识程序】增广的最小二乘辨识程序
下一篇:[转载]【建模与辨识程序】递推的极大似然辨识程序

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2020-2-21 02:11

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部