Matlab学习笔记(9)——textread函数

本文详细介绍了Matlab中textread函数的基本语法及其应用场景,包括无分隔符和有分隔符的数据读取、处理带注释的文件、跳过特定数据或列以及处理不规则格式的数据等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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是指出分隔符,读数据的时候会自动跳过分隔符。

例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'

例: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'

例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] 就是从当前直接跳到行尾。
% *是一个跳过符号,表示跳过该位

[^\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.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',';')
location =
    'Lobith'
    'Lobith'

year =
        1989
        1989

month =
     1
     1

day =
     1
     2

hour =
     0
     0

minute =
     0
     0

discharge =
        2801
        2619

转载自:关于matlab中textread

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值