How fix speed of 3 For loops?
7 ビュー (過去 30 日間)
古いコメントを表示
Hello
I have animated a proceess in GUI and used For loop to create animation of a mixing tank .However, the problem is my loop will work slow ecah ime more than before?
I am nott sure anyone know how to fix the problem?
Codes are provided below ,it is only to start button's function:
function start_Callback(hObject, eventdata, handles)
% hObject handle to start (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA
%set(handles.stop_Callback, 'userdata', 0);
set(handles.stop,'userdata',0);
set(handles.pause,'userdata',0);%defining the value of the pause-button
set(handles.emergency_stop,'userdata',0);%defining the value of the emergency-stop-button
set(handles.reset,'userdata',0);
if get(handles.reset,'userdata')% getting the response from Emergency-stop button
title('Process is reset') %creating title
return; %%stop process
end
axis([-10 10 -15 15])
for loop2=1:3 %it is a General Loop which loops all process
title('stop button is applied') %creating title
if get(handles.stop,'userdata')% getting the response from stop button
set(handles.stop,'userdata',1); %setting value of stop button
break; %stopping loop
end
if get(handles.pause,'userdata')%getting the response from pause button
uiwait(handles.figure1); %UIWAIT makes Guide wait for getting continue button's response
title(' process is paused') %creating title
end
if get(handles.emergency_stop,'userdata')% getting the response from Emergency-stop button
title('process is stopped as Emergency') %creating title
break; %Stopping loop
end
%...................plotting pipes/product A
x=[2.1 8]; % mentioning value of x
y=[9.5 9.5]; %mentioning value of y
plot(x,y,'Color','yellow','LineWidth',7)% drawing pipe
...................plotting pipes/product A
x1=[2.3 2.3]; % mentioning value of x
y1=[9.5 7]; %mentioning value of y
plot(x1,y1,'Color','yellow','LineWidth',7)% drawing pipe
................................filling animation
x1=[2.3 2.3]; % mentioning value of x
y1=[0 7]; %mentioning value of y
plot(x1,y1,'--','Color','yellow','LineWidth',7)% drawing pipe
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
level=0;% creating variable
level_h= randi(1)*25; %Percentage of tank volume
pause(0.001)
%Filling tank with product A/opening valve1........................................
for i=1:level_h % Filling tank with product A /Opening valve 1
pause(0.001)
if get(handles.pause,'userdata')%% getting the response from pause button
uiwait(handles.figure1); %UIWAIT makes Guide wait for getting continue button's response
end
if get(handles.reset,'userdata')% getting the response from rese-button
break;
end
level=level+0.15; %%%level of liquid
%%%%plotting level of liquid
patch([-4.4 4.15 4.15 -4.4],[ 0 0 level level]-7.05,'yellow');%Starting line
x5=[0 0];
y5=[-4 11];
plot(x5,y5,'Color','black','LineWidth',12)
hold on
x6=[-2 2];
y6=[-4 -4];
plot(x6,y6,'Color','black','LineWidth',12)
hold on
rectangle('Position',[-3 -5 2 2.25],'FaceColor','black')
rectangle('Position',[1 -5 2 2.25],'FaceColor','black')
pause(0.001) % delay time
W=8; %defining wiedth of the tank's body
L=8; %defining length of the tank's body
H=level; %defining height of the tank's body
V=(W*L*H); %computing volume of the tank
disp(V); %diplay the value of the tank
set(handles.text1,'String',V);
title(['Filling Tank// Vlave1 is open:',num2str(level_h),'%']); %writting Title
drawnow %animating procces
end
pause(0.001) %making delay
level_h=randi(1)*75; %Percentage of tank volume
....................plotting pipes
x=[2.1 8]; % mentioning value of x
y=[9.5 9.5]; % mentioning value of x
plot(x,y,'Color','blue','LineWidth',7) %Drawing pipe
...................plotting pipes
x1=[2.3 2.3]; % mentioning value of x
y1=[9.5 7]; % mentioning value of y
plot(x1,y1,'Color','blue','LineWidth',7) %Drawing pipe
.................removing aniamtion of product A
x1=[2.3 2.3]; % mentioning value of x
y1=[0 7]; % mentioning value of y
plot(x1,y1,'--','Color','white','LineWidth',7) %Drawing liquid
................plotting pipes/product B
x=[-2.1 -8]; % mentioning value of x
y=[9.5 9.5]; % mentioning value of y
plot(x,y,'Color','cyan','LineWidth',7) %Drawing liquid inside pip
................plotting pipes/product B
x1=[-2.3 -2.3]; % mentioning value of x
y1=[9.5 7]; % mentioning value of y
plot(x1,y1,'Color','cyan','LineWidth',7) %Drawing liquid inside pip
..........................animatting filling by product B
x1=[-2.3 -2.3]; % mentioning value of x
y1=[0 7]; % mentioning value of y
plot(x1,y1,'--','Color','cyan','LineWidth',7)%Drawing liquid inside tank
pause(0.01) % delay time
%%%%%%%%%%%%%%%%Filling tank with product B %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pause(2);
for i=6:level_h
if get(handles.pause,'userdata')% getting response from pause-button
uiwait(handles.figure1); %UIWAIT makes Guide wait for getting continue button's response
end
if get(handles.emergency_stop,'userdata') % getting the response from Emergency-stop button
title('process is stopped as Emergency') %creating title
break; %stopping loop
end
level=(level+0.150); %%%level stpoint
%plotting level of liquid >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
patch([-4.4 4.15 4.15 -4.4],[ 0 0 level-3.60 level-3.60]-3.70,'cyan');%Starting line
x5=[0 0]; % mentioning value of x
y5=[-4 11]; % mentioning value of y
plot(x5,y5,'Color','black','LineWidth',12)
x6=[-2 2]; % mentioning value of x
y6=[-4 -4]; % mentioning value of y
plot(x6,y6,'Color','black','LineWidth',12)
rectangle('Position',[-3 -5 2 2.25],'FaceColor','black')
rectangle('Position',[1 -5 2 2.25],'FaceColor','black')
if get(handles.reset,'userdata')% getting the response from reset-button
break; %stopping loop
end
pause(0.001) % delay time
%%%.............computing vloume of Tank
H=level; %Height of tank's body
W=8; %weidth of tank's body
L=8; %lenght of tank's body
V=((W*L*H)); %computting the volume of the liquid
disp(V); %display value of the volume
set(handles.text1,'String',V);% setting value of text box
title(['Filling Tank//valve1 closed// Valve2 is open//Mixer is ON:',num2str(level_h),'%']); %creating Title
drawnow %animating procces
rectangle('Position',[-3 -5 2 2.25],'FaceColor','red');
rectangle('Position',[1 -5 2 2.25],'FaceColor','red');
pause(0.01)% making delay
rectangle('Position',[-3 -5 2 2.25],'FaceColor','black');
rectangle('Position',[1 -5 2 2.25],'FaceColor','black');
drawnow%animating process
end
%%%%%%%%%Starting to Empty Tank%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pause(1);%making delay
title('EMPTY TANK// Valve2,valve1 are closed ,Drain valve is open now')% making titile
for i=10:level_h % draining tank's Loop
if get(handles.pause,'userdata')%getting the response from pause button
uiwait(handles.figure1); %UIWAIT makes Guide wait for getting continue button's response
end
if get(handles.emergency_stop,'userdata') % getting the response from Emergency-stop button
break; %stopping loop
end
if get(handles.reset,'userdata')% getting the response from Emergency-stop button
break;%stopping loop
end
H=level; %Height of tank's body
W=8; %weidth of tank's body
L=8; %lenght of tank's body
V=((W*L*H)); %computting the volume of the liquid
disp(V); %display value of the volume
................plotting pipes/product B
x=[-2.1 -8]; % mentioning value of x
y=[9.5 9.5]; % mentioning value of y
plot(x,y,'Color','blue','LineWidth',7) %drawing pipe
................plotting pipes/product B
x1=[-2.3 -2.3]; % mentioning value of x
y1=[9.5 7]; % mentioning value of y
plot(x1,y1,'Color','blue','LineWidth',7) %drawing pipe
.....................plotting pipes/Drain pipes
x2=[0 0]; % mentioning value of x
y2=[-10 -7.05]; % mentioning value of y
plot(x2,y2,'--','Color','green','LineWidth',7)%DRAWING PIPE
....................plotting pipes/Drain pipes
x3=[-0.2 8]; % mentioning value of x
y3=[-10 -10]; % mentioning value of y
plot(x3,y3,'--','Color','green','LineWidth',7) %DRAWING PIPE
pause(0.01)%making delay
%plotting empty Tank>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
patch([-4.4 4.15 4.15 -4.4],[0 0 level level]-7.05,[1 1 1],'Edgecolor','white');%Ending level/plotting components
level=level-0.2150;% setting tank's level
patch([-4.4 4.15 4.15 -4.4],[0 0 level level]-7.05,'green');%Starting level
%.................
H=level; %Height of tank's body
W=8; %weidth of tank's body
L=16; %lenght of tank's body
V=((W*L*H)); %computting the volume of the liquid
disp(V); %display value of the volume
set(handles.text1,'String',V);
%....................................plotting Mixer
x5=[0 0]; % mentioning value of x
y5=[-4 11]; % mentioning value of y
plot(x5,y5,'Color','black','LineWidth',12)
hold on % keeping visible
x6=[-2 2]; % mentioning value of x
y6=[-4 -4];% mentioning value of y
plot(x6,y6,'Color','black','LineWidth',12)%plotting mixer
hold on % keeping visible
rectangle('Position',[-3 -5 2 2.25],'FaceColor','black')%plotting mixer
rectangle('Position',[1 -5 2 2.25],'FaceColor','black') %plotting mixer
pause(0.001)% delay time
drawnow%animating process
end
title(' Drain-valve closed-End of Process')% making title
.....................plotting pipes/Drain pipes
x2=[0 0]; % mentioning value of x
y2=[-10 -7.05]; % mentioning value of y
plot(x2,y2,'Color','blue','LineWidth',12)
....................plotting pipes/Drain pipes
x3=[-0.1 8]; % mentioning value of x
y3=[-10 -10]; % mentioning value of y
plot(x3,y3,'Color','blue','LineWidth',12)
clc; %cleaning the command window
if get(handles.emergency_stop,'userdata') % getting the response from Emergency-stop button
title('process is stopped as Emergency') %creating title
break; %stopping loop
end
if get(handles.reset,'userdata')%getting the response from reset-button
title('Process is reset') %creating title
break; %stopping loop
end
drawnow%animating process
end
return;
0 件のコメント
回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Lighting, Transparency, and Shading についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!