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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
3 p6 [8 i* ?. ~$ t4 n
matlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!
  L( W2 v2 g6 D+ S  F5 C, \0 a2 V导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;
! f/ Z) e0 ^" x
4 F1 `. z! q! v) G5 e6 k" K在以上条件不满足的情况下可以使用textscan函数更灵活的读取;
5 j" t8 I/ O. D* C2 H% K6 T
1 X' R2 i: h& O6 P# \, O如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。
  n, N. f3 E: T+ q7 [- H* _/ Z" u2 M4 d& t6 S  f
另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如" q+ V1 K$ j* y! n% J4 E

& F. B2 I( ?4 q1 \; \$ H  C, P8 Pph_partial = dlmread('ph.dat', ',', 'A1..B2')
$ z7 o1 S5 D# y" u% J5 g5 V- A
0 ^+ A( w1 D$ @( C2 ]7 J只读前两行和前两列;4 g$ r4 d! |# x/ @! P% j3 i

) G* q$ b# s* F( P如果文件比较大,可以使用textscan分片读取。' @; Z( s: ^" H9 \2 ^" K. |
% p# q$ s% e- o6 r) U' W
importdata用法(help中例子):
& s4 A9 H' B: v: _- N+ Z2 V9 V/ A6 A: V
* @3 {5 Z2 ?) l" p" _) D0 {

4 O, }; D. Z/ [) z命令
. D$ C+ |6 s1 O4 I
4 T( L1 S$ s' O% ?. b5 egrades_imp = importdata('grades.dat');
2 V4 k" |5 Z6 P) Y+ G的结果为" w0 z- [6 E& G, I8 ?* {. I: h

9 p- ]  t$ M$ m0 `# i$ B9 Z& Q- ^& ` % w( R" T% x) \: B* v, r/ ~, N
& z# Z+ V) {0 `
textscan用法(help中例子很多):* {  E$ Y7 F5 G1 v

" j6 _# k+ Q, f 0 r3 i0 E! W9 ^) x: I
' |1 Z( a0 w) T: e: g$ c% t
运行如下程序
% U$ L8 @+ R6 T/ ?* b. h4 D5 a& @$ }7 d# |! O- g# z  u
fid = fopen('nonrect.dat');
3 }; G7 g5 t2 D/ e5 S5 `c = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);) k: N7 Q! R5 E1 l
fclose(fid);
1 I/ {! P& O+ ^) f结果为) m' e+ }: O1 L* Z
; l9 D! P5 h1 s9 D
; Z) ~6 f7 V( |/ H
9 j$ G1 A9 K5 q0 ]! k: z9 J
底层函数:6 B) N' M  V, \. l# ^
2 t, Z1 j8 k/ u# U* K, e) a
常用的有
( J% o5 g9 O  Y
3 R/ D5 v! T# L0 T1 _' I3 l. gfscanf读取格式化的信息;
/ |/ q4 \0 c$ ?& G, Z5 O  F" W
6 L: R5 Q2 E- p6 R  D/ {8 ~9 Wfgetl和fgets读取一行信息;7 a5 a* p) I/ `3 s2 d. t, p0 U
" Y7 k7 C  @6 U7 e1 T- _5 |+ V
fread读取二进制信息;
3 f; I; p' O3 Y* \$ L, s7 D- @& W  N) c- p/ N4 x
feof检测是否到文件结尾。
% u- n0 ^# O; ~' z2 X3 O" R, \8 C" W
  • 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-1 14:01 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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