首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xlsread和waitbar MATLAB

xlsread和waitbar MATLAB
EN

Stack Overflow用户
提问于 2012-06-17 05:49:13
回答 1查看 1.7K关注 0票数 0

我已经在我的电脑上安装了Matlab r2010a。

如何在使用matlab中的xlsread函数并行读取数据时,在等待条图中显示更新的进度?

非常感谢你的回答。

(编辑)

我的意思是,当xlsread一个一个地加载数据时,您可以在服务条中看到加载进度。

有办法吗?

PD:我只想从一个*.xls文件中加载数据

EN

回答 1

Stack Overflow用户

发布于 2012-06-17 07:26:53

有几种选择:

  1. --一个困难的选项:创建一个.mex文件并计算出不同的.mex版本的无文档内存表示(可能相当困难,但我相信使用一些调试器是可能的)。
  2. 是一种更简单的方法:使用xlsread.mxlsreadCOM.mxlsreadXLSX.m创建自己的myxlsread.m,作为离开点。H 29H 110如果您只需要在连续的xlsread命令之间的循环中更新d11,这非常容易。H 213G 214

1. .mex文件解决方案:如果您想显示单个xlsread函数调用的进度,我相信事情会变得相当复杂。首先,您需要有两个线程,为此您需要使用.mex文件或其他一些方法。第二个问题是,AFAIK xlsread不发送任何进度信号,这意味着您的.mex函数需要以某种方式获取变量(单元格数组或矩阵等)的内存地址。所谓的xlsread函数。如果这是您想要的,那么这个文档可能是有用的:http://undocumentedmatlab.com/blog/matlabs-internal-memory-representation/确实注意到MATLAB的内部内存表示是完全没有文档化的,并且可能在不同的waitbar版本中发生变化,因此对于单个waitbar来说,这将是太多的工作。

2.,myxlsread.m解决方案:好消息是,xlsread不是内置的(至少在MATLAB R2012a中不是这样),所以您可以阅读代码并使用MATLAB调试器来跟踪它。因为这不是一个内置的选项,可能的选择是创建您自己的自定义myxlsread.m,方法是以xlsread.m、xlsreadCOM.m和xlsreadXLSX.m为例,或者直接修改它们以添加waitbar更新函数调用,如果在您的情况下版权问题不是问题的话。你不分发代码或当地法律允许它)。我认为修改或重新创建myxlsread.m是最可行的方法。

循环中的3. xlsread解决方案:但是,如果您只想在单独的xlsread函数调用之间更新waitbar,那么这根本不是一个问题,它应该是这样的:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11069221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档