
关于如何在MATLAB GUI中加入进度条的问题
做了一个SVM算法的GUI图形界面,如何为算法执行过程添加waitbar呢?新手,求帮助啊!界面上包含一个pushbutton,按下后算法开始执行,想要在按下时弹出wai...
做了一个SVM算法的GUI图形界面,如何为算法执行过程添加waitbar呢?
新手,求帮助啊!
界面上包含一个pushbutton,按下后算法开始执行,想要在按下时弹出waitbar对话框,算法结束后waitbar显示已完成100% 展开
新手,求帮助啊!
界面上包含一个pushbutton,按下后算法开始执行,想要在按下时弹出waitbar对话框,算法结束后waitbar显示已完成100% 展开
2个回答
展开全部
给个参考程序你看看
x = 0;
h = waitbar(x,'请稍等','CreateCancelBtn','delete(gcbf)');
hBtn = findall(h, 'type', 'uicontrol');
set(hBtn, 'string', '取消', 'FontSize', 10);
try
while ishandle(h)
waitbar(x, h, ['当前进度:' num2str(x*100) '%']);
x = x + 0.1;
if x > 1
break
end
pause(1);
end
delete(h);
clear h;
end
x = 0;
h = waitbar(x,'请稍等','CreateCancelBtn','delete(gcbf)');
hBtn = findall(h, 'type', 'uicontrol');
set(hBtn, 'string', '取消', 'FontSize', 10);
try
while ishandle(h)
waitbar(x, h, ['当前进度:' num2str(x*100) '%']);
x = x + 0.1;
if x > 1
break
end
pause(1);
end
delete(h);
clear h;
end
追问
怎样把这个和算法主程序结合,使进度条实时反应程序进程呢?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
function mywaitbar(x,num,varargin)
if nargin < 1
error('Input arguments not valid');
end
fh = varargin{end};
set(0,'CurrentFigure',fh);
fAxestemp = findobj(fh,'type','axes')
fAxes = fAxestemp(num);
set(fh,'CurrentAxes',fAxes);
if nargin > 1
hTitle = get(fAxes,'title');
set(hTitle,'String',varargin{1});
end
fractioninput = x;
x = max(0,min(100*x,100));
if fractioninput == 0
cla
xpatch = [0 x x 0];
ypatch = [0 0 1 1];
xline = [100 0 0 100 100];
yline = [0 0 1 1 0];
patch(xpatch,ypatch,'b','EdgeColor','b','EraseMode','none');
set(fh,'UserData',fractioninput);
l = line(xline,yline,'EraseMode','none');
set(l,'Color',get(gca,'XColor'));
else
ptemp = findobj(fh,'Type','patch');
p = ptemp(num);
ltemp = findobj(fh,'Type','line');
l = ltemp(num);
if (get(fh,'UserData') > fractioninput)
set(p,'EraseMode','normal');
end
xpatch = [0 x x 0];
set(p,'XData',xpatch);
xline = get(l,'XData');
set(l,'XData',xline);
end
drawnow;
if nargin < 1
error('Input arguments not valid');
end
fh = varargin{end};
set(0,'CurrentFigure',fh);
fAxestemp = findobj(fh,'type','axes')
fAxes = fAxestemp(num);
set(fh,'CurrentAxes',fAxes);
if nargin > 1
hTitle = get(fAxes,'title');
set(hTitle,'String',varargin{1});
end
fractioninput = x;
x = max(0,min(100*x,100));
if fractioninput == 0
cla
xpatch = [0 x x 0];
ypatch = [0 0 1 1];
xline = [100 0 0 100 100];
yline = [0 0 1 1 0];
patch(xpatch,ypatch,'b','EdgeColor','b','EraseMode','none');
set(fh,'UserData',fractioninput);
l = line(xline,yline,'EraseMode','none');
set(l,'Color',get(gca,'XColor'));
else
ptemp = findobj(fh,'Type','patch');
p = ptemp(num);
ltemp = findobj(fh,'Type','line');
l = ltemp(num);
if (get(fh,'UserData') > fractioninput)
set(p,'EraseMode','normal');
end
xpatch = [0 x x 0];
set(p,'XData',xpatch);
xline = get(l,'XData');
set(l,'XData',xline);
end
drawnow;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询