case0是看懂了,主要是画出水箱,但是case2这部分代码完全看不懂是什么意思哈? 您所在的位置:网站首页 wall是什么意思 case0是看懂了,主要是画出水箱,但是case2这部分代码完全看不懂是什么意思哈?

case0是看懂了,主要是画出水箱,但是case2这部分代码完全看不懂是什么意思哈?

2023-05-04 03:01| 来源: 网络整理| 查看: 265

这是画一个开口水箱,显示水位变化的动态图像。麻烦大神能一步步详细解释下case2这部分代码。谢谢!function [sys,x0]=animtank(t,x,u,flag,ts) global tankdemo

if flag==2,if any(get(0,'Children')==tankdemo),if strcmp(get(tankdemo,'Name'),'Tank Demo'),

% Update tank one leveltankHndlList=get(tankdemo,'UserData');yData=get(tankHndlList(1),'YData');yOffset=yData(1);yData(3:4)=[1 1]*u(2)+yOffset;set(tankHndlList(1),'YData',yData);

yData=get(tankHndlList(2),'YData');yData([3 4])=[1 1]*u(2)+yOffset;set(tankHndlList(2),'YData',yData);

yData=[1 1]*u(1)+1;set(tankHndlList(3),'YData',yData);

drawnow;endendsys=[];x0=[];

elseif flag==0;

% Initialize the figure for use with this simulationfuzzy_animinit('Tank Demo');tankdemo=findobj(0,'Name','Tank Demo');

tank1Wid=1;tank1Ht=2;tank1Init=0;setPt=0.5;

tankX=[0 0 1 1]-0.5;tankY=[1 0 0 1];% Draw the tankline(1.1*tankX*tank1Wid+1,tankY*tank1Ht+0.95,'LineWidth',2,'Color','black');tankX=[0 1 1 0 0]-0.5;tankY=[0 0 1 1 0];% Draw the waterwaterX=tankX*tank1Wid+1;waterY=tankY*tank1Init+1;tank1Hndl=patch(waterX,waterY,'blue','EdgeColor','none');% Draw the gray wallwaterY([1 2 5])=tank1Ht*[1 1 1]+1;waterY([3 4])=tank1Init*[1 1]+1;tank2Hndl=patch(waterX,waterY,[.9 .9 .9],'EdgeColor','none');% Draw the set pointlineHndl=line([0 0.4],setPt*[1 1]+1,'Color','red','LineWidth',4);

set(gcf, ...'Color',[.9 .9 .9], ...'UserData',[tank1Hndl tank2Hndl lineHndl]);set(gca, ...'XLim',[0 2],'YLim',[0 3.5], ...'XColor','black','YColor','black', ...'Box','on');axis equalxlabel('Water Level Control','Color','black','FontSize',10);set(get(gca,'XLabel'),'Visible','on')

sys=[0 0 0 2 0 0];x0=[];

end;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有