textread 函数适用于格式统一的 txt 文件一次性大批量读取,无需先调用 fopen。它通过指定文件名、格式字符串及可选参数,灵活解析数值、字符及混合数据。
基本语法
[A,B,C,...] = textread(filename, format)
[A,B,C,...] = textread(filename, format, N)
filename:目标文件名。format:读取格式,如%f(浮点)、%s(字符串)、%d(整数)等。N:读取次数或行数。- 输出变量个数必须与
format中定义的占位符数量一致。
注意:参数顺序很重要,filename、format、N 需放在其他选项之前。
场景一:无分隔符的纯数字矩阵
假设 mytest.txt 内容如下:
1 2 3 4
5 6 7 8
9 10 11 12
使用 %n 匹配任意数字:
[data1,data2,data3,data4] = textread('mytest.txt','%n%n%n%n');
data = [data1 data2 data3 data4];
结果将按列填充。若需限制读取行数,可添加第三个参数:
[data1,data2,data3,data4] = textread('mytest.txt','%n%n%n%n',3);
场景二:带分隔符的数据
对于逗号或分号分隔的文件,需指定 delimiter 参数。例如 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', ',');
处理 Iris 数据集时,若包含类别标签:
[data1,data2,data3,data4,data5] = textread('Iris.txt','%f%f%f%f%s','delimiter',',');
若只想读取前四列数值,忽略最后一列:
[data1,data2,data3,data4] = textread('Iris.txt','%f %f %f %f %*s',150,'delimiter',',');
其中 %*s 表示跳过该字段。
场景三:处理注释行
如果文件首行是注释,可使用 headerlines 跳过:
[data1,data2,data3,data4] = textread('myfiles.txt','%n%n%n%n','delimiter', ',', 'headerlines', 1);
headerlines 设为 1 即跳过第一行,可根据实际注释行数调整。
场景四:混合数据类型与跳过列
当一行中包含字符串、数字和布尔值时,格式串需对应:
[names, types, x, y, answer] = textread('myfile4.txt' , '%s %s %f %d %s', 1);
若中间某列不需要,可用 忽略:

