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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

' l' S# m0 v0 @2 ~" Z& ^matlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!
3 U; {- `/ V& O0 F" Z* V- k导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;! m* U% s4 }2 W0 f: K3 q9 d. v

; `( p9 x1 U4 S1 q) x在以上条件不满足的情况下可以使用textscan函数更灵活的读取;
1 ]- O' j' `$ h& N5 A' m/ e- W) F( R1 \  T
如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。
4 l% z, H! h/ t5 v/ t8 V1 ^6 N+ I9 i/ a2 @' m3 X0 ~
另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如, ?0 L  x4 p& b3 O, O
5 k9 @" z) S( r; b* b- v# ~- b
ph_partial = dlmread('ph.dat', ',', 'A1..B2')( M/ P8 F3 i* ^$ b2 P, g8 w: |
; R% g" Y4 G, C
只读前两行和前两列;4 Y* F5 a: H* s: K4 k3 I+ V

# T7 y8 y$ r0 D# T. N3 j9 y如果文件比较大,可以使用textscan分片读取。, h( |; t0 D( }/ u9 F

7 ~$ N7 q  @- v) A: [/ n: P/ himportdata用法(help中例子):
/ I; z  R6 t, z+ `7 U6 X9 {( c
6 \' Z( o: M7 h3 U5 u5 ^ 0 ^' o0 I- C7 Y( }3 U) m
5 @$ y! Z6 a3 b2 z7 a
命令' x" H+ O0 T- c9 v' S

- d3 p* M2 N2 P2 e  F7 u) ugrades_imp = importdata('grades.dat');1 G# V/ o! q# W  Q' J5 v
的结果为/ {! B) ~3 t- }7 _. \  L% I, A1 R
. u: A/ w. `! i' c

' \7 C3 ?" }* @6 J& ~$ ^9 `3 w' F9 j  N' T4 D4 x( W
textscan用法(help中例子很多):
; D6 J! Z- b5 q: D
, e" {& N( q" G: ] - ^6 |' t. u  X
( M0 o: R( n+ d
运行如下程序
4 o- n+ w& M0 v, S9 Z9 _. Q/ N: N' K( ]
fid = fopen('nonrect.dat');: O6 L( p* m* T7 o4 H4 e
c = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);+ y  s" E) M$ p
fclose(fid);
7 X. L/ l6 H$ q. R结果为
. k) [* Y) @  v0 U9 |
* F3 j1 S7 Z' k" f# n  u2 p ! _# W8 m$ h* Q7 G. B8 t; C/ R
3 T! @: P3 p+ I; S9 c) s+ L- Q6 A, e, g
底层函数:$ x0 _6 [+ }- T& }) a8 U! _
9 ]4 R, p: K; P; h- B/ y- S0 {: R# ^% w
常用的有
) w) @2 d% G3 Y9 w4 [: ~0 D1 N2 H
fscanf读取格式化的信息;5 n& a  |) m% b4 ?$ O

$ |. b  f% B+ O+ N- r& X" t! Xfgetl和fgets读取一行信息;
" `5 p' R# J/ r& S! y& j
" u+ W- [/ |) y) v- o* t; Q/ ~% R) nfread读取二进制信息;
) s$ F, z# O2 A$ v0 }' d8 L& O/ B0 e3 K4 I8 D2 `" n5 U5 G2 v! D
feof检测是否到文件结尾。
  t0 R! p' _! S
$ G4 E+ Z- p. p1 W' O
  • 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 02:42 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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