提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
闲来无事,在用Matlab跑循环比较长的时候,时间长,而且也没有进度条,百度发现多数用matlab自带的WaitBar函数实现,但我只想要一个在命令行显示的进度条,那么就自己写一个玩具吧。
一、代码
代码比较简单如下:
clc
clear all
close all
s = '/';
WaitBar = '【' ;
num = 70;%主循环的次数 与自己程序主循环相同
for i = 1: num
%------------循环主体----------
X = rand(1)* 0.3;%模拟循环
pause(X);
%-------------------------------
if i < num%构造字符串
if i <= 50
WaitBar = [WaitBar s num2str((i / num) * 100, '%.2f') '%'];
else
WaitBar = [WaitBar num2str((i / num) * 100, '%.2f') '%'];
end
else
WaitBar = [WaitBar '100%'];
end
clc%刷新命令行
ind=regexp(WaitBar,'\d','start');%查找数字索引
if i < num%输出字符串
disp([WaitBar WaitBar(2 : ind(1) - 1)]);
else
disp([WaitBar WaitBar(2 : ind(1) - 1) '】']);
end
WaitBar = WaitBar(1 : ind(1) - 1);
end
二、简单说明
循环数根据自己的主循环代入即可,输出动画在循环数小于等于50以内,动画会一直走,当循环数大于50时,只有百分数在动,要不然动画会一直往右边走,直到循环结束,会导致看不到百分数。
三、测试
1. 循环数为30次,小于50次。
2. 循环数为100次,大于50次。
总结
应该可以找到一个办法归一化循环次数,让动画每次的长度都相同,而且这样也会比较好看,之后再改吧。
另外,gif压缩也太折磨了!