matlab中textread 函数
textread
基本語法是:
????[A,B,C,…] = textread(filename,format)
????[A,B,C,…] = textread(filename,format,N)
其中filename就是文件名, format就是要讀取的格式,A,B,C就是從文件中讀取到的數(shù)據(jù)。
必須嚴格遵守用法不可出現(xiàn)data=textread(filename,format,N)的形式
其中括號里面變量的個數(shù)必須和format中定義的個數(shù)相同。 如果每N行相同格式的數(shù)據(jù),可采用[A,B,C,…] = textread(filename,format,N)的語法,讀取N次。
_______________________________________________________________________________________
注:textread不用先fopen那個文件,適用于格式統(tǒng)一的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為讀取次數(shù),應(yīng)該是行數(shù)
....................................................................................
例2:有分隔符(逗號,分號...)
myfile.txt 中的內(nèi)容如下:
????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是指 指出分隔符,讀數(shù)據(jù)的時候會自動跳過分隔符。
至此應(yīng)該知道Iris.txt怎么讀入了吧。
[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s','delimiter',',');
需要注意的是,參數(shù)位置要和textread函數(shù)用法對應(yīng)
[A,B,C,…] = textread(filename,format,N)也就是filename,format,N三個參數(shù)必須在其他參數(shù)前面,所以150才會出現(xiàn)在format后
例如:[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s',150,'delimiter',',');
..............................................................................
例3:有分隔符及首行注釋
myfiles.txt 中的內(nèi)容如下:
????% 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????12
textread中的headerlines指明了跳過幾行,1可自由設(shè)定
這里headerlines告訴textread跳過一開始的1行,1可以替換為任意你要跳過的行數(shù)。
..............................................................................
例4:針對txt文件不同格式數(shù)據(jù)的讀取
myfile.txt 中的內(nèi)容如下:
????Sally Level1 12.34 45 Yes
讀入:
[names, types, x, y, answer] = textread('myfileli4.txt' , '%s %s %f %d %s', 1);
對應(yīng)格式[A,B,C,…] = textread(filename,format,N)
_________________________________________________________________________________
???例4.1: 如果要忽略12.34這個浮點數(shù)。
????[names, types, y, answer] = textread('myfileli4.txt' , '%s %s %*f %d %s', 1)
????%*f 告訴textread跳過一個浮點數(shù)。
names =
????'Sally'
types =
????'Level1'
y =
????45
answer =
????'Yes'
對于iris.txt如果只想讀取數(shù)據(jù)可用[data1,data2,data3,data4]=textread('Iris.txt','%f %f %f %f %*s',150,'delimiter',',');
____________________________________________________________________________________________
?例:4.2??如果要忽略Level,指讀取后面的數(shù)字,
?>> [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 中的內(nèi)容如下
????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 中的內(nèi)容如下
????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] 就是從當(dāng)前直接跳到行尾。
% *是一個跳過符號,表示跳過該位
....................................................................................
例7:讀入規(guī)律格式的數(shù)據(jù)
myfileli7.txt 中的內(nèi)容如下
?
????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
?
總結(jié)
以上是生活随笔為你收集整理的matlab中textread 函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中读取txt数据文件(txt
- 下一篇: Matlab中存储及读取数据