找回密码
 注册
关于网站域名变更的通知
查看: 1205|回复: 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
3 v0 A# Y+ h3 j" K( A& X

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

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

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


% R, p3 {2 V- U' m! j: X9 ], P9 l8 p7 k% Y4 G
9 Q6 i  S4 O9 G2 s+ z
6 ]7 N1 q; k5 d* r0 D; A

1 O. o5 d8 J  V0 y& P: X8 L

+ \; ?. L- n/ e4 e0 }5 X# @! Z- \8 U6 |: H9 r2 E+ M# I* U4 ], o
3 h$ }% f; f  V! e0 U1 w1 p# r' w* G

+ d# F3 _% k8 W  e6 W4 ?
0 A) W7 I# r: z, L: s4 _. I( c
" D9 J, ]3 _8 D+ ~* V0 {; r; L3 o
2 p* C. m. c. j
# \  p1 Q7 _% O+ k" m' p& [
* U6 l' f1 h! T: E9 e* t% C( u9 l) F- X2 u
下面建立新文件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: 欢迎留言讨论用法.

/ @( F0 S% ?# |( s( j. x

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 03:25 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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