资源描述:
《matlabs函数的调用实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、期末作业1.求解微分方程,初始条件。要求交mdl文件及仿真结果的截图。解:用Simulink连接的仿真图如下所示:求解出的x1,x2,x3的解如下图(a)所示的仿真结果:2.当电源电压V时,求解表达式y(t)的波形:,其中y(0)=1。要求交mdl文件及仿真结果的截图。解:用Simulink连接的仿真图如下所示:仿真结果如下图(b)所示:3.使用S函数实现y=5*x+3,建立仿真模型并得出仿真结果。要求交mdl文件,S函数及仿真结果的截图。解:用Simulink连接的仿真图如下所示:S函数的代码如下:
2、function[sys,x0,str,ts]=mysfun3(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case2,sys=mdlUpdate(t,x,u);case3,sys=mdlOutputs(t,x,u);case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);o
3、therwiseerror(['Unhandledflag=',num2str(flag)]);endfunction[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=1;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;sys=simsizes(sizes
4、);x0=[];str=[];ts=[00];functionsys=mdlDerivatives(t,x,u)sys=[];functionsys=mdlUpdate(t,x,u)sys=[];functionsys=mdlOutputs(t,x,u)sys=5*u+3;functionsys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime=1;sys=t+sampleTime;functionsys=mdlTerminate(t,x,u)sys=[];仿真结果如下图
5、(c)所示:4.已知某系统的状态方程如下:试用S函数建立其仿真模型,并求其单位阶跃响应曲线。解:用Simulink连接的仿真图如下所示:S函数的代码如下:function[sys,x0,str,ts]=mysfun4(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case2,sys=mdlUpdate(t,x,u);case3,sys=mdlOutputs(t
6、,x,u);case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);otherwiseDAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));endfunction[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=3;sizes.NumDiscStates=0;si
7、zes.NumOutputs=1;sizes.NumInputs=1;sizes.DirFeedthrough=0;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=[0;0;0];str=[];ts=[00];functionsys=mdlDerivatives(t,x,u)x(1)=1*x(1)-1*x(2)-2*x(3)+u;x(2)=2*x(2)-1*x(3);x(3)=3*x(3)+u;sys=x;functionsys=mdlUpdate(t,x,
8、u)sys=[];functionsys=mdlOutputs(t,x,u)sys=1*x(1)-2*x(2)+3*x(3);functionsys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime=1;sys=t+sampleTime;functionsys=mdlTerminate(t,x,u)sys=[];仿真结果如下图(d)所示: