Matlab 程序添加运行进度条(waitbar及tic/toc)

  • 简单示例说明(只是打印进度)
wait_title = waitbar(0,'Please Wait');                                         %运行进度条初始化对象
for i = 1 : 100
    for j = 1 : 100 
    %%%%
    %代码块
    %%%%
    str = ['运行中...',num2str(((i-1)*100+j)/10000*100),'%'];                  %运行进度格式化显示
    waitbar(((i-1)*100+j)/10000,wait_title,str);                               %运行进度显示
    end
end
delete(wait_title);                                                            %删除进度条
close(wait_title);                                                             %关闭进度条
  • 复杂示例(同时打印进度和运行时间)
    示例
    1、主程序
tic;
wait_title = waitbar(0,'Please wait');                           %运行进度条初始化
EbN0 = 1:2;                                                      %输入比特信噪比 Eb/N0 (dB)
FrameNum =[1 2];                                                 %每个信噪比仿真帧数

for i=1:1:length(snr(:))
    for Idx =0:(FrameNum(i)-1)
    
        %%%%
        %代码块
        %%%%
        
        rate_progress = calculate_progress(i,Idx,EbN0,FrameNum);           %计算程序进度
        time_out = convert_time(toc);                                      %计算运行时间
        str = ['运行进度:',num2str(rate_progress*100),'%','-------','运行时间:',time_out];%运行进度格式化显示
        waitbar(rate_progress,wait_title,str)                              %运行进度显示
    end
end
toc;

2、时间转换函数

function time_out = convert_time(time_in)
% 输入toc为double类型,单位s
% 时间转换,输出为char类型xdxhxmxs格式
time_days = fix(time_in/86400);
time_hours = fix((time_in - 86400*time_days)/3600);
time_minutes = fix((time_in - 86400*time_days - 3600*time_hours)/60);
time_seconds = fix(time_in - 86400*time_days - 3600*time_hours - 60*time_minutes);
if time_days == 0 
    if time_hours == 0
        if time_minutes == 0
            time_out = [num2str(time_seconds),' ','s'];
        else
            time_out = [num2str(time_minutes),' ','m',' ',num2str(time_seconds),' ','s'];
        end
    else
        time_out = [num2str(time_hours),' ','h',' ',num2str(time_minutes),' ','m',' ',num2str(time_seconds),' ','s'];
    end
else
     time_out = [num2str(time_days),' ','d',' ',num2str(time_hours),' ','h',' ',num2str(time_minutes),' ','m',' ',num2str(time_seconds),' ','s'];
end
end

3、进度换算函数

function rate_progress = calculate_progress(i,Idx,EbN0,FrameNum)
%% 计算程序运行进度
if i == 1
    rate_progress = (Idx+1)/sum(FrameNum(1:length(EbN0)));
else
    rate_progress = (sum(FrameNum(1:i-1))+(Idx+1))/sum(FrameNum(1:length(EbN0)));
end
end

微信公众号:通信随笔XIDIAN

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xidian_hxc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值