如何在Matlab中获取等待栏的值?也就是说,知道50%填充,75%,等等。我想可以使用创建进度条时返回的句柄(h)来完成:
> h = waitbar(0,'Please Wait');
我想这是一个非常简单的问题,然而,我一直在尝试,而没有解决它。感谢
答案 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()中打印任何循环值,这样您就可以在任何时候看到那里的当前值。显然循环的内容必须复杂,否则你可能没有时间阅读。