Matlab读入含有特殊分隔符的文件(textread) | 您所在的位置:网站首页 › matlab读取matlab文件 › Matlab读入含有特殊分隔符的文件(textread) |
笔者在此基础上进行运行,修改得到以下内容,希望大家给与补充: 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.txt 1 2 3 4 5 6 7 8 9 10 11 12 读取:>>[data1,data2,data3,data4]=textread('mytest.txt','%n%n%n%n');>>data=[data1 data2 data3 data4]data = 1 2 3 4 5 6 7 8 9 10 11 12或者,[data1,data2,data3,data4]=textread(filename,'%n%n%n%n',3);%注意3为读取次数,应该是行数.................................................................................... 例2:有分隔符(逗号,分号...)myfile.txt 中的内容如下: 1, 2, 3, 4 5, 6, 7, 8 9, 10, 11, 12 读取:>> [data1,data2,data3,data4]=textread('myfile.txt','%n%n%n%n','delimiter', ',')>> data=[data1 data2 data3 data4] data = 1 2 3 4 5 6 7 8 9 10 11 12这里delimiter是指 指出分隔符,读数据的时候会自动跳过分隔符。 至此应该知道Iris.txt怎么读入了吧。[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s','delimiter',','); 需要注意的是,参数位置要和textread函数用法对应[A,B,C,…] = textread(filename,format,N)也就是filename,format,N三个参数必须在其他参数前面,所以150才会出现在format后例如:[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s',150,'delimiter',',');.............................................................................. 例3:有分隔符及首行注释myfiles.txt 中的内容如下: % this a comment 1, 2, 3, 4 5, 6, 7, 8 9, 10, 11, 12 >> [data1,data2,data3,data4]=textread('myfiles.txt','%n%n%n%n','delimiter', ',','headerlines', 1);>> data=[data1 data2 data3 data4] data = 1 2 3 4 5 6 7 8 9 10 11 12textread中的headerlines指明了跳过几行,1可自由设定这里headerlines告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。.............................................................................. 例4:针对txt文件不同格式数据的读取 myfile.txt 中的内容如下: Sally 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 = 45 answer = 'Yes' 对于iris.txt如果只想读取数据可用[data1,data2,data3,data4]=textread('Iris.txt','%f %f %f %f %*s',150,'delimiter',',');____________________________________________________________________________________________ 例:4.2 如果要忽略Level,指读取后面的数字, >> [names, levelnum, x, y, answer] = textread('myfileli4.txt','%s Level%d %f %d %s', 1) names = 'Sally' levelnum = 1 x = 12.3400 y = 45 answer = 'Yes'________________________________________________________________________________________________..............................................................OK ...............................................例5: txt中存在空位 myfileli5.txt 中的内容如下 1,2,3,4,,6 7,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];>> data data = 1 2 3 4 NaN 6 7 8 9 NaN 11 12 .................................................................................................................... 例6: 跳列 myfileli6.txt 中的内容如下 Sally Type1 12.34 45 Yes Joe Type2 23.54 60 No Bill Type1 34.90 12 No 如果只想读第一列,其余的跳过 读入:>> clear>> [names]=textread('myfileli6.txt','%s%*[^\n]');>> names names = 'Sally' 'Joe' 'Bill' %[^\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' %*[^\n] 就是从当前直接跳到行尾。% *是一个跳过符号,表示跳过该位 .................................................................................... 例7:读入规律格式的数据 myfileli7.txt 中的内容如下 Location;date;discharge Lobith;1989-01-01;00:00;2801 Lobith;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',';'); 如下:>> clear>> [location year month day hour minute discharge]=textread('myfileli7.txt','%s%f-%f-%f%f:%f%f','headerlines',1,'delimiter',';') location = 'Lobith' 'Lobith' year = 1989 1989 month = 1 1 day = 1 2 hour = 0 0 minute = 0 0 discharge = 2801 2619
|
CopyRight 2018-2019 实验室设备网 版权所有 |