系统辨识实验报告

  • 格式:doc
  • 大小:396.50 KB
  • 文档页数:15









学院:电子信息学院
班级:电气105
姓名:郝永旭
学号:201000474511
实验一:用相关分析法辨识系统脉冲响应
(1)M序列产生程序
Np=(2^6-1)*4;%初始化M序列的长度
for i=1:6
M(i)=1;
end
for i=7:Np;%根据M序列特征式计算M序列的其余

M(i)=xor(M(i-5),M(i-6));
end
input=zeros(1,Np); %初始化输入
for i=1:Np
if M(i)==1 input(i)=-1;
elseif M(i)==0 input(i)=1;
end;
end
time=1:Np;
simin=[time' input'];
(2)正态分布白噪声程序
A=6; x0=1; N=100; M=8;
for k=1:N
x2=A*x0;
x1=mod (x2,M);
v1=x1/M;
v(1,k)=v1;
x0=x1;
end
(3)系统simulink构建
(4)脉冲响应辨识程序
z=simout.signals.values(1:Np,1);
Ruz=zeros(1,2^6-1); %产生相关函数
N=Np-2^6+1;
for k=1:2^6-1
for i=2^6:Np
Ruz(k)=Ruz(k)+input(i-k)*z(i);
end
Ruz(k)=Ruz(k)/N;
end
c=-Ruz(62); %求g(k)
for k=1:2^6-1
g(k)=N/(N+1)*(Ruz(k)+c);%脉冲响应的估计值;end
num=[1]; %画图
den=[8.3*6.2 14.5 1];
sys=tf(num,den);
t=0:62;
y=impulse(sys,t);%真实的脉冲响应函数;
figure
plot(t,g(t+1),'r',t,y,'b');
实验二:利用Matlab中的ident模块对实验得到的数据进行处理
X=[2.8 2.9 3.0 3.0 3.0 2.9 2.7 2.5 2.3 2.2 2.0 1.8 1.6 1.5 1.4 1.6 1.7
1.8
2.0 2.3 2.4 2.6 2.9 2.9
3.0 3.0 3.0 2.9 2.8 2.6 2.3 2.1
2.0 1.8 1.6 1.5 1.5 1.8 1.7 1.8]'
Y=[2.7 2.8 2.9 3.0 2.9 2.8 2.7 2.5 2.3 2.1 1.8 1.4 1.1 0.9 0.7 0.8 1.0
1.3 1.6
2.0 2.2 2.4 2.6 2.8 2.9 2.9 2.8 2.8 2.7 2.6 2.3 2.1
1.8 1.2 1.1 0.9 0.8 0.8 1.1 1.2]'
间隔时间0.5
把数据的间隔时间变成0.05
在PC机上打开Matlab后,先将数据导入,再用ident 指令打开如图:
实验三:利用Matlab的窗口指令对实验得到的数据进行处理
X=[2.8 2.9 3.0 3.0 3.0 2.9 2.7 2.5 2.3 2.2 2.0 1.8 1.6 1.5 1.4 1.6 1.7
1.8
2.0 2.3 2.4 2.6 2.9 2.9
3.0 3.0 3.0 2.9 2.8 2.6 2.3 2.1
2.0 1.8 1.6 1.5 1.5 1.8 1.7 1.8]'
Y=[2.7 2.8 2.9 3.0 2.9 2.8 2.7 2.5 2.3 2.1 1.8 1.4 1.1 0.9 0.7 0.8 1.0
1.3 1.6
2.0 2.2 2.4 2.6 2.8 2.9 2.9 2.8 2.8 2.7 2.6 2.3 2.1
1.8 1.2 1.1 0.9 0.8 0.8 1.1 1.2]'
dry=iddata(X,Y,0.5);
ze=dry(1:20);
ze1=detrend(ze);
m1=arx(ze1,[4,3,4]);
zv=dry(20:40);
zv1=detrend(zv);
compare(zv1,m1);
实验总结:
通过对系统辨识的学习,让我知道了他的重要性,尤其是近二十年来,系统辨识获得了长足的发展,已经为控制理论的一个十分活跃而又要的分支。

随着智能控理论、遗传算法理论等的不断成熟,逐渐形成了形式多样的现代的系统辨识方法,并且已在实际问题应用中取得了较好的使用效果。

我们可以预见对不确定性的复杂系统的辨识研究很难或根本不可能找到一种统的辨识方法来处理,这就需要人们分门别类地去研究,去解决所遇到的各种具体问题。

在实验过程中,需要我们去好好思考要如何去做,辨识是一个复杂而简单的过程,只要我们掌握了相应的方法,辨识是非常容易的。

最后,谢谢老师对我们的指导和照顾。