系统辨识作业2复习课程Word文档格式.docx
《系统辨识作业2复习课程Word文档格式.docx》由会员分享,可在线阅读,更多相关《系统辨识作业2复习课程Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
一次完成算法对系统辨识的Matlab程序见附录:
部分输入、输出数据如下,全部的输入输出数据用图1.1所示
输入数据u(k)=Columns1through16
00111100001
00110
输出数据z(k)=Columns1through9
001.23723.93316.49877.99097.71326.59475.4523
Columns10through18
3.22120.84190.62431.71100.71261.07122.80373.80474.6372
图1.1输入数据u(k)和输出数据z(k)
的值为(部分):
HL=
-5.4523-6.594700
-3.2212-5.452300
-0.8419-3.22121.00000
…………
-3.5706-5.194400
-0.6787-3.570600
2.3020-0.678700
ZL=
3.2212
0.8419
0.6243
1.7110
0.7126
…
0.6787
-2.3020
-3.8270
一次完成辨识后
的值为:
theta=-1.49180.69321.05410.4691
J(theta)=493.1837
2、递推最小二乘法辨识系统:
初始条件:
递推最小二乘法辨识系统的Matlab程序见附录:
其参数收敛曲线如图2.1
图2.1参数收敛曲线
新息
随着递推次数K的变化曲线如图2.2中依次所示:
图2.2新息、残差、准则函数变化曲线
3、仿真对象和辨识出的模型进行阶跃响应对比分析
仿真对象和辨识模型阶跃响应对比Matlab程序见附录:
图3.1分别给出了一次完成算法辨识出来系统和辨识对象的阶跃响应对比图,递推算法辨识出来系统和辨识对象的阶跃响应对比图。
附录:
一次完成和递推法系统辨识Matlab程序
%%最小二乘法辨识系统;
%叠加噪声为1/(1-1.5z^(-1)+0.7z^(-2));
%化为差分方程形式为;
%e(k)=v(k)+1.5e(k-1)-0.7e(k-2);
%仿真对象为(1z^-1+0.5z^-2)/(1-1.5z^-1+0.7z^-2);
%y(k)-1.5y(k-1)+0.7y(k-2)=u(k-1)+0.5u(k-2);
%辨识模型为;
%z(k)=-a1z(k-1)-a2z(k-2)+b1u(k-1)+b2u(k-2)+v(k);
%================================
%主函数;
functionmain
closeall;
clc;
clear;
%================
%产生逆M序列;
X=[0,1,1,0,1,0,0,1];
%寄存器初始值;
F=[0,1,1,1,0,0,0,1];
%特征多项式;
N=1000;
%生成长度;
M=[];
%存放产生的M序列;
%产生逆M序列函数调用;
out=IMxulie(X,F,N);
%阶梯图输出逆M序列;
figure
(1);
M=out;
subplot(2,1,1);
stairs(M);
xlabel('
k'
)
ylabel('
逆M序列'
)
title('
移位寄存器产生的逆M序列'
);
gridon;
%=================
%一次完成最小二乘法辨识系统;
%y(k)=1.5y(k-1)-0.7y(k-2)+u(k-1)+0.5u(k-2);
%z(k)=y(k)+e(k);
%即z(k)=1.5y(k-1)-0.7y(k-2)+u(k-1)+0.5u(k-2)+v(k)+1.5e(k-1)-0.7e(k-2);
%产生均值为0,方差为1的白噪声;
v=[];
v=randn(1,600);
%产生系统辨识所需要数据;
y
(1)=0;
y
(2)=0;
e
(1)=0;
e
(2)=0;
fori=3:
600
y(i)=1.5*y(i-1)-0.7*y(i-2)+M(i-1)+0.5*M(i-2);
e(i)=v(i)+1.5*e(i-1)-0.7*e(i-2);
z(i)=y(i)+e(i);
end
subplot(2,1,2);
stem(z);
幅度值'
输出数据'
fori=10:
509
H(i-9,:
)=[-z(i-1),-z(i-2),M(i-1),M(i-2)];
ZL=(z(10:
509))'
;
ES=inv(H'
*H)*H'
*ZL;
%inv用来求矩阵的逆矩阵;
%输出辨识的参数;
disp('
输入数据u(k)='
disp(M);
输出数据z(k)='
disp(z);
HL='
disp(H);
ZL='
disp(ZL);
theta='
disp(ES);
%由估计值计算准则函数的值;
J=(ZL-H*ES)'
*(ZL-H*ES);
J(theta)='
disp(J);
%递推最小二乘法辨识系统;
%一式s(k)=s(k-1)+k(k)(z(k)-h'
(k)s(k-1));
%二式k(k)=p(k-1)h(k)[h'
(k)p(k-1)h(k)+1/w(k)]'
%三式p(k)=[I-k(k)h'
(k)]p(k-1);
%s(0)=[0.01,0.01,...0.01]'
%p(0)=10^6I;
%新息ZX=z(k)-H'
(k)S(k-1);
%残差E=z(k)-H'
(k)S(k);
%准则函数J(k)
%递推求解;
z1=z(10:
509);
M1=M(10:
P=10^6*eye(4);
S(:
1)=[0.01;
0.01;
0.01]'
2)=[0.01;
J1
(1)=0;
J1
(2)=0;
500
h=[-z1(i-1);
-z1(i-2);
M1(i-1);
M1(i-2)];
K=P*h*inv(h'
*P*h+1);
S(:
i)=S(:
i-1)+K*(z1(i)-h'
*S(:
i-1));
%待估计参数变化;
zx(i)=z1(i)-h'
i-1);
%新息变化;
E(i)=z1(i)-h'
i);
%残差变化;
J1(i)=J1(i-1)+(zx(i)*zx(i))/(h'
%准则函数变化;
P=(eye(4,4)-K*h'
)*P;
%待估计参数过度曲线;
figure
(2);
i=1:
500;
plot(i,S(1,:
),i,S(2,:
),i,S(3,:
),i,S(4,:
));
待估计参数过度过程'
legend('
参数a1的过渡过程'
'
参数a2的过渡过程'
参数b1的过渡过程'
参数b2的过渡过程'
%disp(S(:
500));
%新息变化曲线;
figure(3);
subplot(3,1,1);
plot(i,zx(i));
新息变化曲线'
%残差变化曲线;
subplot(3,1,2);
plot(i,E(i));
残差变化曲线'
%准则函数变化曲线;
subplot(3,1,3);
plot(i,J1(i));
准则函数变化曲线'
%disp(J1(500));
%分别对一次完成,递推和辨识对象阶跃响应对比;
%%一次完成法辨识阶跃响应对比;
%一次辨识后对仿真对象和辨识模型进行阶跃响应对比;
figure(4);
%辨识模型阶跃响应;
%z(k)+a1z(k-1)+a2z(k-2)=b1u(k-1)+b2u(k-2);
a=[1,ES
(1),ES
(2)];
b=[0,ES(3),ES(4)];
%求离散系统阶跃响应;
gn=dstep(b,a,30);
stem(gn,'
ro'
holdon;
%加阶跃响应后辨识对象的系统函数为:
%(1+1z^-1+0.5z^-2)/(1-1.5z^-1+0.7z^-2);
b1=[0,1.0,0.5];
a1=[1,-1.5,0.7];
gn1=dstep(b1,a1,30);
stem(gn1,'
bx'
holdoff;
幅值h(k)'
辨识对象和一次完成法辨识系统阶跃响应对比'
估计值'
理论值'
%%递推法辨识阶跃响应对比;
a=[1,S(1,500),S(2,500)];
b=[0,S(3,500),S(4,500)];
辨识对象和递推法辨识系统阶跃响应对比'
%子函数,产生周期大于500的逆M序列函数;
functionout=IMxulie(X,F,N)
n=N;
X1=X;
F1=F;
s=1;
fori=1:
n
Y=X1;
t=F1(8)*Y(8);
forj=7:
-1:
1
t=xor(t,F1(j)*Y(j));
end
X1
(1)=t;
fork=2:
8
X1(k)=Y(k-1);
U(i)=Y(8);
V(i)=xor(U(i),s);
s=not(s);
out=V;