Matlab的水平步骤中的Waitbar

问题描述

| 我正在尝试修改代码
h = waitbar(0,\'Please wait...\');

for i=1:10,% computation here %  waitbar(i/10) end
close(h)
如何将服务栏划分为10个步骤。我的意思是它应该看起来像
-------------------
| | | | | | | | | |
-------------------
    

解决方法

以下代码将使您可以在等待栏中添加垂直线:
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上可以找到很多替代方案,因此,如果内置函数不能满足您的需要,我当然会检查一下。 ;)     ,您可以随时从零开始重新启动并更新消息。例如:
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
    ,我不确定如何向等待栏本身添加步骤,但是您可以添加一条动态消息,该消息会更改以显示完成了多少计算:
h = waitbar(0,\'Please wait...0% complete\');
for i = 1:10
    % Computation here
    waitbar(i/10,sprintf(\'Please wait...%d%% complete\',100*(i/10)));
end
close(h);
    ,由于ѭ6是内置功能,灵活性较低,我认为没有简单的方法可以使等待栏看起来像您想要的。如果真的很重要,您可以在几种进度模式下绘制一个等待栏,并将其另存为图片。然后您就可以将图片加载到看起来像等待栏的简单GUI中! ;)