实验实验一利用相关分析法辨识脉冲响应实验一 利用相关分析法辨识脉冲响应一、实验目的通过仿真实验掌握利用相关分析法辨识脉冲响应的原理和方法.二、实验内容下图为本实验的原理框图.过程传递函数为,其中;分别为过程的输入和输出变量;为过程测量白噪声,服从正态分布,均值为零,方差为,记作;为过程的脉冲响应理论值,为过程脉冲响应估计值,为过程脉冲响应估计误差v(k)过程的输入驱动采用M序列,输出受到白噪声的污染根据过程的输入和输出数据,利用相关分析算法根据输出过程的脉冲响应值,并与过程脉冲响应理论值比较,得到过程脉冲响应估计误差值,当时,应该有z(k)y(k)u(k)相关分析法三、实验方案设计(1) 采用串联传递函数仿真 u(k)x(k)y(k)令,则的表达框图为:编程语句可写成:(2)白噪声生成● 利用U[0,1]均匀分布的随机数生成正态分布的白噪声 其中,标准差分别取0,05.● 编程语句(3)M序列生成● 用M序列作为辨识的输入信号,N序列的循环周期取,时钟节拍,幅度,逻辑“0"为a,逻辑“1”为—a,特征多项式自选,如● 生成M序列的结构图C1C2C3C4C5C6CPM(6)M(5)+M(4)M(3)M(2)M(1)M(0)● 编程语句(4)互相关函数的计算其中,r为周期数,表示计算互相关函数所用的数据是从第二个周期开始的,目的是等过程仿真数据进入平稳状态。
5)计算脉冲响应估计值● 脉冲响应估计值 ● 脉冲响应估计误差 四、数据记录理想状态下,即在没有白噪声干扰下的数据输入白噪声标准差sigma(0.5):0脉冲响应估计误差00266输入白噪声标准差sigma(0.5):0.1脉冲响应估计误差 0.0281输入白噪声标准差sigma(05):05脉冲响应估计误差 00293输入白噪声标准差sigma(05):1脉冲响应估计误差 00391输入白噪声标准差sigma(05):2脉冲响应估计误差 00616数据列表输入白噪声标准差0010.512脉冲响应估计误差0026600281002930039100616五、结果分析利用相关分析法分析脉冲响应,得到脉冲响应的估计误差是随着输入白噪声标准差的增加而增大的,带有白噪声污染的输出z,在白噪声标准差为0时与理想输出y是重合的,白噪声的标准差愈小对系统的输出干扰愈小.六.程序流程启动定维输入数据u(252),输出数据(不含噪声)y(252)输出数据(含噪声)z(252),噪声数据v(252),M序列M(7)互相关函数R(63),脉冲响应g(63),脉冲响应估计Eg(63)赋初值过程仿真参数:K=120, T1=8.3, T2=6.2, T0=1。
0生成M序列参数:a=1, P=6, M(0),…,M(7)不能全为0生成白噪声参数:M=32768, A=179, x0=11人机对话噪声标准差:Sigma;生成数据周期数:r过程仿真生成M序列;生成白噪声;生成过程输入和输出数据计算脉冲响应估计值计算互相关函数;计算脉冲响应估计值计算脉冲响应估计误差计算脉冲响应理论值;计算脉冲响应估计误差计算过程噪信比计算噪声方差;计算过程输出数据方差打印实验结果脉冲响应估计曲线;数据分析;估计误差源程序清单%利用相关分析法辨识脉冲响应clc;clear all;close all;a=1;Np=63;Ts=1;%采样时间初始化条件%过程仿真参数K=120;T0=1;T1=83;T2=62;%产生输入u(k)r=4;M = [0 0 0 1 0 1 1]; %—初始状态向量P = 7; %-实际应为6,循环周期Np=2^6-1=63for k = 1:1:252 u(k) = 1—2*M(7); %-取M6(相对M0而言)结果生成M序列 M(1) = xor(M(6),M(7)); if M(1) == 2 M(1) = 0; end i = P; while i>1 M(i) = M(i-1); i = i—1; endend%产生输入数据x(k)%系统仿真方法一,指导书上的K1 = K/(T1*T2);E1 = exp(—T0/T1);E2 = exp(—T0/T2);x(1) = 0;y(1) = 0;for k = 2:1:252 x(k) = E1*x(k—1)+T1*K1*(1-E1)*u(k—1)+T1*K1*(T1*(E1—1)+T0)*(u(k)—u(k-1))/T0; y(k) = E2*y(k-1)+T2*(1-E2)*x(k—1)+T2*(T2*(E2—1)+T0)*(x(k)—x(k—1))/T0;end%产生不带噪声的输出数据y(k)%or%sys=tf([120],[8.3*6.2,8。
3+6.2,1]);%y1=lsim(sys,u,1:length(u));%输入为M序列时对系统进行仿真%y=y1’;sigma=input(’输入白噪声标准差sigma(0.5):');v=whitenoise(0,sigma^2,length(y)); %N(0,0.25)高斯白噪声%or%v=wan(sigma);z=y+v;%产生输出数据z(k)ii=1:length(u);plot(ii,u)title(’输入u’)axis([1 length(u) —1.5 1.5])figure(2)plot(ii,y,’b’,ii,z,’r’),title(’仿真结果y以及带白噪声的输出z’)legend('y',’z’,’Location’, 'Best')%—--——------——--——-—-——---—-—-—---—-———-——--—去掉数据直流分量u = u - mean(u);zc = z(Np+1:4*Np); %—为避开非平稳过程,从第二周期开始采集数据zc = zc — mean(zc);%—-——---———-—-—-—--——--—--—-—--—---———-———-—-计算互相关函数for k = 1:1:Np Ruz(k) = (1/((r—1)*Np))*u(Np+2—k:r*Np+1-k)*zc’;end%-———--—--—--————----——---—-—————-------—----计算脉冲响应估计值和理论值for k = 1:1:Np ge(k) = Np/((Np+1)*a^2*Ts)*(Ruz(k)—Ruz(Np)); g0(k) = K/(T1-T2)*(exp(—(k—1)*Ts/T1)—exp(-(k-1)*Ts/T2));end%—-—-——----————-—----——--——---—-——————-—-————计算估计误差deltag = sqrt( (g0-ge)*(g0-ge)’/(g0*g0’) );disp(’脉冲响应估计误差’);disp(deltag);%--———--——-—-—--—-——--—-—————---——-—-——-—-———画脉冲响应曲线xk = 0:1:Np—1;figure(3)plot(xk,ge,xk,g0,’r’,xk,Ruz,'g’);legend('脉冲响应估计值’,’脉冲响应理论值','互相关函数',’Location’, ’Best')生成图像曲线M序列的图形曲线白噪声标准差为0时,理想输出y,带干扰的输出z输入白噪声标准差为0时,脉冲响应理论值与估计值白噪声标准差为0。
5时,理想输出y,带干扰的输出z白噪声标准差为0.5时,脉冲响应理论值与估计值七.心得体会为期两周的实验进一步巩固系统辨识方面的专业知识理论是实验的基础,实验是对理论的验证和深化.该实验使我对系统辨识有了更深刻的认识同时,提高了我的动手能力和思维能力在实验的过程中,我们也遇到了一些错误,程序有任何小的错误都会影响整个程序的运行.但是通过我们的仔细检查和不断的修正,终于得到了期望的实验结果.这次实验不仅锻炼了我们的细心,耐心,同时,还让我们意识到,团队精神的重要性三人行必有我师感谢老师给我们这次锻炼的机会,感谢小组的每一位成员 电子113 杨雨雨(201105102) 小组成员:侯婷婷 王媛媛 杨雨雨 郑敏 6。