- 簡單示例說明(只是打印進度)
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