我已经在我的电脑上安装了 Matlab r2010a。
使用matlab中的xlsread函数并行读取数据时,如何在waitbar图中显示更新的进度?
非常感谢您的回答。
(编辑)
我的意思是,当xlsread正在一一加载数据时,您可以在waitbar中看到加载进度。
有什么办法吗?
PD:我只想从一个 *.xls 文件中加载数据
我已经在我的电脑上安装了 Matlab r2010a。
使用matlab中的xlsread函数并行读取数据时,如何在waitbar图中显示更新的进度?
非常感谢您的回答。
(编辑)
我的意思是,当xlsread正在一一加载数据时,您可以在waitbar中看到加载进度。
有什么办法吗?
PD:我只想从一个 *.xls 文件中加载数据
有几个选项:
.mex
文件并计算出不同的 MATLAB 版本的未记录内存表示(可能非常困难,但我相信使用一些调试器是可能的)。myxlsread.m
一种更简单的方法:使用xlsread.m
,xlsreadCOM.m
并xlsreadXLSX.m
作为出发点创建自己的。waitbar
在连续xlsread
命令之间循环更新,那非常容易。1.
.mex
文件解决方案:如果要显示单个函数调用的进度,xlsread
我相信事情会变得相当复杂。首先,您需要有两个线程,为此您需要使用.mex
文件或其他方式。第二个问题是 AFAIKxlsread
不会发出任何进度信号,这意味着您的.mex
函数需要以某种方式获取被调用xlsread
函数的变量(元胞数组或矩阵等)的内存地址。如果这是您想要的,那么此文档可能会很有用: http: //undocumentedmatlab.com/blog/matlabs-internal-memory-representation/请注意,MATLAB 的内部存储器表示完全没有文档记录,并且可能随时更改,并且在不同的 MATLAB 版本中有所不同,因此对于单个而言,waitbar
这将是太多的工作。
2.
myxlsread.m
解决方案:好消息是它不是内置的xlsread
(至少不是在 MATLAB R2012a 中),因此您可以毫无问题地阅读代码并使用 MATLAB 调试器对其进行跟踪。由于它不是内置的,因此可能的选项是创建您自己的 custom ,myxlsread.m
以xlsread.m
,为例或直接修改它们以添加更新函数调用,如果在您的情况下版权问题不是问题(例如。您不分发代码或当地法律允许)。我认为修改或重新创建你的是最可行的方法。xlsreadCOM.m
xlsreadXLSX.m
waitbar
myxlsread.m
3.
循环内xlsread
解决方案:但是,如果您只想waitbar
在单独xlsread
的函数调用之间进行更新,那么这根本不是问题,它将类似于:
XlsFilenamesCellArray = { 'file1.xls', 'file2.xls', 'file3.xls' };
NumberOfFiles = size(XlsFilenamesCellArray, 2)
h = waitbar(0, '1', 'Name', 'xlsread loop progress', 'CreateCancelBtn', 'setappdata(gcbf, ''canceling'', 1)');
for Index = 1:size(XlsFilenamesCellArray, 2)
waitbar(Index/NumberOfFiles, h, sprintf('reading .xls file %d of %d', Index, NumberOfFiles));
[num{Index}, text{Index}, raw{Index}] = xlsread(XlsFilenamesCellArray{Index});
end