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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

* s$ m! g! p: g/ d& Vmatlab的文件操作函数常常会用到,比如load/save,importdata,xlsread/xlswrite等,但是对不同的文件,不同的函数便利性是不一样的。对于专用的文件,专门的函数是最方便的,比如excel文件,用xlsread/xlswrite是最方便的。而对于最常用的txt文件,有几个常用函数需要在不同环境下使用才能效率最高。看了help里的Importing Text Data Files,做个小结吧!. w1 d0 R( Y& q! I
导入数据最方便的就是UI接口了,即Import Wizard,File > Import Data可打开,如果在脚本里,为了加快处理,可以使用importdata代替,但是它有如下限制,数据要呈矩形存储,便于放入矩阵中,对于非字符,如果是作为文件头描述是可以的,否则不能用此函数;
- q: V1 X$ s  V/ P) F' d
) c0 ~  _' f4 m. g  ]% i在以上条件不满足的情况下可以使用textscan函数更灵活的读取;
3 e4 o2 C8 T( x9 W7 q' y. U% l* \1 s$ [6 p- G; C* [
如果textscan仍不足以满足要求,就只能使用底层的I/O函数了。# J& f- A# p+ k. @8 @9 \

$ |/ s& @8 O' S% f0 A; t另外,如果想从矩形存储的文件中读取一部分,可以使用dlmread,如
  d2 W  \- U% u7 h( o
; H# a# D  F# {  _ph_partial = dlmread('ph.dat', ',', 'A1..B2')( u7 ?7 x. t. J, C

9 w6 x: d$ b" w2 H: N2 ^只读前两行和前两列;
( z  D# h2 z' N1 C  y% y' n% e9 K, p) a# {! a" r5 [
如果文件比较大,可以使用textscan分片读取。, X% B7 C5 N0 @1 c# p

" F# @$ V6 g2 r( B. Oimportdata用法(help中例子):
, V% X3 g1 S- e' w/ R7 O3 {  {& `) P7 W! N
7 X& Y: f) w+ F

2 ^) V& x2 \- m! l/ c: [命令
2 F& P& Y( N1 T+ Z
, C4 v* n; K# v/ {: F& ygrades_imp = importdata('grades.dat');
" l# K% O. c+ V" D3 g的结果为
: E+ W$ o' R, J7 ^1 `/ `% ^( v1 d# ]: e8 v2 v6 C& t

1 ]( O0 A; q, n' H
9 x7 y& a( N/ R# }5 k$ Gtextscan用法(help中例子很多):# E& J; S' r% Z6 C. R! o" T+ k
: a4 u9 u, G' k2 o$ V

! m1 q4 t" f( I  k9 w% ?
8 J) l/ {4 _. q0 L* R3 x  B7 p& [运行如下程序. O/ n( ?: G& t4 h$ S% Q" B( ^2 p! J

# Y* Z& h! A# L9 a' B  @3 vfid = fopen('nonrect.dat');5 B( h$ b. h; E3 v
c = textscan(fid, ... '%*s v1=%f v2=%f v3=%f %*s', ... 'Delimiter', 'n', ... 'CollectOutput', true);. x, [) p+ a  N0 A3 t6 o& d+ N( w9 W  W
fclose(fid);! a: R9 c0 e: L4 C2 [) ^- L
结果为6 K" G  U. o$ _- ^" r4 i9 s( v

# c& `7 Z8 |! e  ~( L+ ^ " T1 j/ |, b- V( j- p; ?; M% W

3 ]1 [* i- `6 M3 s/ X底层函数:
! s/ Y+ q! j8 F4 L! [
2 s# R3 a* V1 k常用的有
0 M6 v% Q# x$ y$ s# `  n; R/ j& y7 f+ @. z% y5 z- K& p2 U; h
fscanf读取格式化的信息;
8 j0 V& x, {. E% l& c; v3 S
- C4 u5 H, Z1 ?fgetl和fgets读取一行信息;
, z! _: |8 y5 t1 c$ Y! _+ H! @, V; f- ~
fread读取二进制信息;
6 Q/ B$ @4 x/ n% s  U& }! q8 l4 {  P4 U9 y1 K0 ]' P+ N5 K
feof检测是否到文件结尾。9 q0 H/ n$ ^( l
* _" K6 i' C3 B: X
  • 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 04:30 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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