找回密码
 注册
Simdroid-非首页
查看: 95|回复: 3

请教:关于waitbar的问题

[复制链接]
发表于 2008-6-5 11:12:23 | 显示全部楼层 |阅读模式 来自 湖南株洲
为了在软件里面做一个waitbar用来显示simulink的仿真进度,但是碰到问题了。
查看waitbar的帮助如下
h = waitbar(0,'Please wait...');
        for i=1:100,
            % computation here %
            waitbar(i/100,h)
        end
        close(h)
但是如果把  % computation here % 用语句 sim(‘mymodel’)代替,却很慢很慢,
原先直接仿真只要60s 但是现在几十分钟进度条也还是那么一点 到底该怎么办呢 ?
发表于 2008-6-5 12:23:18 | 显示全部楼层 来自 上海
Simdroid开发平台
因为你加入sim(‘mymodel’)后,每次循环都要执行sim(‘mymodel’)一次,总只约要60*100s.
应该把进度条放在sim(‘mymodel’)之中控制。
如果想简单一点,可以这样做:
h = waitbar(0,'Please wait...');
        for i=1:50,
            % computation here %
            waitbar(i/100,h)
        end
sim(‘mymodel’)
        for i=51:100,
            % computation here %
            waitbar(i/100,h)
        end
        close(h)

不过这样的话就没有反应出仿真的真正进度。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2008-6-5 13:40:49 | 显示全部楼层 来自 湖南株洲

回复 2# 的帖子

既然加进度条了 那肯定要反应其进度啊,大侠可否有更好的办法?
回复 不支持

使用道具 举报

发表于 2008-6-6 08:41:40 | 显示全部楼层 来自 上海
这就要看你sim(‘mymodel’)的具体情况了。
通常开始时用:
h = waitbar(0,'Please wait...');

中间用:
waitbar(0.5,h)
%其中的数字根据你程序的进度进行调整,0.5表示进行到一半
%如果程序中有循环,可以用循环的次数进行控制

结束用:
waitbar(1,‘Finished...')
close(h)
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 11:20 , Processed in 0.056601 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表