系统辨识实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:系统辨识的经典方法
一、实验目的
掌握系统的数学模型与输入、输出信号之间的关系,掌握经辨辨识的实验测试方法和数据处理方法,熟悉MATLAB/Simulink环境。
二、实验内容
1、用阶跃响应法测试给定系统的数学模型
在系统没有噪声干扰的条件下通过测试系统的阶跃响应获得系统的一阶加纯滞后或二阶加纯滞后模型,对模型进行验证。
2、在被辨识系统中加入噪声干扰,重复上述1的实验过程。
三、实验方法
在MATLAB环境下用Simulink构造测试环境,被测试的模型为水槽液位控制对象。
利用非线性水槽模型(tank)可以搭建单水槽系统的模型,也可以搭建多水槽系统的模型,多水槽模型可以是高低放置,也可以并排放置。
1.噪声强度0.5,在t = 20的时候加入阶跃测试信号相应曲线
2.乘同余法产生白噪声
A=19;N=200;x0=37;f=2;M=512; %初始化;
for k=1: N %乘同余法递推100次;
x2=A*x0; %分别用x2和x0表示xi+1和xi-1;
x1=mod(x2,M); %取x2存储器的数除以M的余数放x1(xi)中;
v1=x1/M; %将x1存储器中的数除以256得到小于1的随v(:,k)=(v1-0.5 )*f;
x0=x1; % xi-1= xi;
v0=v1;
end %递推100次结束;
v2=v;
k1=k;
h=k1;
%以下是绘图程序;
k=1:1:k1;
plot(k,v,'r');
grid on
set(gca,'GridLineStyle','*');
grid(gca,'minor')
3.白噪声序列图像
020406080100120140160180200
-1
-0.8
-0.6
-0.4
-0.2
0.2
0.4
0.6
0.8
1
四、 思考题
(1) 阶跃响应法测试系统数学模型的局限性。
答:只适用于某些特殊对象或者低阶简单系统;参数估计的精度有限,估计方法缺乏一般性。
(2) 对模型测试中观察到的现象进行讨论。
答:由系统的阶跃响应曲线可以看出,加入干扰后二阶系统明显比一阶系统相应缓慢,但由于此系统是自恒模型,故最终将从一个稳态到另一个稳态。
实验二:相关分析法与最小二乘法
一、实验目的
掌握相关分析法和最小二乘法测试系统数学模型的过程和方法,掌握应用移位计数器设计M序列信号发生器的方法。
二、实验内容
1、设计并实现PRBS伪随机序列信号(M序列)发生器;
2、应用相关分析法和最小二乘法测试给定系统的数学模型。
3、模型验证。
三、相关分析法
1.相关分析法源程序
aa=5;NNPP=15;ts=2;
RR=ones(15)+eye(15);
for i=15:-1:1
UU(16-i,:)=UY(16+i:30+i,1)';
end
YY=[UY(31:45,2)];
GG=RR*UU*YY/[aa*aa*(NNPP+1)*ts];
plot(0:2:29,GG)
hold on
stem(0:2:29,GG,'filled')
ggg = [GG(2:4,1) GG(3:5,1) GG(4:6,1)]; gg1=-[GG(5:7,1)]; aaa=ggg^-1*gg1
bbb=[1 0 0 0;aaa(3,1) 1 0 0;aaa(2,1) aaa(3,1)
1 0;aaa(1,1) aaa(2,1) aaa(3,1) 1 ];
bbb*GG(1:4,1)
num=[0.0566 0.0686 -0.4182 -0.3151]; den=[1 -3.5602 2.8339 -0.6549]; SYSD=tf(num,den)
2相关分析法阶跃响应曲线
0510********
0.050.10.150.20.250.30.350.4
3参数辨识结果
a =
-0.6549 2.8339 -3.5602
1.0000 0 0 0
-3.5602 1.0000 0 0
2.8339 -
3.5602 1.0000 0
-0.6549 2.8339 -3.5602 1.0000
b =
0.0566
0.0686
-0.4182
-0.3151
因此可知系统脉冲传递函数为:
SYSD =
0.0566 z^3 + 0.0686 z^2 - 0.4182 z - 0.3151
---------------------------------------------------------
z^3 - 3.56 z^2 + 2.834 z - 0.6549
四、最小二乘法
1.最小二乘法源程序
na=3; nb=2;d=0; %na、nb为A、B阶次
L=200; %仿真长度
%uk=zeros(d+nb,1); %输入初值:uk(i)表示u(k-i)
%yk=zeros(na,1); %输出初值
uk=UY(1:200,1)'; %输入初值:uk(i)表示u(k-i)
yk=UY(1:200,2)'; %输出初值
%u=randn(L,1); %输入采用白噪声序列
%xi=sqrt(50)*randn(L,1); %白噪声序列
%theta=[a(2:na+1);b]; %对象参数真值
thetae_1=zeros(na+nb+1,1); %thetae初值
P=10^6*eye(na+nb+1);
for k=4:L
phi=[-yk((k-1):-1:(k-3)) uk(k:-1:(k-2))]; %此处phi为列向量
%y(k)=phi'*theta+xi(k); %采集输出数据