在Matlab中获取waitbar值

时间:2014-05-02 17:00:05

标签: matlab progress-bar

如何在Matlab中获取等待栏的值?也就是说,知道50%填充,75%,等等。我想可以使用创建进度条时返回的句柄(h)来完成:

> h = waitbar(0,'Please Wait');

我想这是一个非常简单的问题,然而,我一直在尝试,而没有解决它。感谢

2 个答案:

答案 0 :(得分:2)

有两种方法。

首先,来自waitbar()的{​​{3}}:

  

waitbar(x)后续callsto waitbar(x)扩展条的长度   到新的位置x。 x的连续值通常会增加。如果他们   减少,等待栏反向运行。

     

waitbar(x,h)将等待栏h中条形的长度扩展为   newposition x。

     

waitbar(x,h,'更新消息')更新等待栏中的消息文本   图,除了将分数长度设置为x。

其中x是介于0和1之间的值。

第二,更一般:

get()set()将允许您获取并更改documentation。执行get(h)将返回您可以解决和修改的对象句柄h的所有已记录属性的列表。

对于您不完全了解对象句柄结构的GUI,可能不太明显需要调整哪个对象的属性才能获得所需的结果。在waitbar()的情况下,从我的快速搜索中可以看出,您需要查看几个子图层以获得可以使用set()修改的绘制条形部分。考虑到waitbar()的功能已足够,这似乎要付出更多的努力。

至于找出预先存在的等待栏的价值是什么,这是一种非常迂回的方式(为什么不看看生成它的代码?):

h = waitbar(0,'Please Wait');
level1 = get(h,'Children');
level2 = get(level1,'Children');
test = get(level2(2),'xdata');

返回:

test = [0 0 0 0]

执行:

waitbar(0.5,h)   
test = get(level2(2),'xdata');

返回:

test = [0 50 50 0]

我不相信修改更正栏的正确字段(修改它并使用drawnow强制更新似乎没有影响),但它回答了问题

答案 1 :(得分:0)

如果您只是想知道您在数字上取得了多少百分比,请执行以下操作。这将显示等待栏本身的百分比。

a = randi(3,1,4000);

h = waitbar(0,'iteration');

for i = 1:3999

    x(i) = a(i)*a(i+1);

    waitbar(i/3999,h,sprintf('percentage = %2.2f',i/40))

end

close(h)

您可以在sprintf()中打印任何循环值,这样您就可以在任何时候看到那里的当前值。显然循环的内容必须复杂,否则你可能没有时间阅读。