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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

( Y5 I8 J1 H6 z6 \* pmatlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!( o) A; s2 G& S5 a0 Q
导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;
) c6 }- E4 k; z7 r1 W  n  G. g% s- m, g' R) U$ e; n, D& P
在以上条件不满足的情况下可以使用textscan函数更灵活的读取;
- v+ ~4 u8 N  P6 _) f+ T1 f/ Z6 P5 h( |3 w( ?7 E
如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。
! K' _( o% J3 o; [" m+ \+ w$ b
$ B2 p" d% e/ c: k3 q0 P0 n另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如
: Z! |5 w' g- e* K( N* H# G
1 b$ G+ M: F) A5 ?ph_partial = dlmread('ph.dat', ',', 'A1..B2')2 D, C6 w8 m& }: l5 v1 {

7 y" Y4 M! p1 `+ r7 m4 o' w- d只读前两行和前两列;; H/ y! ?9 L5 J) y2 [$ g% `. M1 ]
" [3 T/ p: [( U6 f# @' g, C
如果文件比较大,可以使用textscan分片读取。/ M% N3 J; @- y( L0 E8 [
7 R4 U0 U: J8 N5 m
importdata用法(help中例子):9 `- d+ z8 Q" U! D0 m
* A% {& j  P- ^/ u: [# C

  W0 a; _- l% }
# M6 |3 a9 x0 ^- k* L* S命令
9 i+ }4 v0 J4 ^7 r1 N; t- i: g9 g" E1 t# r8 E7 y9 W6 ~
grades_imp = importdata('grades.dat');
6 x1 {) j" N, ?7 k$ F的结果为% f. ?/ g7 Z" C2 P  _+ w

9 r6 D" o) w( h% _) P
8 |/ m& u# R1 U- Z! b7 U' f
8 ?6 ?( `( f4 x5 H9 v' ^textscan用法(help中例子很多):- P% w2 h* p4 T8 r. K! }
0 }) c/ B  x! S- Y5 h

9 A  n0 P5 A' i
& s8 v. G' m6 x0 O运行如下程序
2 G0 {* J. R) g9 X8 O1 B- F8 h" f
fid = fopen('nonrect.dat');
) m- Y) Q8 D8 Q) U3 @* {c = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);$ t/ |. w/ J: V( f  J% D
fclose(fid);% S+ \% K- u. Z" q
结果为5 H4 B+ \0 Q; y8 F, b* B

% W  N: M! w4 U; R2 O5 y
( p% S0 Y' e% Y* S2 C0 v4 ?+ @- g( ~! H: e- F
底层函数:+ ]* n- e( O/ [4 H; y5 T
! v1 t5 D+ H5 e) d4 P/ b
常用的有
0 z  Z% w: \* D1 v& b2 a
3 d1 H, ]" w0 Y! y! r3 sfscanf读取格式化的信息;. g9 A& |! |& ~- K8 U$ B' Y9 s

9 c! O6 c! B% a/ x: R6 Hfgetl和fgets读取一行信息;7 A% A" G$ ]/ O# e0 R

: J1 c3 x- h( c" q" M9 x6 Ufread读取二进制信息;4 S" t! ?; S5 d1 r5 j5 _
2 ^6 g$ W; Q4 Q3 F( o/ z
feof检测是否到文件结尾。- ]' P$ V& O& G
1 L- J* p8 j( {% e3 R
  • 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 01:51 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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