Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Matlab&提高文件读取效率的方法_Performance_Matlab_Import_Io_Vectorization - Fatal编程技术网

Performance Matlab&提高文件读取效率的方法

Performance Matlab&提高文件读取效率的方法,performance,matlab,import,io,vectorization,Performance,Matlab,Import,Io,Vectorization,我正在编写一个Matlab脚本,首先将一个以空格分隔的.log文件读入一个单元格数组。文件中的列标题都是字符串,但整个文件中的数据类型是混合的,因此为了简单起见,我现在一直将每个值都作为字符串处理 这就是我到目前为止所做的,它可以很好地处理小文件 fileID = fopen('file'); ImportData = char.empty; % create empty array to add on to while ~feof(fileID) tLines = fgetl(fil

我正在编写一个Matlab脚本,首先将一个以空格分隔的.log文件读入一个单元格数组。文件中的列标题都是字符串,但整个文件中的数据类型是混合的,因此为了简单起见,我现在一直将每个值都作为字符串处理

这就是我到目前为止所做的,它可以很好地处理小文件

fileID = fopen('file');
ImportData = char.empty; % create empty array to add on to

while ~feof(fileID)
    tLines = fgetl(fileID); % reads line into string
    raw = strsplit(tLines, ' '); %splits line into array for that line
    ImportData = cat(1, ImportData, raw); %adds line to rest of array
end

fclose(fileID);
然而,这个脚本需要读取的实际文件非常笨拙(30000多行,200多列),我发现这个过程非常慢。我做了一些研究,我相信矢量化是答案,但我对这个领域非常陌生

我可以通过哪些方式改变此过程以显著提高速度

编辑:列类型不一致,因此
importdata
函数不起作用。该文件的扩展名为.log,因此
readtable
函数不起作用。理想情况下,使用textscan的更快方法将是完美的

readtable(filename,'FileType','text','Delimiter',' ')
应该行得通。只要文件以“”分隔,文件扩展名“.log”就不相关。
如果您事先了解列格式,则可以进一步指定格式字符串/序列。指定格式字符串可以使操作更快。如果未指定格式,则如果整列为数字,则返回数字;如果混合,则返回单元格字符串。

列数是否固定?如果每行的列数(当然是每列的类型)相同,则可以使用matlabs内置的任何文件读取器功能。例如,或任何工作函数。您还可以使用第一行作为模板,设计一个
fscanf
。此外,还可以使用指定分隔符的方法。不知道数据就很难给出建议format@CarlWitthoft我认为,
ImportData
是一个变量。提供的代码似乎是c代码。建议使用Matlab的大量库。@patrik“ImportData”是这里的一个变量。整个文件中的数据类型不一致-有些列是字符串,有些是数字。这就是为什么据我所知,“importdata”功能无法工作的原因“文本扫描”是我一直在使用的,但我的问题是它对大文件的效率低下。可能重复谢谢!这正是我想要的。很高兴我能帮上忙。请你投票赞成我的回答好吗?