基于MATLAB的四种系统辨识实验报告.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT 1 基于MATLAB的四种系统辨识方法 ——辨识二阶系统 实验选定用来作为原函数进行辨识的二阶系统为: 面积法 1、算法 已知为阶跃响应,模型为: ①、 ②、计算中间变量 ③、各阶面积: ④、计算: ⑤、计算: 程序 clear all; close all; num=[25]; den=[1 5 25]; figure(1) subplot(211) Gs=tf(num,den); step(Gs); hold on [y,t]=step(Gs); plot(t,y) N=100; T0=0.02; t=0:T0:N; h=(step(num,den,t)); subplot(212) stem(h,.); L=length(t); K=h(L); ht=h/K; n=length(den)-1; m=length(num)-1; for i=1:n+m temp1=0; for j=1:L temp1=temp1+((1-ht(j))*(-1*t(j))^(i-1))/factorial(i-1)*T0; end if i1 temp2=0; for ii=1:i-1 temp=0; for j=1:L temp=temp+((1-ht(j))*(-1*t(j))^(ii-1))/factorial(ii-1)*T0; end temp2=temp2+A(i-ii)*temp; end else temp2=0; end A(i)=temp1+temp2; end %bi M1=[]; for i=1:m M1=[M1;A(n+i-1:-1:n-m+i)]; end M2=A(n+1:n+m).; b=-1*inv(M1)*M2; %ai for i=1:n for j=1:n if ij M(i,j)=0; else if i==j M(i,j)=1; else M(i,j)=A(i-j); end end end end B=zeros(n,1); for i=1:m B(i)=b(i); end a=M*B+A(1:n).; %辨识所得传递函数 num1=[flipud(b) 1]; den1=[flipud(a) 1]; disp(原系统传递函数为:); Gs=tf(num,den) disp(辨识所得系统传递函数); tf(num1,den1) 结果 原系统传递函数为: A = 0.2100 0.0441 b = Empty matrix: 0-by-1 a = 0.2100 0.0441 原系统传递函数为: Transfer function: 25 s^2 + 5 s + 25 辨识所得系统传递函数 Transfer function: 1 0.04413 s^2 + 0.21 s + 1 误差分析 面积法的误差比较大大,并且都集中在分母上,但仍然可以接受。减小采样时间T0可以提高各阶面积的计算精度,从而提高辨识精度。 二、Hankel法 算法 ①、建立模型 ②、构造Hankel矩阵: ③、计算 ④、计算 程序 clear all, close all, T0=0.01; num=[25]; den=[1,5,25]; sys=tf(num,den); figure subplot(2,1,1) step(sys) hold on [y,t]=step(sys); plot(t,y,ro) subplot(2,1,2) impulse(sys) hold on [y_i,t_i]=impulse(sys,0:T0:3); plot(t_i,y_i,r*) g=y_i; k=1; figure Ts=0.01; discrete_sys=c2d(sys,Ts) impulse(discrete_sys); [g_discrete,t_discrete]=impulse(discrete_sys); if g_discrete(2)*g_disc

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档