扩展 MATLAB waitbar 函数,支持嵌套 for 循环和自定义颜色

需积分: 16 1 下载量 96 浏览量 更新于2024-11-20 收藏 2KB ZIP 举报
资源摘要信息:"cwaitbar.m:waitbar函数的泛化。处理嵌套的for循环。-matlab开发" cwaitbar.m是一个在MATLAB环境下开发的扩展函数,它对MATLAB内置的waitbar函数进行了泛化和增强。waitbar函数通常用于在长时间运行的循环或计算中显示一个进度条,以通知用户程序正在运行,以及大概还需多久能够完成。然而,当面对复杂的计算任务,特别是在嵌套的for循环中时,标准waitbar函数无法提供足够的信息,比如哪些循环正在执行,或者哪个嵌套级别目前处于活动状态。 cwaitbar函数解决了这一问题,它能够在嵌套循环中使用,以提供更为详细和有用的进度信息。它支持将进度条设置成不同的颜色,而不仅仅是waitbar函数的默认红色,这使得用户能够更容易地识别和区分不同层次的进度信息。 从描述中我们可以提炼出以下关键知识点: 1. waitbar函数的增强版本:cwaitbar函数是为了提供在嵌套循环中展示进度信息的解决方案,它为每一个嵌套层次提供了单独的进度条。 2. 进度条显示和控制:cwaitbar函数能够根据传入的X参数(一个0到1之间的小数值)来动态地控制进度条的长度。这使得用户可以清楚地看到当前进度。 3. 嵌套循环中的使用:在嵌套的for循环中,通过分别调用cwaitbar函数,并传入适当的参数,可以为每个循环层次单独展示一个进度条。第一个调用的进度条对应于最外层循环,后面的调用则根据嵌套层次逐个对应。 4. 参数和功能:cwaitbar函数能够接受多个参数,包括进度值X、标题字符串TITLE以及自定义颜色COLOR。标题字符串可以用于展示当前活动的循环层次,而颜色参数则允许用户根据需要自定义进度条颜色。 5. 句柄返回:函数返回一个句柄H,可以利用这个句柄来进一步操控进度条的属性,例如改变位置或颜色。 6. 适用场景:cwaitbar函数特别适用于需要在用户界面上显示多个并行或嵌套进度条的场景,使程序的运行状态对于用户来说更加透明和可监控。 以下是一些可能的用法示例: - 在执行两层嵌套循环时,创建两个进度条,最外层循环控制第一个进度条,内层循环控制第二个进度条。 - 使用自定义颜色来区分不同层次的进度条,比如使用蓝色代表第一个循环,绿色代表第二个循环。 - 根据需要,可以通过句柄H来调整进度条的样式,比如改变大小、位置或者填充图案等。 需要注意的是,由于提供的是一个压缩包文件名列表,实际的cwaitbar.m函数代码并不在描述中提供,但根据描述和标签,我们可以推断这是一个专为MATLAB编写的脚本或函数文件,专门用于改善嵌套计算过程中的用户交互体验。

% 打印函数1:RGB输入,YCbCr输出 % RGB2YCbCr_Data_Gen(uinit8 img_RGB, uint8 img_YCbCr) % img_RGB:输入待处理的RGB图像 % img_YCbCr:输入处理后的YCbCr图像 % img_RGB.dat:输出 待处理的RGB图像hex数据(比对源数据) % img_YCbCr.dat:输出处理完的YCbCr图像hex数据(比对结果) function RGB2YCbCr_Data_Gen(img_RGB, img_YCbCr) h1 = size(img_RGB,1); % 读取图像高度 w1 = size(img_RGB,2); % 读取图像宽度 h2 = size(img_YCbCr,1); % 读取图像高度 w2 = size(img_YCbCr,2); % 读取图像宽度 % ------------------------------------------------------------------------- % Simulation Source Data Generate bar = waitbar(0,'Speed of source data generating...'); %Creat process bar fid = fopen('.\img_RGB.dat','wt'); for row = 1 : h1 r = lower(dec2hex(img_RGB(row,:,1),2))'; g = lower(dec2hex(img_RGB(row,:,2),2))'; b = lower(dec2hex(img_RGB(row,:,3),2))'; str_data_tmp = []; for col = 1 : w1 str_data_tmp = [str_data_tmp,r(col*2-1:col*2),' ',g(col*2-1:col*2),' ',b(col*2-1:col*2),' ']; end str_data_tmp = [str_data_tmp,10]; fprintf(fid,'%s',str_data_tmp); waitbar(row/h1); end fclose(fid); close(bar); % Close waitbar % ------------------------------------------------------------------------- % Simulation Target Data Generate bar = waitbar(0,'Speed of target data generating...'); %Creat process bar fid = fopen('.\img_YCbCr.dat','wt'); for row = 1 : h2 Y = lower(dec2hex(img_YCbCr(row,:,1),2))'; Cb = lower(dec2hex(img_YCbCr(row,:,2),2))'; Cr = lower(dec2hex(img_YCbCr(row,:,3),2))'; str_data_tmp = []; for col = 1 : w2 str_data_tmp = [str_data_tmp,Y(col*2-1:col*2),' ',Cb(col*2-1:col*2),' ',Cr(col*2-1:col*2),' ']; end str_data_tmp = [str_data_tmp,10]; fprintf(fid,'%s',str_data_tmp); waitbar(row/h2); end fclose(fid); close(bar); % Close waitbar

2023-06-10 上传