關(guān)于matlab中textread

2017-02-21  by:CAE仿真在線  來源:互聯(lián)網(wǎng)

今天打算跑下程序,突然發(fā)現(xiàn),真的很爛,不會(huì)讀入數(shù)據(jù),簡單的Iris.txt一上午都沒讀進(jìn)去,在此對(duì)matlab中的textread函數(shù)做下總結(jié),textscan函數(shù)待續(xù)。

本文主要內(nèi)容引自http://linux.chinaitlab.com/administer/872894.html

筆者在此基礎(chǔ)上進(jìn)行運(yùn)行,修改得到以下內(nèi)容,希望大家給與補(bǔ)充:

textread

基本語法是:

[A,B,C,…] = textread(filename,format)

[A,B,C,…] = textread(filename,format,N)
其中filename就是文件名, format就是要讀取的格式,A,B,C就是從文件中讀取到的數(shù)據(jù)。
必須嚴(yán)格遵守用法不可出現(xiàn)data=textread(filename,format,N)的形式

其中括號(hào)里面變量的個(gè)數(shù)必須和format中定義的個(gè)數(shù)相同。 如果每N行相同格式的數(shù)據(jù),可采用[A,B,C,…] = textread(filename,format,N)的語法,讀取N次。
_______________________________________________________________________________________

注:textread不用先fopen那個(gè)文件,適用于格式統(tǒng)一的txt文件的一次性大批量讀取。textread讀取某個(gè)文件后,下次再用textread讀取這個(gè)文件時(shí),還是會(huì)從文件頭開始讀取。

________________________________________________________________________________________

例如:
.....................................................................................
例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:有分隔符(逗號(hào),分號(hào)...)
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ù)的時(shí)候會(huì)自動(dòng)跳過分隔符。

至此應(yīng)該知道Iris.txt怎么讀入了吧。
[data1,data2,data3,data4,data5]=textread('Iris.txt','%f%f%f%f%s','delimiter',',');

需要注意的是,參數(shù)位置要和textread函數(shù)用法對(duì)應(yīng)
[A,B,C,…] = textread(filename,format,N)也就是filename,format,N三個(gè)參數(shù)必須在其他參數(shù)前面,所以150才會(huì)出現(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:針對(duì)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);

對(duì)應(yīng)格式[A,B,C,…] = textread(filename,format,N)
_________________________________________________________________________________

例4.1: 如果要忽略12.34這個(gè)浮點(diǎn)數(shù)。

[names, types, y, answer] = textread('myfileli4.txt' , '%s %s %*f %d %s', 1)

%*f 告訴textread跳過一個(gè)浮點(diǎn)數(shù)。
names =

'Sally'


types =

'Level1'


y =

45


answer =

'Yes'

對(duì)于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)前直接跳到行尾。
% *是一個(gè)跳過符號(hào),表示跳過該位

....................................................................................

例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












開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:關(guān)于matlab中textread MatLab培訓(xùn) MatLab培訓(xùn)課程 MatLab在線視頻教程 MatLab技術(shù)學(xué)習(xí)教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎(chǔ)知識(shí) Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com