1.MATLAB从文本文件中读取格式化的数据函数是textread。
调用方式
[A,B,C,...] = textread('filename','format')
[A,B,C,...] = textread('filename','format',N)
[...] = textread(...,'param','value',...)
输入参数
'filename'需要读取的数据文件
'format'每行各个数据格式
N读取数据时使用N次。
当调用textread函数时会按照指定的格式从'filename'中读取数据,并将数据分别保存在变量A,B,C中,直到文件内容被读完为止。
下面是读取c:\中的test3.txt文件操作。
>> !type c:\test3.txt
Q1 1 2
Q2 3 4
>> [a1 a2
a3]=textread('c:\test3.txt','%s %f %f')
a1 =
'Q1'
'Q2'
a2 =
1
3
a3 =
2
4
这样文件test3.txt中的每行分别读入变量a1、a2、a3。
2.TextScan函数读取文本数据
对于具有多行文字说明文本数据文件,最好的办法则是用textscan,或者fscanf读取。
调用方式
C = textscan(fid, 'format')
C = textscan(fid, 'format', N)
C = textscan(fid, 'format', param, value, ...)
C= textscan(fid, 'format', N, param, value, ...)
输入参数
fid为fopen命令返回的文件标识符
format是一个字符串变量,表示读取数据及数据转换的规则。Format中包含了多种方式,其内容如表6.5所示。
format内容
数据转换规则
说明
%n
读取一个数字并转换为double
%d
读取一个数据并转换为int32
�
读取一个数据并转换为int8
�6
读取一个数据并转换为int16
�2
读取一个数据并转换为int32
�4
读取一个数据并转换为int64
%u
读取一个数据并转换为uint32
%u8
读取一个数据并转换为uint8
%u16
读取一个数据并转换为uint16
%u32
读取一个数据并转换为uint32
%u64
读取一个数据并转换为uint64
�
读取一个数字并转换为double
�2
读取一个数字并转换为float
�4
读取一个数字并转换为double
%s
读取一个字符串
%q
读取一个可以是双引号括着的字符串
%c
读取一个字符,包括空格
%[…]
读取和括号中字符串相匹配的字符。读取操作在首次遇到不匹配的字符和空格时停止。例如%[mus]把summer读成summ
%[^…]
读取和括号中字符串不匹配的字符。读取操作在首次遇到不匹配的字符和空格时停止。例如%[^mus]把summer读成er
Textscan所支持的数字单元宽度声明有两种,具体如表6.6所示。
表6.6textscan支持的数据读入格式
名称
说明
N
读取包括小数点在内的N个数字或者遇到的分隔符,例如%5f32会把473.238读为473.2
N.D
读取包括小数点在内的N个数字或者遇到的分隔符,返回的数字在小数点后有D位数,例如%7.2f会把473.238读为473.23
下面建立新文件test1.txt,文件前2行是字符串,后三行是数组,首先查看其内容。
>> !typec:\test1.txt
a1
a2
1
2
注意,在Command窗口下键入“!”后就可以直接执行Dos命令
>>file=fopen('c:\test1.txt','r');%打开需要读取的文件
>> str1=textscan(file,'%s',2)
;
>> str1{1}
ans =
'a1'
'a2
如果需要读取第3行、第4行可以执行下面命令。
>> da=textscan(file,'%f',[3 4])
;
>> da{1}
ans =
1
2
由于da是单元数据,下面将其转换为实数型。
>> cell2mat(da)
ans =
1
2
如果数据文件中有间隔符,需要忽略间隔符。
>> type c:\test3.txt
1, 1,
2
32, 3, 4
>> tt=fopen('c:\test3.txt');
>>var=textscan(tt,'%f%f %f', 'delimiter', ',')%
忽略‘,’
>> aa=cell2mat(var)
aa =
112
3234
结束时需要关闭文件
>> fclose(file)
>> !type c:\test2.txt
2 5 3 6
2 3 5
1 9 5 4 6
>> fid=fopen('c:\test2.txt');
>>for i=1:3 ,a{i}=fgets(fid);
end
>>fclose(fid);
如果觉得《matlab读取txt文档三行数据库 Matlab中的textread textscan读取文本文件》对你有帮助,请点赞、收藏,并留下你的观点哦!