找回密码
 注册
关于网站域名变更的通知
查看: 1111|回复: 1
打印 上一主题 下一主题

在matlab中进行textread textscan读取文本文件

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-23 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
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
: T6 A5 M# A5 [, v; r- p4 p

   Textscan所支持的数字单元宽度声明有两种,具体如表6.6所示。

表6.6   textscan支持的数据读入格式

名称
说明
N
读取包括小数点在内的N个数字或者遇到的分隔符,例如%5f32会把473.238读为473.2
N.D
读取包括小数点在内的N个数字或者遇到的分隔符,返回的数字在小数点后有D位数,例如%7.2f会把473.238读为473.23


3 g8 z. J7 }' x, D/ ^# w* ], t8 u4 t" @& V% Q/ ?. E

2 d1 m( T9 h4 v* ~7 L# \: q% x  A

( H" P" G& ]5 w
0 K7 c" V: i% S& P" C8 m" k

' O2 P# Q/ ~2 ^7 N" N
6 r9 G$ q0 R: J, D4 h
$ S& e* Q1 f1 _
0 y+ o" t# S* x1 G9 J. I3 p: P+ z, g. d
7 V- U4 w0 j/ H) }3 d
" N4 o0 n5 o' w' W9 l+ P% F6 T

7 h$ h# H8 Z+ |; p% V1 }+ k( q! D+ A' Y0 l5 R
下面建立新文件test1.txt,文件前2行是字符串,后三行是数组,首先查看其内容。
>> !type  c: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 =
     1     1     2
    32     3     4
结束时需要关闭文件
>> 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);
ps: 欢迎留言讨论用法.

$ A2 x. D1 O( F. m9 G

该用户从未签到

2#
发表于 2020-4-23 13:22 | 只看该作者
在matlab中进行textread textscan读取文本文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-23 10:27 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表