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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

0 e" M( G& h  ]matlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!$ b. }* m! S  }- t0 Y
导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;0 k) {3 S6 L2 H0 g- c2 I* }0 h3 X
8 @; ?' Q9 F( s  m8 l
在以上条件不满足的情况下可以使用textscan函数更灵活的读取;+ D7 o" [, [+ o* I

- X( K. O9 S' ~如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。. w8 A( r' d% z7 i
( D* u8 m& S5 {- R" m) s$ h
另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如8 e! V8 C6 Q% N/ y
; |  A5 ?+ T; C; Z: ^0 {
ph_partial = dlmread('ph.dat', ',', 'A1..B2')
& w' W' I( d4 w1 z5 c& l7 q2 \- I5 `" F/ @) c( M
只读前两行和前两列;
5 r* t6 N$ y* B2 H0 C
/ l* t! e$ {+ `8 j. B) z* M9 m如果文件比较大,可以使用textscan分片读取。* j. ^+ C" f6 Y8 I5 r

6 }) l4 Z% z; x+ ~4 uimportdata用法(help中例子):
2 k3 P5 k8 \" L4 A
2 n0 z2 c3 B$ `, A4 x+ e
! t6 b9 W' W& S+ o7 E* a3 z: f4 ]7 ?: c6 ^+ S, N
命令; o  n$ F9 t$ q6 k. a

0 r9 p/ k; [8 Pgrades_imp = importdata('grades.dat');
! O9 r2 Z% g+ _' l的结果为  H: M- V* N3 t1 Z# `

1 b0 K$ e9 {. n( c
0 V- }0 [. s& V1 V
% u9 f% g9 b' m- T: ^% gtextscan用法(help中例子很多):
7 |4 M" n9 ^0 h
1 i8 n: A4 H1 b" o5 V" e- B . w" n, j" V9 K4 s! Q

/ p5 F0 r' m, y. U, r' P运行如下程序
: Y; m% a0 f. Z$ r5 g
0 y1 R, Q, k( {0 j9 E5 v: _fid = fopen('nonrect.dat');$ K/ d6 I$ Z: C% I
c = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);
" B4 y4 c/ u) g, kfclose(fid);5 L( o* }) y/ s" S7 {6 o. ?
结果为
" ]$ |* [8 F2 V" @! R. b! q! S: n, Q2 f
" Y0 c- a1 W7 `4 I) D
2 H* ~) D" `) c4 j4 F
底层函数:9 h/ a4 X- [3 _; H8 r; T
- q  p3 R! e2 H- T3 d
常用的有4 C  y8 ?) v' t4 p6 k) Y

, u+ f1 g0 n! M% ?fscanf读取格式化的信息;2 Y+ ]9 R* R/ c$ P# F9 z7 R  x
% ]* Q7 w. v% n$ \3 k4 S
fgetl和fgets读取一行信息;! k" g- u- {3 q/ o3 m3 t2 i. s

0 f& i8 F, U' W; s  Zfread读取二进制信息;
: J1 _4 B" T' Y6 [- m6 D1 }$ T
, t# t" K5 X3 Y* i3 V3 M) kfeof检测是否到文件结尾。9 K( C# @' N5 l/ D5 f. U3 A

  W4 g: W. G/ o9 s
  • 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-4 04:04 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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