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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

+ q9 w8 [. ^1 I" Jmatlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!6 A; @' D# w! E! J& g* ~
导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;: |5 r. V1 }% l; Y

& R& z5 ~$ L* [; Z% s0 A在以上条件不满足的情况下可以使用textscan函数更灵活的读取;
* ^/ D, f% C6 o, @  T: ]7 M  i( C1 }" I" X. Q! B, T0 L
如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。9 r" ^8 w9 [2 T2 P" @, c8 S
( g4 E/ l+ S1 S# x! R, t
另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如
# I1 `  y# i  ~9 @1 G7 l9 j9 C/ s5 t; F* s3 q
ph_partial = dlmread('ph.dat', ',', 'A1..B2')
/ Z( P% C5 Q4 v
, _5 m$ ^" X! j4 s% R( d( \只读前两行和前两列;
* B+ J& \. z! w4 c
+ P( I$ ?$ W8 v. ?如果文件比较大,可以使用textscan分片读取。0 D( J+ Y& ]2 ?3 Z+ q. X
' i' Y* c* l) y6 y4 y9 e, p6 ]
importdata用法(help中例子):6 X+ Q$ o# ^5 _, L( S/ a
; U! W. Y. o- j$ u* V6 i) r$ z) M
# p- Y8 r4 z% V  ]+ C0 s
/ y% a) V: h( ]" R7 ^6 R
命令
) I- Q( E9 A! |* g6 |2 h
1 E. |1 S6 m# qgrades_imp = importdata('grades.dat');7 g# ]1 ]2 N6 M9 ~9 U" l
的结果为' `2 p3 X5 @* ~3 C8 B) N* ]& @
5 W. B$ G  P6 h0 b7 [1 P# |

4 i" J/ K. G! T( F. g
. E( j% [: S8 u4 c9 btextscan用法(help中例子很多):. s- P. r# J: W, {' s( m
& x" e  z0 ^" k0 _# Z) V
' T9 K1 i: k4 {5 R5 f, L; k
* I  x$ R2 t7 u( o
运行如下程序' Z( N' {& G0 b
9 ?0 J+ Z, P! t* Q5 R+ ]
fid = fopen('nonrect.dat');1 }6 w, b5 \, d- ~, _
c = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);, A" N! o2 K8 {
fclose(fid);) h/ Z5 t) o  C1 Y+ a& Y
结果为
. y( P1 z, W7 ]% N* Q# R( R
2 O& l# E: |+ T+ m; s! @
" s, {! h$ c7 t" Z4 |, G" V6 E* J. x' j5 C
底层函数:2 i3 @: d8 v# {- z
1 q% q4 T' u( ^; u2 v: L# r: @: z
常用的有
% ?. @; k2 C* l. z. ^) \* p* r$ X4 ?
fscanf读取格式化的信息;, l9 |4 f$ k3 p- v" }- Q* o: J" t
$ W: ~/ V$ X3 j: [6 h
fgetl和fgets读取一行信息;
& L/ j3 o9 ~" r5 c+ {1 y, C; q9 H' ~" B  c- ?* O, ]
fread读取二进制信息;
- B! E( I& {( S, x. f  @  X6 \) G( A- v  i* b
feof检测是否到文件结尾。% X# V  R1 ]- w; J! F

2 T$ X0 e# d) Q
  • 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-10-6 13:15 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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