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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

7 p. ]" d4 k; u% |9 Kmatlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!
8 q2 t) _, q. f6 t导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;, O! G. ^3 Q/ P; d5 D6 S' C

% A' \0 d: q6 W# G在以上条件不满足的情况下可以使用textscan函数更灵活的读取;
( h! }- k  R& [2 X1 f( H; x/ r
如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。
# D6 ^. f7 [0 Y2 i
: J0 |( S) B- @另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如
) T- y. M2 K; V9 ?/ q# l
. D3 x  q/ H& {6 l' @& N- d% iph_partial = dlmread('ph.dat', ',', 'A1..B2')
8 x( w9 s' M7 _7 W0 \8 E" V) ?
9 _7 k# }# x5 j只读前两行和前两列;
" f! B9 I5 p' i1 P8 a
0 d1 Q- S4 N' {如果文件比较大,可以使用textscan分片读取。, B2 m% i) R: j+ R; q
, T) M( C& S$ n  T  n5 U
importdata用法(help中例子):
6 c. N! `; |. I6 E  n5 a9 C& M, b
& X) U+ M* n5 Y) O% ?
0 p  f. U9 V' G" e8 |
' [8 [  G% t+ b* x) b9 k7 H命令
- p0 m7 k  S  M( Y' i; ]3 F: ?$ u4 W0 s+ X' {2 M
grades_imp = importdata('grades.dat');
$ N% j3 O+ p: U的结果为/ {0 F# b/ E+ }& V% T. O! N

8 _; M% p$ P2 M* R2 X ( U( T6 {) @! K7 X
# f# E& }4 b3 Z9 g9 C
textscan用法(help中例子很多):) A" t0 `  }6 S' y" ?7 p

6 S- a) ?& r) b* ]; v1 |* M4 k' v
7 s# d" Q# U( S" c( G! G% }" T% G; ^' E! n& m
运行如下程序
$ b5 g1 k+ j3 t" a$ F, a, e1 n3 p6 |& l# @
fid = fopen('nonrect.dat');8 E% G: h) a. C; n' n( ]9 W
c = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);" r; {5 G+ s; ?5 m% v
fclose(fid);
  [6 E& T/ ]5 S0 K( M* J6 e结果为
; m' C) G* K4 ]$ N7 Q" J- S2 s: @4 |7 q1 r+ ~
; P  R6 i9 j3 J& N$ R5 m1 }

. e4 G' M' ?) s2 K底层函数:, }* ^- s0 i( y' {$ {8 j" G' ?

1 U9 |* O, o% m, Q常用的有3 W1 f5 a  k: j+ k: c7 v
  G$ z+ W- [5 L$ x+ ?
fscanf读取格式化的信息;' A! r1 m+ U/ f0 D4 _8 ?; d
1 {& g  l$ I2 \. e
fgetl和fgets读取一行信息;
3 @; O+ O! ]0 |4 z& C' V$ K7 D' R& d  w& A* W
fread读取二进制信息;/ v. O% m( a! K% N, u+ G, S2 ]  V/ ^
1 l2 O4 [& X! j5 L) H9 d
feof检测是否到文件结尾。+ J2 L# E9 G& @" n) O% @% o
3 K1 J, F! H( U0 i
  • 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-7-20 23:46 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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