前言
在通信仿真的时候,很多情况下数据量过大导致运行时间很长。为了方便跟踪进度,我们就需要进度条来将进程可视化。
一、基本原理
进度条的使用通常配合程序中的for循环来完成,每次循环中都更改一次进度数值并进行显示。
二、代码范例
代码如下(示例):
h=waitbar(0,'please wait...'); %打开进度条,命名是为了方便关闭
%设置双缓存,为了防止在不断循环画动画的时候会产生闪烁的现象
set(h,'doublebuffer','on');
for i=1:100
if i>=88
waitbar(i/100,h,'计算即将完成'); %逐步显示进度条
pause(0.05); %实际仿真的时候不必暂停显示
else
%更改进度条显示内容
str=['正在计算中',num2str(i),'%...'];
waitbar(i/100,h,str);
pause(0.05);
end
end
close(h); %关闭进度条
其中,第三行代码设置双缓存的意义在于减少进度条显示画面闪烁。
因为一般绘制一帧图形的时间比较长,如果直接在“屏幕”上绘制的话,用户就会看到这个绘制的过程,导致闪烁现象。所以很多时候都是在某一块显存区域中先画好,然后直接将这块内存区域的内容搬移到“屏幕”上。内存搬移的速度非常快,所以用户看到的就是一帧中的内容同时显示出来的效果。后者就被称为“双缓冲”技术。
参考
代码主体来自于哈工大“通信系统仿真”课程PPT。
部分代码解释来自于参考链接