lcf1019 发表于 2009-4-26 20:38

单蓄水槽动态模型的程序那里错了

% TANK1L.M单个蓄水槽的线性化模型
   functionxdot=tank1l(t,x)
   globalc1l c2l
   xdot = c1l*x+c2l;
% TANK1L.M单个蓄水槽的非线性化模型
   functionxdot=tank1nl(t,x)
   globac1nl c2nl
   xdot = c1l*sqrt(x)+c2nl;
% TANKCS1.M 单个蓄水槽动态特性的仿真程序
   clear all,close all,nfig = 0;
% 定义ODE求解器中使用的全局变量
   globalc1nl c1l c2nl c2l
% 定义相关参数                  
   too=0; tff=25;       %仿真计算的启动和结束时间(min)
   rho=62.4;            %水的密度(lbm/ft^3)
   g=1.1592e5;          %重力加速度常数(ft/min^2)
   wio=1900;            %参考位置的入口处液体流速(lbm/min)
   ho=10;               %参考位置处的液位高度(ft)
   a=5;               %槽底的表面积(ft^2)
   ae=.02;            %出水管的表面积(ft^2)
% delta input                        
   dw1=0.1*wio;         %10%的变化
   dw2=0.5*wio;         %50%的变化
% 非线性系数               
   c1nl=-ae*sqrt(2*g)/a;         
% 线性模型系数               
   r=sqrt(2*g*ho)/(rho*g*ae); c=rho*a; c1l=-1/(r*c);
% 非线性仿真 - 脉冲&阶跃响应#1
   y1o=ho+dw1/c; c2nl=wio/c;   
   =ode23(′tank1nl′,,y1o);
   y1o=ho;    c2nl=(wio+dw1)/c;   
   =ode23(′tank1nl′,,y1o);
% 线性仿真 - 脉冲&阶跃响应#1
   y1o=dw1/c;   c2l=0;   
   =ode23(′tank1l′,,y1o); y2i=ho+y2i;
   y1o=0;   c2l=dw1/c;
   =ode23(′tank1l′,,y1o); y2s=ho+y2s;
%绘制结果#1
   nfig=nfig+1; figure(nfig)
   subplot(2,2,1),plot(t1i,y1i,′r′,t2i,y2i,′g:′),grid
   title(′Impulse Response(10%)′);
   xlabel(′Time(min)′),ylabel(′Height(ft)′);
   legend(′NL′,′L′);
   subplot(2,2,2),plot(t1s,y1s,′r′,t2s,y2s,′g:′),grid
   title(′Step Response(10%)′);
   xlabel(′Time(min)′),ylabel(′Height(ft)′);
   legend(′NL′,′L′);
% 非线性仿真 - 脉冲&阶跃响应#2
   y1o=ho+dw2/c; c2nl=wio/c;
   =ode23(′tank1nl′,,y1o);
   y1o=ho;    c2nl=(wio+dw2)/c;
   =ode23(′tank1nl′,,y1o);
% 线性仿真 - 脉冲&阶跃响应#2
   y1o=dw2/c;   c2l=0;
   =ode23(′tank1l′,,y1o); y2i=ho+y2i;
   y1o=0;   c2l=dw2/c;
   =ode23(′tank1l′,,y1o); y2s=ho+y2s;
% 绘制结果#2
   subplot(2,2,3),plot(t1i,y1i,′r′,t2i,y2i,′g:′),grid
   title(′ImpulseResponse(50%)′);
   xlabel(′Time(min)′),ylabel(′Height(ft)′);
   legend(′NL′,′L′);
   subplot(2,2,4),plot(t1s,y1s,′r′,t2s,y2s,′g:′),grid
   title(′Step Response(50%)′);
   xlabel(′Time(min)′),ylabel(′Height(ft)′);
   legend(′NL′,′L′);
% 线性化模型的频域仿真
   b=r;a=;sys1=tf(b,a);
   w=logspace(-2,2,200);      %仿真的频域范围(rad/min)
   nfig=nfig+1; figure(nfig)
   bode(sys1,w),xlabel(′Frequency(rads/min)′)
   nfig=nfig+1; figure(nfig)
   subplot(2,1,1),nichols(sys1,w)
   subplot(2,1,2),nyquist(sys1,w)
   =nyquist(sys1,w); Resys1(:,1)=Re(1,1,:);
   Imsys1(:,1)=Im(1,1,:);
这个我是按书本输入的,查了好几遍,就是出现??? Undefined function or variable 't'.由于我是刚开始学的MATLAB,希望有人帮我一下

yufeng 发表于 2009-4-27 09:06

所有function的一律另外保存

另外保存就是,重新存一个文件

[ 本帖最后由 ChaChing 于 2009-5-3 08:57 编辑 ]

lcf1019 发表于 2009-4-28 14:20

回复 沙发 yufeng 的帖子

我试过了啊,可是不行啊

[ 本帖最后由 ChaChing 于 2009-5-3 08:58 编辑 ]

lcf1019 发表于 2009-5-2 15:04

回复 沙发 yufeng 的帖子

谢了,确实如此,我试出来

[ 本帖最后由 ChaChing 于 2009-5-3 08:59 编辑 ]
页: [1]
查看完整版本: 单蓄水槽动态模型的程序那里错了