textread
(不推荐)读取文本文件中的数据;写入多个输出
语法
说明
示例
读取自由格式文件中的所有字段
采样数据 'scan1.dat'
的第一行是
09/12/2005 {'Level1'} 12.34 45 1.23e+10 Inf NaN {'Yes'} 5.1+3i
使用 %
格式按自由格式文件形式读取文件的第一行。
[date,level,x,y,answer] = textread('scan1.dat','%s %s %f %d %s',1)
date = 1x1 cell array
{'09/12/2005'}
level = 1x1 cell array
{'Level1'}
x = 12.3400
y = 45
answer = 1x1 cell array
{'1.23e10'}
使用字面值读取以忽略匹配的字符
采样数据 'scan1.dat'
的第一行是
09/12/2005 {'Level1'} 12.34 45 1.23e+10 Inf NaN {'Yes'} 5.1+3i
按固定格式文件形式读取文件的第一行,并忽略浮点值。
[date,level,x,y,answer] = textread('scan1.dat','%s Level%d %f %d %s',1)
date = 1x1 cell array
{'09/12/2005'}
level = 1
x = 12.3400
y = 45
answer = 1x1 cell array
{'1.23e10'}
指定用于填充空单元格的值
对于带有空单元格的文件,请使用 emptyvalue
参数。假定文件 data.csv
包含:
1,2,3,4,,6
7,8,9,,11,12
读取文件并用 NaN 填充任何空单元格:
data = textread('data.csv','','delimiter',',','emptyvalue',NaN)
data = 2×6
1 2 3 4 NaN 6
7 8 9 NaN 11 12
将文件读取到字符向量元胞数组
将文件 fft.m
读取到字符向量元胞数组。
file = textread('badpoem.txt','%s','delimiter','\n','whitespace','')
file = 4x1 cell
{'Oranges and lemons,' }
{'Pineapples and tea.' }
{'Orangutans and monkeys,'}
{'Dragonflys or fleas.' }
输入参数
filename
— 文件名
字符向量 | 字符串标量
文件名,指定为字符向量或字符串标量。
format
— 格式
字符向量 | 字符串标量
格式,指定为字符向量或字符串标量。此参量确定返回参量的数目和类型。返回参量的数量是 format
的内容所指示的项目数。format
支持部分转换设定符和 C 语言 fscanf
例程约定。下表列出了 format
的值。format
中的空白字符将被忽略。
格式 | 操作 | 输出 |
---|---|---|
字面值 (普通字符) | 忽略匹配的字符。例如,在 | 无 |
%d | 读取有符号整数值。 | 双精度数组 |
%u | 读取整数值。 | 双精度数组 |
%f | 读取浮点值。 | 双精度数组 |
%s | 读取以空白或分隔符分隔的文本。 | 字符向量元胞数组 |
%q | 读取带双引号的文本,并忽略引号。 | 字符向量元胞数组 |
%c | 读取包括空白在内的字符。 | 字符数组 |
%[...] | 读取包含方括号中指定的字符的最长字符组。 | 字符向量元胞数组 |
%[^...] | 读取包含非方括号中指定字符的最长非空字符组。 | 字符向量元胞数组 |
%*... | 忽略 | 无 |
%w... | 读取 |
N
— 读取数据的次数
正整数
读取数据的次数,指定为正整数。如果 N 小于零,textread
将读取整个文件。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: 'WriteMode','append'
bufsize
— 字符向量的最大长度
4095 (默认) | 正整数
字符向量的最大长度,以字节为单位,指定为正整数。
commentstyle
— 忽略与指定值表示的符号相关联的字符
'matlab' | 'shell' | 'c' | 'c++'
忽略与指定值表示的符号相关联的字符,指定为 'matlab'
、'shell'
、'c'
或 'c++'
。
值 | 行为 | |
---|---|---|
'matlab' | 忽略 | |
'shell' | 忽略 | |
'c' | 忽略介于 | |
'c++' | 忽略 |
delimiter
— 元素之间的分隔符
一个或多个字符
元素之间的分隔符,指定为一个或多个字符。在 textread
读取一系列连续的 delimiter
值时,它会将每个值视为一个单独的分隔符。
emptyvalue
— 赋予空单元格的值
0 (默认) | 双精度标量
读取带分隔符的文件时赋予空单元格的值,指定为双精度标量值。
endofline
— 表示行尾的字符
根据文件确定 (默认) | 单个字符 | '\r\n'
表示行尾的字符,指定为单个字符或 '\r\n'
。
exchars
— 指数字符
'eEdD'
(默认) | 指数字符
指定指数字符,指定为指数字符。
headerlines
— 标题行数
正整数
标题行数,指定为正整数。
whitespace
— 要视为空白字符的字符向量
' \b\t'
(默认) | ' '
| \b
| \n
| \r
| \t
读取带分隔符的文件时赋予空单元格的值,指定为双精度标量值。textread
在读取一系列连续的空白值时,它会将这些值视为一个空白。
您可以使用 whitespace
保留文本中的前导空格和尾随空格。
textread('myfile.txt','%s','whitespace','') ans = ' An example of preserving spaces '
值 | 行为 | |
---|---|---|
' ' | 空格 | |
\b | 退格符 | |
\n | 换行符 | |
\r | 回车符 | |
\t | 水平制表符 |
版本历史记录
在 R2006a 之前推出R2012b: 不推荐使用 textread
不推荐使用 textread
。请改用 textscan
。目前没有删除 textread
的计划。
使用 textscan
函数从文本文件或字符串中读取格式化数据。与 textread
函数相比,使用 textscan
的工作流有几项优势。
不同于
textread
,由textscan
提供的输出是元胞数组。文件指针在对
textscan
的调用之间保持不变,从而允许您以分块形式读取数据。textscan
工作流支持从远程位置读取。textscan
生成的错误消息为如何调整语法和工作流提供了清晰的指导。
下表显示了 textread
的一些典型用法,以及如何更新代码以改用 textscan
。
不推荐 | 推荐 |
---|---|
[date,level,x,y,answer] = textread('scan1.dat',... '%s %s %f %d %s',1) | filename = 'scan1.dat'; fileID = fopen(filename); C = textscan(fileID,'%s %s %f %d %s'); fclose(fileID); celldisp(C) |
data = textread('data.csv','','delimiter',',',... 'emptyvalue',NaN) | filename = 'data.csv'; fileID = fopen(filename); C = textscan(fileID,'%f %f %f %f %u8 %f', ... 'Delimiter',',','EmptyValue',NaN); fclose(fileID); celldisp(C) |
另请参阅
textscan
| fopen
| readmatrix
| fscanf
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)