Matlab - dlmread或textscan - 更快

时间:2016-06-08 08:37:54

标签: matlab file-read

我在将“.csv”文件读入Matlab时遇到时间问题。使用本论坛的以下部分,我发现行数大约是12万,列数是7.

function count = countLines(fname)
fh = fopen(fname, 'rt');
assert(fh ~= -1, 'Could not read: %s', fname);
x = onCleanup(@() fclose(fh));
count = 0;
while ~feof(fh)
count = count + sum( fread( fh, 16384, 'char' ) == char(10) );
end
end

我尝试使用dlmread命令将其读入Matlab,大约需要120秒:

tic
fname='test1_csv0.csv';
N1=countLines(fname)-1; 
N2=6;
blockmodel=dlmread('test1_csv0.csv',',',[1 0 N1 N2]);
toc

我在快速的Matlab阅读中找到了这篇文章

Fastest Matlab file reading?

但说实话,因为我不是程序员,我不知道如何使代码适应我的问题,哪个是最快的选择。我想在Matlab中保留解决方案,因为这是我唯一能理解的编程语言。 我很感激任何帮助让Matlab更快地阅读我的矩阵,你有没有经验,“textscan”可能比“dlmread”更好吗?

0 个答案:

没有答案