matlab textread注释行,关于matlab中textread

今天打算跑下程序,突然发现,真的很烂,不会读入数据,简单的Iris.txt一上午都没读进去,在此对matlab中的textread函数做下总结,textscan函数待续。

笔者在此基础上进行运行,修改得到以下内容,希望大家给与补充:

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 12

textread中的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值