我正在尝试修改此代码
h = waitbar(0,'Please wait...');
for i=1:10, % computation here % waitbar(i/10) end
close(h)
如何将waitbar分成10个步骤。我的意思是它应该看起来像
-------------------
| | | | | | | | | |
-------------------
答案 0 :(得分:5)
以下代码允许您向waitbar添加垂直线:
hWait = waitbar(0,'Progress'); %# Create the waitbar and return its handle
hAxes = get(hWait,'Children'); %# Get the axes object of the waitbar figure
xLimit = get(hAxes,'XLim'); %# Get the x-axis limits
yLimit = get(hAxes,'YLim'); %# Get the y-axis limits
xData = repmat(linspace(xLimit(1),xLimit(2),11),2,1); %# X data for lines
yData = repmat(yLimit(:),1,11); %# Y data for lines
hLine = line(xData,yData,'Parent',hAxes,... %# Plot the lines on the axes...
'Color','k',... %# ... in black...
'HandleVisibility','off'); %# ... and hide the handles
运行上面的代码然后执行waitbar(0.35,hWait);
后,您会看到如下图:
注意:图中的黑线(我添加的垂直线和进度条周围已存在的框)将间歇地出现在红色的上方或下方进度条更新时。这似乎是WAITBAR行为的现有错误,我还没有找到解决方法来纠正它。但是,在MathWorks File Exchange上可以找到很多替代方案,所以如果内置函数没有为ya做,我肯定会检查出来。 ;)
答案 1 :(得分:2)
Yo可以随时从零重启并更新消息。例如:
h = waitbar(0, 'Please wait...');
for step=1:10
waitbar(0, h, ['Step ' num2str(step) '/10 - Please wait...']);
for i=1:100
% Work...
waitbar(i/100, h);
end
end
答案 2 :(得分:1)
我不确定如何向等待栏本身添加步骤,但您可以添加一条动态消息,该消息会更改以显示计算完成的程度:
h = waitbar(0,'Please wait...0% complete');
for i = 1:10
% Computation here
waitbar(i/10, h, sprintf('Please wait...%d%% complete',100*(i/10)));
end
close(h);
答案 3 :(得分:0)
由于waitbar
是一个灵活性较低的内置函数,我认为没有简单的方法可以让waitbar看起来像你想要的那样。如果它真的很重要,你可以在几个进度模式中绘制一个等待栏并将其保存为图片。然后你可以在一个看起来像等候栏的简单gui中加载图片! ;)