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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
8 L/ J# @$ i( R6 D0 ~
matlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!
( {- _5 I* e; R) F导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;
3 b; r; p8 q4 c' D0 i' x; V5 B- `) N% q- e1 ~9 n
在以上条件不满足的情况下可以使用textscan函数更灵活的读取;
/ C) ^& B! s( x: Q
% f! z* H2 o# g. Q5 E2 r: Y如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。/ R0 g: L, I) D: S
6 o0 z% _1 l& z$ L4 D
另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如2 d9 L' S0 ]: F8 j0 L+ B

/ |. [& m4 W# R6 p/ p1 \- k% t4 _ph_partial = dlmread('ph.dat', ',', 'A1..B2')
- q; `$ m* u! i: x% n3 ?4 U- x9 B7 V) e  K/ }& p2 q5 A
只读前两行和前两列;
  n, d  C2 L4 R1 V3 L0 n5 h
( P; S7 r2 d1 Q: H) x如果文件比较大,可以使用textscan分片读取。9 S6 _2 M* |! C/ L. b
( _/ v1 \& I! H2 H+ q
importdata用法(help中例子):3 \$ i- e* W( ?; J1 p- k) s+ r7 o: p

+ I0 p$ H' l' W9 u0 I 6 I4 S5 U4 K# A# J) V3 Z

  d+ [4 {7 Q- }" a) u命令" u) v4 c5 A1 z/ b" Q

6 }% c9 i* P! M" j* Bgrades_imp = importdata('grades.dat');
7 j- [) J1 T5 ?0 s" W的结果为. S" P% {- F8 ^/ {

! J! n2 f1 Q6 c+ t" q
" c2 @' X) D6 _$ e; b, }2 L2 g7 S+ p+ x5 [9 T
textscan用法(help中例子很多):
2 q: i" j7 Y! W+ q0 a7 i7 [6 s9 h) j7 Q6 l  v% D; K* ^4 E

0 T/ s- D- w9 H7 u( J; y& s5 q# W+ O( S
运行如下程序1 B) I9 k/ P! \
6 P% u# S# r# |4 W$ T5 y7 O
fid = fopen('nonrect.dat');
' I- \! ?7 _- j3 ec = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);+ F/ W: m+ O/ L2 h  E
fclose(fid);0 h( r4 P9 Z" C7 ?8 @; ]9 K. v
结果为
" @4 d( B* ~3 i: E5 f, Y2 z
) T! E; \: j& H% v9 `   p$ o$ P3 |+ I- t2 b7 ]: X

* B; r3 Q% J' o0 K9 O8 W- f底层函数:: T) P# A: i3 t
. ]$ Z! Z# c4 G
常用的有
2 E: \/ F$ s+ {3 g, [. p7 ]+ F& ]; ]: i% G; c5 C1 S$ \
fscanf读取格式化的信息;' H5 H( J+ l# @9 \3 f- C
' D& G$ w" ~/ P  ]. D7 b
fgetl和fgets读取一行信息;" k( i2 E1 a- e

* L) u# T$ E, g* V! Q- [fread读取二进制信息;
& j& g3 S! M1 U* y- ]  @$ ?2 g  o6 U  d4 {
feof检测是否到文件结尾。1 B  M/ J$ g1 L3 F9 Q# l' ~% w9 R3 Q
8 \0 k" N/ r9 t/ N* k7 r6 p/ c4 e
  • 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:31 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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