matlab中读取规则txt文件的效率比较

您所在的位置:网站首页 dat文件读取快吗 matlab中读取规则txt文件的效率比较

matlab中读取规则txt文件的效率比较

2024-06-25 07:19| 来源: 网络整理| 查看: 265

1.load读取方式 只能读取数值数据,不能读取含文本的数据;日期按数值读取。 无需输入分隔符,可自动识别空格、逗号、分号、制表符。 不能自定义读取范围: 适用于txt、csv。

所耗时间:13.030081秒。

2.importdata读取方式 可读取数值数据和含文本的数据,但是要求文本在数据的第一行或第一列(不能同时在行和列都有文本)。返回值分为数值部分(data)和文本部分(textdata) 例如:a=importdata(filename,delm,nheaderlines); 多列数据时需输入分隔符。若不输入分隔符,整行会被作为字符串放入一列。 可从某一行开始读取数值数据。若使用importdata按钮,则可自定义读取范围和设置数据类型。 适用txt、xls、xlsx、csv。

所耗时间:3.437969秒。

3.textscan读取方式 可对列按照自定义格式读取数据,必须输入每列的读取格式,可跳过某个列或几列。按数值读取时,缺少值以NaN填补;按字符读取时,缺少值以空格填补。返回值按列放入元胞数组。 例如:c = textscan(fid,'format',n,'param',value) 可自定义分隔符,不是必须的。 可以自定义读取范围(行列)。

所耗时间:2.188760秒。 如果只读取四列: 所耗时间:1.809791秒。

4 dlmread(不推荐)建议readmatrix 将 ASCII 分隔的数值数据文件读取到矩阵 可以指定行列范围(必须已知结尾行列数,没有inf选项)。 例如 M = dlmread(filename,delimiter,[R1 C1 R2 C2])

dmlread(path); 所耗时间:4.599068秒。

dmlread(path,‘’,[0 0 5 3]); 所耗时间:0.012396秒。

5 readmatrix(2019a版本推出) A = readmatrix(filename) 通过从文件中读取列向数据来创建数组。readmatrix 函数可自动检测文件的导入参数。 readmatrix 基于文件的扩展名确定文件格式: (适用于带分隔符的文本文件).txt、.dat 或 .csv (适用于电子表格文件).xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx 或 .ods 对于包含数值和文本混合数据的文件,默认情况下,readmatrix 将数据作为数值数组导入。 6 fscanf 低级函数,适用范围最广。 使用方法与textscan类似,需要fopen和指定格式(但无法指定精度)。默认按列读取,否则需要指定矩阵大小。 例如:A = fscanf(fileID,formatSpec,[m n]) 可以跳过特定字符(比如跳过字母而只保留数字),列数,有inf选项。

fileID = fopen(path); file = fscanf(fileID,‘%d %f %f %f %f %f %f %f %f %f %f’); 所耗时间:26.793546秒。

跳过一部分后还是很慢……推测是因为不能指定精度造成的。

fileID = fopen(path); file = fscanf(fileID,‘%d %f %f %f %*f %*f %*f %*f %*f %*f %*f’); 所耗时间:26.824455秒。

总结

通过低级文件 I/O 函数,可以最大程度地控制文件数据的读取和写入。但是,相对于更易于使用的高级函数,例如 importdata,这些低级函数要求指定更为详细的文件信息。有关读取文本文件的高级函数的详细信息,请参阅导入文本文件。

目前来看tesxtscan是最快的,如果跳过一定行列会更快,但是需要输入相应格式,使用起来没有那么方便。importdata速度次之,而且可以不用输入格式。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3