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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章