找回密码
 注册
关于网站域名变更的通知
查看: 419|回复: 1
打印 上一主题 下一主题

大神总结的matlab文件读取相关操作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-16 09:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
6 x2 L7 C6 u) U# s4 H1 n7 w
matlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!/ {0 d# k7 I. o1 N+ k, E
导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;: d  D5 d7 E7 T  T1 I- i8 Y& H4 V
* s0 ^6 @$ k  Z# K# ^
在以上条件不满足的情况下可以使用textscan函数更灵活的读取;0 x6 t& f) _' u/ T# l* }
" `- ?/ ?9 U( B' V8 n9 R0 Z+ `6 k% T
如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。
5 g6 }" Y7 O) i6 E' M% N% i7 G5 W: O
另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如( N+ d8 T0 h2 `1 G2 n; z  }
& c6 W+ z4 ^5 \- P8 F0 a
ph_partial = dlmread('ph.dat', ',', 'A1..B2')2 f( h: i2 f8 [

5 y$ Q! G7 G. O! ]只读前两行和前两列;
1 K8 e* `! R7 ?+ N4 r5 f! Z
# N, [3 X0 @$ a& h9 i8 f1 E# ?# w如果文件比较大,可以使用textscan分片读取。
9 }" m" u# {$ s8 \6 N
. [! H) p3 r$ k) V( B" e/ z2 _6 u& Qimportdata用法(help中例子):  \: h! x) F- m' _
/ j  m9 [& i- E# |* e+ u, y" F

! }8 l) T- H5 E. `6 x- L2 x! ], J$ L5 a! D
命令
2 \% V' \/ E. ~4 g* v
& y) ^+ [/ L# D: s5 a1 ]( ngrades_imp = importdata('grades.dat');
, E" \+ x, c+ z的结果为  W% I& S! _$ {8 t7 E& x
) ]5 L* k% B" d/ _& \
- y& Y4 P2 P3 [* F1 n

: g% r" w8 @4 e( \' w- ^- ptextscan用法(help中例子很多):  O* ^6 v7 a0 |  K& C" f* `

! [3 h" ]) t. |2 k   P# m" n# |+ F) k, x

  M2 u$ m# l( A运行如下程序$ R+ A* z/ x# y( G) S7 i

! p/ f7 p/ ]& x& H* p7 z/ a  Jfid = fopen('nonrect.dat');
; X: c% ]5 l  P6 w: gc = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);
/ w& P' L  ]- e5 zfclose(fid);& n; W  j* x' o, i& r
结果为
6 A' C7 r! c6 [
: q$ j# j8 q. ]% I: j1 B & F) G/ K) k: r: G+ G- `% A$ ]

1 c, N- b# T3 R$ ]( E底层函数:  f0 u8 Z+ Z0 P, l

3 v6 c+ V) m8 n7 S6 F常用的有! h- d" u9 I# r7 V" L4 t" [7 y) a
7 B3 O$ j# |; Y& z) @  w
fscanf读取格式化的信息;
: }" R, h4 b& a  U: F- j
9 W* q* R# ^& h* E3 ?) Kfgetl和fgets读取一行信息;8 w6 B# V% g2 d5 r7 r
+ j5 {. m5 R' i6 a2 E& y
fread读取二进制信息;
. f( J! z5 T, p, b" }" a+ @" m
0 @, _) U% p) qfeof检测是否到文件结尾。% F2 y; q2 I: J, Q7 R) S$ W
: p5 ~5 C: L$ D( W
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-3-16 16:54 | 只看该作者
    matlab文件读取相关操作
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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