textread函数
基本语法
[A,B,C,…] = textread(filename,format)[A,B,C,…] = textread(filename,format,N)
其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。
必须严格遵守用法不可出现data=textread(filename,format,N)的形式。其中括号里面变量的个数必须和format中定义的个数相同。 如果每N行相同格式的数据,可采用[A,B,C,…] = textread(filename,format,N)的语法,读取N次。
注:textread不用先fopen那个文件,适用于格式统一的txt文件的一次性大批量读取。textread读取某个文件后,下次再用textread读取这个文件时,还是会从文件头开始读取。
例1:无分隔符
mytest.txt123456789 10 11 12
>> [data1,data2,data3,data4]=textread('mytest.txt','%n%n%n%n');>> data=[data1 data2 data3 data4]data =123456789 10 11 12
或者,
>> [data1,data2,data3,data4]=textread(filename,'%n%n%n%n',3); %注意3为读取次数,应该是要读取的行数
例2:有分隔符(逗号,分号…)
myfile.txt 1, 2, 3, 45, 6, 7, 89, 10, 11, 12
>> [data1,data2,data3,data4]=textread('myfile.txt','%n%n%n%n','delimiter', ',')>> data=[data1 data2 data3 data4]data =123456789 10 11 12
这里delimiter是指出分隔符,读数据的时候会自动跳过分隔符。
例3:有分隔符及首行注释
myfiles.txt% this a comment1, 2, 3, 45, 6, 7, 89, 10, 11, 12
>> [data1,data2,data3,data4]=textread('myfiles.txt','%n%n%n%n','delimiter', ',','headerlines', 1);>> data=[data1 data2 data3 data4]data =123456789 10 11 12
textread中的headerlines指明了跳过几行,1可自由设定。这里headerlines告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。
例4:针对txt文件不同格式数据的读取
myfile.txtSally Level1 12.34 45 Yes
[names, types, x, y, answer] = textread('myfileli4.txt' , '%s %s %f %d %s', 1);
对应格式[A,B,C,…] = textread(filename,format,N)
例4.1: 如果要忽略12.34这个浮点数。
[names, types, y, answer] = textread('myfileli4.txt' , '%s %s %*f %d %s', 1)%*f 告诉textread跳过一个浮点数。names ='Sally'types ='Level1'y =45answer ='Yes'
例:4.2 如果要忽略Level,指读取后面的数字
>> [names, levelnum, x, y, answer] = textread('myfileli4.txt','%s Level%d %f %d %s', 1)names ='Sally'levelnum =1x =12.3400y =45answer ='Yes'
例5: txt中存在空位
myfileli5.txt1,2,3,4,,67,8,9,,11,12
想用nan替代为空的部分
>>[data1 data2 data3 data4 data5 data6] = textread('myfileli5.txt','%f%f%f%f%f%f', 'delimiter', ',', 'emptyvalue', NaN)>> data=[data1 data2 data3 data4 data5 data6];>> datadata =1234 NaN6789 NaN 11 12
例6: 跳列
myfileli6.txtSally Type1 12.34 45 YesJoe Type2 23.54 60 NoBill Type1 34.90 12 No
如果只想读第一列,其余的跳过
读入:
>> clear>> [names]=textread('myfileli6.txt','%s%*[^\n]');>> namesnames ='Sally''Joe''Bill'%*[^\n] 就是从当前直接跳到行尾。% *是一个跳过符号,表示跳过该位
[^\n] 就是一直读到行尾。例如
>> [names rest]=textread('myfileli6.txt','%s%[^\n]')names ='Sally''Joe''Bill'rest ='Type1 12.34 45 Yes''Type2 23.54 60 No''Type1 34.90 12 No'
例7:读入规律格式的数据
myfileli7.txtLocation;date;dischargeLobith;1989-01-01;00:00;2801Lobith;1989-01-02;00:00;2619
>> [location year month day hour minute discharge]=textread('myfileli7.txt','%s%f-%f-%f%f:%f%f','headerlines',1,'delimiter',';')location ='Lobith''Lobith'year =19891989month =11day =12hour =00minute =00discharge =28012619
转载自:关于matlab中textread