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 |
! D% J! p9 f( c$ o6 V1 u0 H/ u Textscan所支持的数字单元宽度声明有两种,具体如表6.6所示。 表6.6 textscan支持的数据读入格式 名称 | 说明 | N | 读取包括小数点在内的N个数字或者遇到的分隔符,例如%5f32会把473.238读为473.2 | N.D | 读取包括小数点在内的N个数字或者遇到的分隔符,返回的数字在小数点后有D位数,例如%7.2f会把473.238读为473.23 |
, ?, |" X* n6 F
" G D# a( h/ }. `6 y- {1 h- A* ]7 o% S% z
& Z" D s2 s% A8 M$ B2 T* w
. c7 k7 M7 X6 j5 S; l: O3 m |
& w+ n2 u# ?( Z, ^6 y V4 _1 y1 C5 P5 n+ G* r# c* L+ d
5 e4 J" O9 v$ x8 a7 {9 D, g; g2 f* i% N
- K3 x, U% P" |8 e
/ D( J! o; c3 k O
; z- W Q d3 _0 Z( V* x( y' ~
. w" I( X. Z9 b& }9 X: U. {) M! A
" r) k/ n& f% X8 ]& x
+ o5 F! U0 B5 f下面建立新文件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: 欢迎留言讨论用法.
0 W' u, L% K0 G% V8 y, p7 N% V* ~ |