QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2512|回复: 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函数。
    ) o$ f: ~3 ~: E  n/ R9 ?" B它的基本语法是:) {3 i+ ?. w8 m- K0 i' B
    [A,B,C,...] = textread(filename,format)- u! K8 t3 J$ [4 I8 v, r
    [A,B,C,...] = textread(filename,format,N)
    ; J& x5 m9 d) N1 |其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。
    ' O! {; x. K' @: r' S$ P中括号里面变量的个数必须和format中定义的个数相同。 如果每N行相同格式的数据,可采用[A,B,C,...] = textread(filename,format,N)的语法,读取N次。& ~( U9 Z7 w) c) `
    举例如下:, y5 @) h* F4 x# {
    例子1:myfile.txt 中的内容如下:
    ; U6 b$ w. Y: H6 y0 H; \4 B6 |8 n1 2 3 4
    % b9 F  ?2 V8 G4 @1 q, `5 6 7 8( S( Z) `0 l0 B
    9 10 11 12. f' }  ?8 ^- G
    相应的语句为:9 k3 K6 ~: f5 T* O$ V
    filename = '.\myfile.txt';$ O6 H3 B4 O3 J1 j: U& r
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n');
    6 Y1 X3 N! w: u) o或者为
    & ^0 _& r  Y/ P0 H; N* x4 b6 }* Bfilename = '.\myfile.txt';. X* p# y/ s, y( {  u
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n',3);
    ' l, |: j: _" Z) p: j. [$ \- \$ F
    - a8 O2 b  ?  o/ V, }5 u; K( W例子2:myfile.txt 中的内容如下:$ W, c* u5 R9 G7 F2 r
    1, 2, 3, 4
    , Y" `5 e) G2 g$ G6 x5, 6, 7, 83 h/ E1 G: K  I7 [
    9, 10, 11, 12. {( K& T" g, q2 \
    相应的语句为:
    " M/ E/ t' P. q9 \) h* Y( nfilename = '.\myfile.txt';. E; i% }, G( [$ f3 b7 y
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',');' J* }/ W/ I' ?- _4 ^  U
    这里delimiter指出分隔符,读数据的时候会自动跳过分隔符。- d. z4 p4 Z" r& x5 V, G3 u5 A

    / x2 `6 f0 \5 K4 I) |
    " ^; D# N0 Q2 H3 P) G例子3:myfile.txt 中的内容如下:
    , @4 \3 F- Z( v$ L3 |" Y" L7 ]4 {% this a comment1 y9 `# I# h( R" T( T
    1, 2, 3, 4  i$ L+ y% ^3 \2 B
    5, 6, 7, 8, T$ V2 G! {6 u9 R* e( j1 J2 H% D* p
    9, 10, 11, 12$ c& [3 r/ y2 b5 ^+ d
    相应的语句为:
    8 ]9 `& P& w5 Tfilename = '.\myfile.txt';
    1 I* K/ ?" R' W[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',','headerlines', 1);
    * |# p# E2 s1 F. Y5 _这里告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。- f, K2 U, ~0 Q/ F' B3 B) j/ q
    5 _$ `! B( F/ R) |; Y2 g6 f
    例子4:myfile.txt 中的内容如下:( B5 ?+ D6 N% \, k5 Z& v
    Sally Level1 12.34 45 Yes+ z6 l# u" R7 J
    相应语句为:
    ( h! ~8 ]4 ~5 w* x) n% ~
    5 \4 B8 J* \. c6 ~filename = '.\myfile.txt';
    6 e0 u/ v9 ^3 W8 p0 K
    4 `) {. |3 d$ J2 S* ^2 {7 _8 @, G[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)
    $ x5 V. l/ S: s' D3 d; Y* P%*f 告诉textread跳过一个浮点数。
    ' N# c8 ~. j, x1 W: @+ Z+ I' X% s( u4.2 如果要忽略Level,指读取后面的数字,
    2 G' D$ c$ S# R! |7 B2 C# a' n' S
    . `0 l  D- q" O' Z. O$ _3 P+ Z& V[names, levelnum, x, y, answer] = textread(filename , ... '%s Level%d %f %d %s', 1)例子5:myfile.txt 中的内容如下; d* C; r- v# p, n- [+ F  v& c3 ?
    1,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' ,';');注意:
    + U" v; X5 j/ E5 Q" a- s) etextread不用先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, 2026-4-15 02:39 , Processed in 0.372989 second(s), 54 queries .

    回顶部