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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 |  {0 f' ?! n: T$ z; J1 L
matlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!
4 F' ~' _5 z6 I  ^( z' E. j导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;
/ N. b- I& o# i" @9 e" x* u5 c* [4 ^
! n) [4 o/ d+ F$ B7 [0 o% u9 Y3 \0 y在以上条件不满足的情况下可以使用textscan函数更灵活的读取;) R$ n# Q+ U. P- `9 p1 N; [6 c

% K+ R: h) \( L# W如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。
& {) c1 O& P4 \* C# G8 r" z: f: g( ?' E. Y: V6 w
另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如
) _% M2 e* Y7 P/ i" L; H' a3 i+ \/ }2 i0 E: B8 i0 v
ph_partial = dlmread('ph.dat', ',', 'A1..B2')- T" K! P( v) v5 P* _( L" k4 q$ u- C3 A
7 f3 A: m. W8 l$ c( E6 Z6 y
只读前两行和前两列;/ T3 K$ _4 X, {' T* G+ }8 y: C

) _4 R2 r* z6 Z3 g/ R如果文件比较大,可以使用textscan分片读取。5 ]1 I- k% C; |% f

( i  S( m8 e) y2 b% Y; Eimportdata用法(help中例子):, A' [, P$ d0 u* f; S

5 l) f) l2 N% ]9 E
7 s3 l0 p* ^4 r  ]  k( m/ o% L! O' d; w; q/ _0 }
命令
4 V' j6 Q# j( f; }" O3 I# b
$ i0 P. {" o; H) jgrades_imp = importdata('grades.dat');6 L4 N& d0 |: e  _
的结果为
7 {  Z2 z2 [. J$ n  [, R3 S" J
' ?6 T' y6 c4 U& z
: s: E/ L( p* ?: ]  e, l- T) G( q
textscan用法(help中例子很多):
  q- u, @. Z3 j& ]: m" l( t; q
1 [; c  z6 `, Q) \ & @- f6 M% }# |/ S4 {4 A/ B# W3 r
0 {8 o, t* O; j' W# R& G7 x; [
运行如下程序4 V* z$ Q2 @6 S5 U
2 k* M2 K- [, i/ m, }
fid = fopen('nonrect.dat');
# n9 ^; b2 o1 A" N' ]% |2 ]/ jc = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);
% j  H! @8 x( {; B' x( Nfclose(fid);  U" q) Z1 ^6 D) o7 h
结果为' c' L6 _) {; `0 K# f
5 |/ p! i! a. e" ?) s6 d. }" l

. t2 D9 C$ T" |. y. Q# R1 l4 N5 Z5 g) V" E
底层函数:( s3 B0 x2 a8 a5 r( k1 m
" r/ J/ G6 ~4 z8 I1 J
常用的有
+ D- {: |5 R" R$ e
; F3 ~0 c6 E9 M$ Bfscanf读取格式化的信息;& e, \4 c. M( R+ F6 I+ Q4 i# W8 C

' L+ W1 z) a* q- T3 \1 N; Xfgetl和fgets读取一行信息;
2 ^5 D( j7 Y8 c2 l5 X: u, L
' g4 |# o" \( n0 }0 @fread读取二进制信息;: S" N* U2 r4 k$ e' V% [$ V

: x( w8 |$ y9 o6 F4 u5 Q/ |8 m7 Vfeof检测是否到文件结尾。
0 U) ?" q' H! B1 W. v( |- h! W: `/ M
  • 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-8-12 09:36 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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