Matlab app designer 进度条

 

在chat上问这个问题,它会告诉你拖进一个progress bar什么的——这个答案是完全没有帮助的,根本搜不到现成的这种控件。

而如果你自己按照原理设置进度条,比如在循环中更新画图或者文字,又会发现matlab app好像视若无睹一样,会在整个循环结束后,才姗姗来迟地显示最后一次循环的结果。

那么这是为什么呢?

就是因为缺少了图窗更新指令drawnow。

在Matlab APP Designer中如何制作进度条(字符型进度条)_app designer 进度条_奋进的小hang的博客-CSDN博客

其实之前就看过这位博主的博客,但是没有注意关键的drawnow,导致最后还是被matlab视若无睹失败。

自从意识到了drawnow加了drawnow,雨过天晴啊!突然这个进度条就能用,且变得很流畅了。

关于drawnow的更新速度是否适合需求:Matlab中drawnow函数的使用_matlab drawnow_jk_101的博客-CSDN博客

每秒20帧我觉得一般计算也够用了,没有那么快。

那么参考其他博主做字符型的,在matlab app里嵌入一个图像形态的也不是难事。

waitbar因为会另外跳出一个对话框,可能不适合matlab app用(我也没有试过,可以试一试)。

于是笔者想出了加一个绘图区即UIAxes,然后用plot,x值为循环到的位置,y值固定为1,绘制直线,搞得粗一点,就有进度条的感觉了。同时,对这个绘图区的标题也进行实时刷新,实现文字和进度条同时变化的状态

%开始循环,笔者这里是读了一个文件夹里的所有文件循环执行
%fileno是这个文件夹里文件的个数
%app.jindu1 是添加的“伪进度条”,也就是坐标区的名字
%在开始前,首先要固定一下进度条的长度,为fileno,用xlim设置。
 
app.jindu1.XLim=[0,fileno];
for f=1:fileno

                 plot(app.jindu1,1:1:f,ones(f),Color='b',LineWidth=3);
                 title(app.jindu1,strcat("进度 ",string(f),"/", string(fileno)))
                 drawnow

%.....后面是具体的计算
end

来看看效果(忽略水印):

 基本上和运算是完全同步的。

成功~

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值