QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2245|回复: 0
打印 上一主题 下一主题

[课件资源] matlab的文件处理功能textread

[复制链接]
字体大小: 正常 放大

4

主题

6

听众

173

积分

升级  36.5%

  • TA的每日心情

    2012-10-25 23:22
  • 签到天数: 49 天

    [LV.5]常住居民I

    群组Matlab讨论组

    群组学术交流B

    跳转到指定楼层
    1#
    发表于 2012-7-26 21:59 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    实际应用中经常要读取txt文件,这个时候就需要用到强大的textread函数。
    ) J. e$ d( P: E, L  e它的基本语法是:4 P- m9 N7 X. z9 P4 K
    [A,B,C,...] = textread(filename,format)3 u0 p8 ~1 \+ c# ]$ {0 a( f
    [A,B,C,...] = textread(filename,format,N)
    7 b' @8 Y+ r- |其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。  f8 T3 _# }# l7 n; n7 R
    中括号里面变量的个数必须和format中定义的个数相同。 如果每N行相同格式的数据,可采用[A,B,C,...] = textread(filename,format,N)的语法,读取N次。
    " b" `/ B& {$ b: a& b$ O举例如下:. q0 X8 e/ ~. l8 p, U5 a+ c' O# v
    例子1:myfile.txt 中的内容如下:
    ) O- Q/ F6 W0 [1 ?' X& u) ]0 E1 2 3 4
    ! P3 G- _- u1 y3 q$ o% t5 6 7 8
    + b/ B- O. d3 N9 10 11 12# C8 o! L+ @# Q" e* v8 T  i
    相应的语句为:
    3 L/ `+ W/ z+ D3 ?9 w! w, |filename = '.\myfile.txt';& m' Z$ g9 c9 l5 a
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n');- d  F) L1 u. d& c
    或者为5 D$ e4 Q  s' w# T' e0 v
    filename = '.\myfile.txt';8 s9 |6 U2 W1 r) ^; x
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n',3);
    - T( v0 h7 T: o% @
    # c' B! B2 x+ o9 j9 I- ^6 G例子2:myfile.txt 中的内容如下:
    ! m( P2 m" t  y5 ~: g3 d8 a1, 2, 3, 4
    ! F: R- b$ p9 X5, 6, 7, 8  Y1 m* ?& R3 Q. ~
    9, 10, 11, 12
    7 L, _- t. s# l3 x) T相应的语句为:' B) c) P6 S2 L
    filename = '.\myfile.txt';
    8 b1 I- W% g: C9 W" @* |1 @[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',');
    3 W3 s- k. E) z) f/ r1 d' M这里delimiter指出分隔符,读数据的时候会自动跳过分隔符。
    : m3 v9 t+ l, O9 \* u2 h2 T: |: o% h7 a. L4 m5 Y% }) c9 M# w
    8 o1 u7 `6 I5 H
    例子3:myfile.txt 中的内容如下:
    : l2 h8 O3 j8 m- ]% this a comment
    " r  C2 b+ @7 I" ^1, 2, 3, 49 P& R4 _2 n( T. v2 @
    5, 6, 7, 8
    : c6 }3 ?  g5 N+ ^3 [/ A9, 10, 11, 12
    $ C) r% Z0 [# Z( ]" d% j$ C* z相应的语句为:$ k, ^3 A2 b7 S8 A! h6 h3 }6 g
    filename = '.\myfile.txt';, G# z6 m' W2 N, S( H
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',','headerlines', 1);
    : b8 L8 W! R, q5 ~' ?' W这里告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。
    8 _2 d- u4 B! Z9 H& x) W$ w" ~5 b
    7 Q, E! r+ s$ l7 y$ \# u4 r例子4:myfile.txt 中的内容如下:# f& L" W/ P1 M- s4 y: f
    Sally Level1 12.34 45 Yes
      y' J' K, k( h& I# p" l相应语句为:0 [) @1 x) _/ M2 Q
    7 f! M# F. U- e) N, z0 y
    filename = '.\myfile.txt';
    / F; m& X9 t9 D# q: T8 \, g
    9 U" F0 G) s, h[names, types, x, y, answer] = textread(filename , '%s %s %f %d %s', 1)4.1如果要忽略12.34这个浮点数。[names, types, y, answer] = textread(filename , '%s %s %*f %d %s', 1)! V0 Z7 v; x/ T& ^/ ~0 }; d$ @1 }. Y
    %*f 告诉textread跳过一个浮点数。# x. A( D4 {) B: \5 W, t( A
    4.2 如果要忽略Level,指读取后面的数字,( a* Z( {$ e' R6 `' {0 x

    - C0 @- d1 S& q# v" ][names, levelnum, x, y, answer] = textread(filename , ... '%s Level%d %f %d %s', 1)例子5:myfile.txt 中的内容如下
    0 V, c  Y' G- f1,2,3,4,,6 7,8,9,,11,12想用nan替代为空的部分。语句如下:data = textread('myfile.txt', 'delimiter', ',', 'emptyvalue', NaN);例子6: myfile.txt 中的内容如下   Sally   Type1 12.34 45 Yes Joe     Type2 23.54 60 No Bill    Type1 34.90 12 No如果只想读第一列,其余的跳过filename = '.\myfile.txt';[names]=textread(filename,'%s%*[^\n]') %[^...] - reads characters not matching characters between the brackets until first matching character  %[^\n] 就是一直读到行尾。%*[^\n] 就是从当前直接跳到行尾。 可对比[names,rest]=textread(filename,'%s%[^\n]') 例子7: myfile.txt 中的内容如下                  Location;date;discharge Lobith;1989-01-01;00:00;2801Lobith;1989-01-02;00:00;2619语法如下:[Location,... % 1   yyyy             ,... % 2a datestring year   mm               ,... % 2b datestring month   dd               ,... % 2c datestring day   HH               ,... % 3a timestring hour   MM               ,... % 3b timestring minute   discharge] = ...   textread(filename,'%s%f-%f-%f%f:%f%f',...       'headerlines',1,...       'delimiter' ,';');注意:
    ( f7 c. X2 F: b  K8 H4 Stextread不用先fopen那个文件,适用于格式统一的txt文件的一次性大批量读取。textread读取某个文件后,下次再用textread读取这个文件时,还是会从文件头开始读取。
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    生命在于运动
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-23 10:17 , Processed in 1.158052 second(s), 53 queries .

    回顶部