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 | ) ~: g! L, C& x* i$ u3 l
Textscan所支持的数字单元宽度声明有两种,具体如表6.6所示。 表6.6 textscan支持的数据读入格式 名称 | 说明 | N | 读取包括小数点在内的N个数字或者遇到的分隔符,例如%5f32会把473.238读为473.2 | N.D | 读取包括小数点在内的N个数字或者遇到的分隔符,返回的数字在小数点后有D位数,例如%7.2f会把473.238读为473.23 |
8 R. [' W% a6 j2 |: O
8 n4 q* x, ?5 K4 f5 i$ C0 g% b
4 O% {) v* g" }
; E) K7 z* ?9 x4 ^6 d6 a* A( [9 m$ F, M7 A
| 3 L: b* t! }0 e( T" X% L q8 l6 P
7 ?' R! R2 d# B: U" G. o1 r/ }) `$ {% q# S# E
% H3 b# ~ p# g3 d0 ~+ ]. s% _
/ k$ A* c/ a8 K' |" D0 l5 E. F5 x' |+ r, P. [7 R; i8 ~7 w( X
% d/ ?" E- b6 V6 G' ?+ |! f
' Y1 W6 i" c' U* m1 n' u& d8 y
) r6 F; U* n9 j/ G9 S5 Q0 y& J) r! Z, P: @
下面建立新文件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: 欢迎留言讨论用法.
. l7 ]# o1 e; ]5 E$ w, j2 |. C: U' U. P |