- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4-1章 时域离散相似法Matlab编程
第4章 时域离散相似法仿真Matlab编程;用于离散相似的Matlab函数;【例4.1.1】对下面的连续系统,在采样周期T=0.1时进行离散化;4.2 针对离散状态空间模型的仿真程序;function [t,y]=w_DiscreteSimu(tstart,tstop,h,x0,u0,G,H,C,D)
t=[tstart:h:tstop];%t数一个行序列
cntt=size(t,2);%返回列数
cnty=size(C,1);%返回y的维数
y=zeros(cnty,cntt);%构造一个空矩阵,用来存储结果
y0=C*x0+D*u0;
y(:,1)=y0 ;%将y0作为输出的第1列
curx=x0; %当前一步的x
curu=u0; %当前一步的u
cury=y0; %当前一步的y
for i=1:1:cntt-1
curx=G*curx+H*curu;%计算下一步的状态
cury=C*curx+D*curu;%计算输出
y(:,i+1)=cury;%将输出加入到输出序列里
end;【例4.2.1】对下面的连续系统,采用数值积分法和离散相似法仿真。;仿真程序:用c2d进行模型变换,将数值积分与离散相似2种方法的结果对比。数值积分仿真的结果用plot函数绘图,表现连续的效果;离散模型仿真结果用stairs绘图,各数据点之间是零阶保持。;在步长h=0.5时,两种方法的仿真结果及其接近。离散模型的每个计算点都在连续模型上;4.3 面向环节离散化仿真(无非线性环节);2】环节内部离散模型;3】系统输出方程;function [t,p]=w_DisNodesSimu2(tstart,tstop,h,x0,y0,r0,W,W0,G,H,C,D,Q)
% 函数功能:面向环节离散化仿真,
% 环节输入方程: u(k)=W*x(k)+W0*r(k)
% 环节迭代方程:x(k+1)=G*x(k)+H*u(k)
% 环节输出方程 y(k)=C*x(k)+D*u(k);
% 整个系统的输出方程 p(k)=Q*y(k);
% 输入参数:tstart, tstop,h 分别是起始时间、结束时间和仿真步长
% x0,y0是每个环节状态和输出的初值,
% r0为系统外部输入
% 输出参数:t是仿真结果的时间序列
% p是仿真结果系统的输出序列;function [t,p]=w_DisNodesSimu2(tstart,tstop,h,x0,y0,r0,W,W0,G,H,C,D,Q)
t=[tstart:h:tstop];%t数一个行序列
cntt=size(t,2);%返回列数
cnty=size(Q,1);%返回y的维数
p=zeros(cnty,cntt);%构造一个空矩阵,用来存储结果
p(:,1)=Q*y0; %
for i=1:1:cntt-1
u=W*y0+W0*r0;
x0=G*x0+H*u;
y0=C*x0+D*u;
p(:,i+1)=Q*y0 ;%将y0作为输出的第1列
end;2、逐个环节刷新的仿真程序
该函数所有参数与w_DisNodesSimu2的一样。
逐个环节刷新是逐个根据环节的编号顺序,计算环节的输入,再计算输出,再计算下一个环节的输入和输出,依次进行,相当于环节之间串连运算。;function simu4_3
tstart=0;tstop=10;A=[0,1;-2,-3];B=[0;1];C=[2,0];D=[0];x0=[0;0];u0=[1];h=0.5;
[G,H]=c2d(A,B,h);%得到离散模型矩阵
[t,y1]=w_LinearSimu(tstart,tstop,h,x0,u0,A,B,C,D,RK4);
[t,y2]=w_DiscreteSimu(tstart,tstop,h,x0,u0,G,H,C,D); %离散相似法仿真
%面向环节离散化仿真
W=[0,-1;1,0];W0=[1,0];Q=[0,1];C=diag([1,1]);D=zeros(2);
G=diag([1,exp(-3*h)]);H=diag([2*h,(1-exp(-3*h))/3]);y0=x0;
[t,y3]=w_DisNodesSimu2(tstart,tstop,h,x0,y0,u0,W,W0,G,H,C,D,Q);
plot(t,y1,‘-r’);
hold on; stairs(t,y2,:k+); stairs(t,y3,-b*); hold off;
axis([0,10,0,1.2]); xlabel(x);ylabel(y);
legend(数值积分
文档评论(0)