简介
在使用matlab处理纯数据文本时,读入数据的方式有多种,最为常用的例如
x=load('test.txt');
但是在处理大数据的纯数据文本时,这样处理将会由数据量太大引发两个问题,一是由于数据量太大,读取速度变得异常缓慢,并且大多数时候我们希望处理的只是文本中的特殊指定行数据,采用load命令读取时将会读入大量无用数据。二是数据量的增大可能会使计算过程所需内存超过计算机内存的大小,使得计算无法进行。因此,读取大数据文本中的指定行无论是在速度上还是读取内存上都是十分必要的。下面我们直接以实例说明如何读取,然后介绍每一个命令的作用。
大数据本文指定行读取实例
以小文件举例,文件名为text_read.txt文件数据如下
-0.001940351347998221 -0.002447468841927971 -0.003448582418974663 -0.001915551524648429 -0.003377266415421298 -0.00245623624060616 -0.003504417712869881 -0.003514031030093492
-0.003295993824015069 -0.003697704115825737 -0.00245819548930619 -0.002298981181017425 -0.003519969253538045 -0.002481369263018046 -0.001932520561117142 -0.002263193919843499
-0.004631579275425467 -0.006142005192750063 -0.004450440454568088 -0.0005441652310226853 -0.007236620134015517 -0.002784177149229848 -0.001563447678647398 -0.002631038832646881
-0.007965477029143369 -0.007328280267789456 -0.002403859256693903 0.002914631651510203 -0.001984913187393805 -0.003267870552142102 -0.001213062871591869 -0.004025298647224048
-0.005293340986443498 -0.003606498688767697 -0.002009604771877031 0.002511629249518505 -0.006642122695538116 -0.003911031830255144 -0.0008816781162898037 -0.005115025830764239
0.0002343764483681398 -8.421313773576052e-06 -0.005117960638573307 0.0009294763983370129 -0.002013648360301901 -0.004521769744771036 -0.0005415417040884348 -0.005269060053593039
-0.001791673162769193 -0.003822114649245079 -0.001548195044163779 0.003914618627684868 -0.005922899389395665 -0.004711666805016543 -0.0001648898338060053 -0.004728646652711703
-0.007815339734147874 -0.008253847781375841 -0.001485937093351578 0.004814485370147142 0.0001406205875651433 -0.003999260358974272 0.0002672092028351639 -0.003877159672266814
-0.00476180568316834 -0.0006499149272771123 -0.005562903548836026 0.003298302610324268 -0.007925475447041327 -0.002355450720006214 0.0007612545281610104 -0.003245372479851918
0.003043519528694852 0.001217956569020645 -0.00041462897074267 0.005557049433315358 0.003288061544477133 -0.0003059216866924256 0.001284030145812199 -0.003038211536393332
为的数据,我们现在想要读其中的第7行数据。我们采用如下命令即可做到
fid=fopen('text_read.txt','r');
FormatString=repmat('%.18f',1,8);
data=cell2mat(textscan(fid,FormatString,1,'headerlines',6));
fclose(fid);
命令解释
- fopen用于获取文件id
- repmat用于设置所需读取数据格式,repmat是指重复矩阵,由1×1变为1×8,因为文件中保留了小数点后18位,所以使用%.18
- textscan从文本中格式化读取数据,FormatString后面的1表示重复1次FormatString格式,’headerlines’参数表示跳过行数,采用textscan得到的是元胞数组,cell2mat将元胞数组转为基础数据类型的普通数组
- fclose用于关闭文件
