函数textread

简介:   函数textread可以按列读取ascii 文件中的元素,每一列中可能含有不同的数据类型。这函数读取其他程序生成的数据表时非常地有用。 实际应用中也要经常要读取txt文件,这个时候就需要用到强大的textread函数。

  函数textread可以按列读取ascii 文件中的元素,每一列中可能含有不同的数据类型。这函数读取其他程序生成的数据表时非常地有用。

实际应用中也要经常要读取txt文件,这个时候就需要用到强大的textread函数。

这个命令的形式如下:

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

[a, b, c, ...] = textread(filename, format, n)

  其中filename 代表要打开的文件的名字,format 是用于每一行数据类型的字符串,n 代表要读取的行数(如果没有n,则这个命令将读完这个文件)。格式化字符串与函数fprintf 格式化描述的字符串相同。注意输出参数的个数必须与你读取的列数相区配。

举例如下:
例子1:myfile.txt 中的内容如下:
1 2 3 4
5 6 7 8
9 10 11 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n');
或者为
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n',3);



例子2:myfile.txt 中的内容如下:
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',');
这里delimiter指出分隔符,读数据的时候会自动跳过分隔符。



例子3:myfile.txt 中的内容如下:
% this a comment
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',','headerlines', 1);
这里告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。


例子4:myfile.txt 中的内容如下:

Sally Level1 12.34 45 Yes

相应语句为:

filename = '.\myfile.txt';

[names, types, x, y, answer] = textread(filename , '%s %s %f %d %s', 1) 

4.1如果要忽略12.34这个浮点数。[names, types, y, answer] = textread(filename , '%s %s %*f %d %s', 1) 

%*f 告诉textread跳过一个浮点数。
 

4.2 如果要忽略Level,指读取后面的数字,

[names, levelnum, x, y, answer] = textread(filename , ... '%s Level%d %f %d %s', 1)例子5:myfile.txt 中的内容如下

1,2,3,4,,6 7,8,9,,11,12想用nan替代为空的部分。语句如下:data = textread('myfile.txt', 'delimiter', ',', 'emptyvalue', NaN); 

 

 例子6: myfile.txt 中的内容如下   

Sally    Type1 12.34 45 Yes 

Joe      Type2 23.54 60 No 

Bill     Type1 34.90 12 No 

如果只想读第一列,其余的跳过 

filename = '.\myfile.txt'; 

[names]=textread(filename,'%s%*[^\n]') 

%[^...] - reads characters not matching characters between the brackets until first matching character   

%[^\n] 就是一直读到行尾。%*[^\n] 就是从当前直接跳到行尾。  

 

可对比[names,rest]=textread(filename,'%s%[^\n]')

  函数textread 要比load 命令简单有效的多。load 命令假设输入文件中的所有数据都是同一类型——它不支持在不同的列上有不同的数据。此外,它把所有的数据都存储在一个数据中。相反地,函数textread 允许每一列都有独立的变量,当和由不同类型的数据组成的列运算时,它更加的方便。函数textread 中有许许多多参数,它们增加了函数的灵活性。
  

注意:
    textread不用先fopen那个文件,适用于格式统一的txt文件的一次性大批量读取。textread读取某个文件后,下次再用textread读取这个文件时,还是会从文件头开始读取。

 

相关文章
|
2月前
|
Shell PHP
escapeshellarg() 函数
escapeshellarg() 函数
|
7月前
|
算法 编译器 C语言
函数—C(下)
函数—C(下)
58 0
|
数据库 索引
pginspect几个函数
pginspect几个函数
85 0
|
存储 编译器 C语言
C语言知识点之 函数
C语言知识点之 函数
57 0
|
算法 编译器 API
8.函数
8.函数
76 0
|
算法 程序员 C++
C/C++ 中的 strrchr() 函数
strrchr() 函数 在 C++ 中,strrchr() 是用于字符串处理的预定义函数。cstring 是字符串函数所需的头文件
320 0
|
自然语言处理 C++
C/C++ 中的 atol()、atoll() 和 atof() 函数
1.atol(): 此函数将作为参数传递给函数调用的 C 类型字符串转换为长整数。它解析 C 字符串 str 并将其内容解释为整数,该整数作为 long int 类型的值返回。该函数会丢弃字符串开头的空白字符,直到找到非空白字符。如果 C 字符串 str 中的非空白字符序列不是有效的整数,或者如果因为 str 为空或仅包含空白字符而不存在这样的序列,则不执行任何转换并返回零。
245 0
|
程序员 C语言
|
SQL 分布式计算 关系型数据库
not_in函数致错
Not in 函数-致错 我们开发当中有些业务逻辑会用到not in()这个函数, 岗位角度:不管是后端开发还是大数据开发还是数据分析师… 技术角度:不管是Mysql、Hive、Maxcompute…
150 0
|
SQL
last函数
last函数
137 0