系统辨识大作业Word格式.docx
《系统辨识大作业Word格式.docx》由会员分享,可在线阅读,更多相关《系统辨识大作业Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
%%%%第一题
(1)程序%%%%
t=[0123456]'
;
L=[08.9420.0550.6572.19129.85171.56]'
T=0.5*t.^2;
A=polyfit(T,L,1);
z=polyval(A,T);
figure
plot(T,z);
plot(T,L,'
b+'
)
g=A
(1)%辨识参数
holdon
plot(T,z,'
r'
);
xlabel('
T/s^2'
ylabel('
L/m'
title('
最小二乘法求重力加速度g'
holdoff
运行结果:
a.最小二乘法拟合曲线图
b.参数辨识:
g=9.5793
即求得重力加速度值为9.5793。
(2)
设两国军备竞赛模型为
x(k)=ax(k-1)+by(k-1)+f
y(k)=cx(k-1)+dy(k-1)+g
式中x(k)和y(k)为两国军事费用(单位:
百万美元),已知数据如下:
k
伊朗
伊拉克
北约
华约
1972
2891
909
216478
112893
1973
3982
1123
211146
115020
1974
8801
2210
212267
117169
1975
11230
2247
210525
119612
1976
12178
2204
205717
121461
1977
9867
2303
212009
123561
1978
9165
2179
215988
125498
1979
5080
2675
218561
127185
1980
4040
225411
129000
1981
233957
131595
试用最小二乘法确定模型参数a,b,c,d,f和g。
分析
同上题,仍然利用最小二乘法,只不过此题不是单个数,而是矩阵。
作业程序
●伊朗和伊拉克
%%%%第一题
(2)1程序%%%%
y=[9091123221022472204230321792675];
x=[2891398288011123012178986791655080];
fork=2:
8
h(k,:
)=[x(k-1)y(k-1)1];
z(k,:
)=[x(k)y(k)];
end
est=inv(h'
*h)*h'
*z;
%算出a、b、f、c、d、g估计值,为三行两列的矩阵a=est(1,1),b=est(2,1),f=est(3,1),c=est(1,2),d=est(2,2),g=est(3,2)%分别取到a、b、f、c、d、g
plot([1972:
1979],x,'
holdon%画出实际与各自的估计曲线
hg=h*est;
abf=(hg(:
[1]))'
1979],abf,'
b'
1979],y,'
cdg=(hg(:
[2]))'
1979],cdg,'
g'
年代'
军事费用/百万美元'
%写出坐标表头
legend('
伊朗实际值'
'
伊朗估计值'
伊拉克实际值'
伊拉克估计值'
伊朗与伊拉克军事费用对比'
holdoff
●北约和华约
x=[216478211146212267210525205717212009215988218561255411233957];
y=[112893115020117169119612121461123561125498127185129000131595];
10
%用最小二乘法求出估计值a=est(1,1),b=est(2,1),f=est(3,1),c=est(1,2),d=est(2,2),g=est(3,2)
1981],x,'
%取guji矩阵的第一列即a,b,f的值
1981],abf,'
1981],y,'
1981],cdg,'
ylabel('
北约实际值'
北约估计值'
华约克实际值'
华约克估计值'
北约与华约事费用对比'
最小二乘法辨识结果
参数
A
b
f
c
d
G
伊朗与伊拉克
0.5481
-0.2034
4447.5
-0.0306
0.7443
987.1565
北约与华约
0.1540
1.7438
-70770
0.0181
0.9675
2075.6
结果分析
由以上对比曲线可以看出,经过最小二乘法估计得到的数据与实际数据之间虽然存在区别,但是基本符合要求,故可取该组辨识参数数据。
二、
考虑理想数学模型为
选择如下的辨识模型进行增广递推最小二乘参数辨识。
给出各参数的辨识曲线和辨识误差曲线。
应该使用增广递推最小二乘算法。
%%%%第二题程序%%%%
N=15;
%4位移位寄存器产生的M序列的周期
y1=1;
y2=1;
y3=1;
y4=0;
fori=1:
N;
x1=xor(y3,y4);
x2=y1;
x3=y2;
x4=y3;
y(i)=y4;
ify(i)>
0.5,u(i)=-1;
elseu(i)=1;
end
y1=x1;
y2=x2;
y3=x3;
y4=x4;
%白噪声的产生
A=19;
x0=12;
M=1024;
fork=1:
N
x=A*x0;
x1=mod(x,M);
v(k)=x1/512;
x0=x1;
%辨识主程序
z=zeros(7,N);
zs=zeros(7,N);
zm=zeros(7,N);
zmd=zeros(7,N);
z
(1)=0;
z
(2)=0;
zs
(1)=0;
zs
(2)=0;
zm
(1)=0;
zm
(2)=0;
zmd
(1)=0;
zmd
(2)=0;
theta=zeros(7,1);
p0=10^6*eye(7,7);
the=[theta,zeros(7,14)];
e=zeros(7,15);
fork=3:
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);
h=[-z(k-1),-z(k-2),u(k-1),u(k-2),v(k),v(k-1),v(k-2)]'
x=inv(h'
*p0*h+1);
q=p0*h*x;
d1=z(k)-h'
*theta;
theta1=theta+q*d1;
zs(k)=-1.5*z(k-1)+0.7*z(k-2)+u(k-1)+0.5*u(k-2);
zm(k)=[-z(k-1),-z(k-2),u(k-1),u(k-2)]*[theta1
(1);
theta1
(2);
theta1(3);
theta1(4)];
zmd(k)=h'
*theta1;
e(:
k)=theta1-theta;
theta=theta1;
the(:
k)=theta1;
p1=p0-q*q'
*[h'
*p0*h+1];
p0=p1;
figure
(1);
i=1:
plot(i,the(1,:
),'
i,the(2,:
r:
'
i,the(3,:
i,the(4,:
b:
i,the(5,:
i,the(6,:
g:
i,the(7,:
g+'
辨识曲线'
figure
(2);
plot(i,e(1,:
i,e(2,:
i,e(3,:
i,e(4,:
i,e(5,:
i,e(6,:
i,e(7,:
r+'
)
辨识误差曲线'
运行程序,得到以下曲线
得到参数辨识结果
增广最小二乘参数辨识结果
a1
a2
b1
b2
d1
d2
d3
真值
1.5
0.7
1.0
0.5
1.2
-1.0
0.2
估计值
三、
完善试验2,给出由相关分析法给出的脉冲响应函数辨识曲线,在试验2的基础上,给出拟合二阶及三阶系统的最小二乘辨识参数曲线,及由脉冲响应函数反求传函。
利用带遗忘因子的递推算法。
%%%%第三题程序%%%%
n=2;
Ts=2;
np=15;
%n阶次,Ts采样时间
U=UY(61:
300,1);
%输入初值U
Y=UY(61:
300,2);
%输入初值Y
f=zeros(120,4);
f(:
1)=-1*Y(61:
180);
2)=-1*Y(60:
179);
3)=U(61:
4)=U(60:
yy=Y(62:
181);
q=inv(f'
*f)*f'
*yy;
a=q(1:
2);
b=q(3:
4);
G=tf(b'
[1a'
],2)%传递函数GLS(z)
yc=zeros(n+np,1);
%脉冲响应
uc=zeros(n+np,1);
uc(n+1)=1/Ts;
for