【问题标题】:adding wait bar to matlab gui将等待栏添加到 matlab gui
【发布时间】:2015-11-23 18:43:59
【问题描述】:

我已经创建了 MatLab GUI,它通过单击 GUI 上的按钮来执行 matlab 脚本。

现在我想要显示运行该脚本所花费时间的方法

以下代码显示了到目前为止我是如何做到的

function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
run('resizeingDONTDELETE.m');
end 

我找到了显示等待栏的代码,但它不起作用!!!

h = waitbar(0,'Please wait...');
steps = 1000;
for step = 1:steps
run('resizeingDONTDELETE.m');
    waitbar(step / steps)
end
close(h)

这里我想要的结果如下,

  • 当点击按钮时,等待按钮应该打开并且应该 显示时间为零
  • 时间应该随着执行脚本的时间而增加
  • 执行后等待栏应该消失

谁能帮帮我.......

【问题讨论】:

  • 你的waitbar调用应该在resizeingDONTDELETE.m内部的某个地方,如果它有一个for循环,而不是在外面。
  • 发生了什么不包含 for 循环
  • 如何修改以显示进度(我的意思是当脚本执行一半时,条形图保持在中间点,同样如此)
  • 看我的回答,评论太长了

标签: matlab user-interface


【解决方案1】:

如果您的脚本被划分为一些中间步骤(不一定是 for 循环),waitbar 很有用,您可以在其中指示每个中间步骤中(或之前)的进度。在伪代码中,假设您有 4 个中间步骤:

  • 主脚本
    • 等待栏(0/4)
    • 执行中间步骤 1
    • 等待栏(1/4)
    • 执行中间步骤 2
    • 等待栏(2/4)
    • 执行中间步骤 3
    • 等待栏(3/4)
    • 执行中间步骤 4
    • 等待栏(4/4)

否则,如果您的脚本是一个“黑匣子”,它在启动和终止时没有让您访问某些中间步骤 - 您无法以有用的方式使用 waitbar

【讨论】:

  • 你能帮我用时间表示一下吗(我的意思是这个过程所花费的时间,以秒/分钟/小时为单位)
  • 为了表示时间,你需要知道(至少大约)总时间t_total,所以你可以在开头写tt=tic;然后waitber(toc(tt) / t_total)
  • 它会显示时间吗(我的意思是时间数字{让 1s 为 00 00 01,2s 为 00 00 02,最后 00 t_total 55(假设)同样明智})
  • 不,它会显示总时间中的部分时间,即完整的等待栏对应于1 的值。如果您需要时间,为什么不直接printf 时间?
  • 如果是这样,那么我如何在同一个等待栏上打印它waitbar(toc(tt) / t_total);printf(tt); close(h) 是否可能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
相关资源
最近更新 更多