声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1178|回复: 3

[编程技巧] 单蓄水槽动态模型的程序那里错了

[复制链接]
发表于 2009-4-26 20:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
% 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;   
   [t1i,y1i]=ode23(′tank1nl′,[too,tff],y1o);
   y1o=ho;    c2nl=(wio+dw1)/c;   
   [t1s,y1s]=ode23(′tank1nl′,[too,tff],y1o);
% 线性仿真 - 脉冲&阶跃响应#1
   y1o=dw1/c;   c2l=0;   
   [t2i,y2i]=ode23(′tank1l′,[too,tff],y1o); y2i=ho+y2i;
   y1o=0;     c2l=dw1/c;  
   [t2s,y2s]=ode23(′tank1l′,[too,tff],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;
   [t1i,y1i]=ode23(′tank1nl′,[too,tff],y1o);
   y1o=ho;    c2nl=(wio+dw2)/c;
   [t1s,y1s]=ode23(′tank1nl′,[too,tff],y1o);
% 线性仿真 - 脉冲&阶跃响应#2
   y1o=dw2/c;   c2l=0;
   [t2i,y2i]=ode23(′tank1l′,[too,tff],y1o); y2i=ho+y2i;
   y1o=0;     c2l=dw2/c;
   [t2s,y2s]=ode23(′tank1l′,[too,tff],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=[r*cl];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)
   [Re,Im]=nyquist(sys1,w); Resys1(:,1)=Re(1,1,:);
   Imsys1(:,1)=Im(1,1,:);
这个我是按书本输入的,查了好几遍,就是出现??? Undefined function or variable 't'.由于我是刚开始学的MATLAB,希望有人帮我一下

1.m

2.87 KB, 下载次数: 5

回复
分享到:

使用道具 举报

发表于 2009-4-27 09:06 | 显示全部楼层
所有function的一律另外保存

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

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

评分

1

查看全部评分

 楼主| 发表于 2009-4-28 14:20 | 显示全部楼层

回复 沙发 yufeng 的帖子

我试过了啊,可是不行啊

[ 本帖最后由 ChaChing 于 2009-5-3 08:58 编辑 ]
 楼主| 发表于 2009-5-2 15:04 | 显示全部楼层

回复 沙发 yufeng 的帖子

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

[ 本帖最后由 ChaChing 于 2009-5-3 08:59 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-6 08:30 , Processed in 0.067992 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表