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

在matlab中读取txt数据文件(txt文本文档)

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
9 W* i6 o( K. z5 ~/ B
根据txt文档不同种类介绍不同的读取数据方法
7 t7 F2 n- M& Y6 [; v4 N9 s& @9 J6 b
一、纯数据文件(没有字母和中文,纯数字)
4 T+ _; e- o3 H% ]* ]) i
& o) P+ u8 V- b. Q& X9 V对于这种txt文档,从matalb中读取就简单多了
+ E4 R8 X/ ^  J5 {3 _1 _2 k, ?
1 W# j! G+ N8 q" [9 Q9 _2 {  S例如test.txt文件,内容为
- U5 ~4 |- m- J+ B% @: v; [4 @$ M$ U$ j2 Y" r3 a" _& v0 B2 F
17.901 -1.1111 33.045
% @' D/ E" A' }) ^7 C' J) d  B17.891 -1.1286 33.0458 ^; z! U* X  V# V$ _+ _+ r
17.884 -1.1345 33.045
3 X2 F- ^# ~" ?( ?+ }. p  d
# T: T- z1 T" }: n7 O可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。* i0 B- i# R) _4 Y5 N8 o

. R) ]' S, u! [: ?8 H二、中英文和数据如test1.txt
; K$ t* j6 ?: n) v0 H5 S) F, X& c. [) W$ X- N
你好
- N; _% J5 n0 b" W* d3 @1 {- |3 T欢迎来到
) _& p; w. p! I$ D! S, R论坛
# e* v' ?) j7 Z( gedu.cn
, g  l0 J+ b  A1 11 111 1111
9 U% n! G  M, U- m' L, C, X2 22 222 22220 z$ h( `5 S2 V; ^' O, S
3 33 333 3333! \' W; f/ e8 f1 A; J
4 44 444 4444
& |; ], F4 Y/ j. B5 55 555 5555. C  c; U; |7 ^) }3 f3 y
; r) |& }. p2 c2 p% d' ^

% M6 Q3 S2 v# |+ v这样的文件怎么读入数据呢?
9 a6 M$ y0 P$ K5 f7 N方法有多种,现举两个比较简单实用的。
- x( O! v7 A1 p3 ?3 i+ N( h* v6 Y: R/ F: n) D
方法一:
& \4 h. _1 _: ^% m8 l" k% Ofile/import data....../next/finish  o( E8 r% a, B7 Y, O
>> whos
8 x: h2 y8 a5 Y* wName           Size                   Bytes Class6 D0 ]4 W' x0 {( [
  q" u( }7 X- r2 E* `' q
data           5x4                      160 double array2 z; Q# a7 {' N. N9 j
textdata       4x1                      300 cell array% c/ E4 o) ^' X# u1 \9 A, r
- ~. {, ]) n* `7 M4 n
Grand total is 54 elements using 460 bytes" \5 F7 h, l& A  Y1 O; k3 @: g

* n* E4 X8 a; @- [8 d5 e7 G>> data
, H6 X$ [9 P3 d
7 P) a* r3 E5 h! Z3 j, W$ {0 Xdata =
4 S+ h( |9 ^# c! {2 w' W! X0 H; T+ H8 r! V( P- `5 k+ m8 z0 X
           1          11         111        11112 p( r, h/ u6 A& s% m
           2          22         222        2222' c2 @" O! @& l
           3          33         333        3333* S6 Z: Q/ ?! n) u
           4          44         444        4444* o* v  `" A& e4 I3 s9 p6 j5 _0 K
           5          55         555        55557 @, q1 k0 t6 r( d2 e2 c; b
! U) `- h" W. a* |
>> textdata
# T, x9 B1 F$ N0 ^$ D; l% ~  N' n& o8 g' e( {+ b! _9 e
textdata =
: A. ^5 O; z' v
# ~9 x! `# x8 E8 ~1 M    '你好'( M& s# d3 v# c. J
    '欢迎来到'$ ?! k# U5 B' U  R+ U) q
    '论坛'
* `4 q9 Q: n- N3 X8 R: D    'edu.cn'
* k, X7 O, q+ Y& |5 Y4 O) L; G0 Y9 `5 {* I  h7 _& W3 j
方法二:+ |  A8 ]; G9 x# w+ _, ?" [# C5 K
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)( c* R& O5 k) e, J$ t4 U
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
" k  s, k2 o  j+ u# @- k这里%s的个数和[a1,a2,a3,a4]对应。
( }+ m& M/ h7 s>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
# C* C- P$ P" H* Z7 m4 n
& K8 S/ k# m' R7 |) Ga1 =
5 D# t$ o8 N- A3 T
% X4 j: O( V' _7 [: v    '1'% i6 |/ p$ E( \  M
    '2'
: D2 x. H4 {$ @1 I    '3'
2 y3 S6 m$ m6 b5 y( U    '4'
8 F# w! _+ |1 {/ ~7 i    '5'* q8 y) G* ?5 `) o

2 I& ~+ w% u; [, d9 Pa2 =
! J- B! W/ V9 ?6 M) E* K1 m+ i0 ?" Z
* I1 H- q6 d, ^6 g: c    '11'
2 ]# T3 s- [' O6 m! r2 ]( A# {    '22'
+ U6 W' T1 M2 `. b  w+ d: N    '33', v: U5 G. n+ V0 E
    '44'
  @- m* Y( k5 l$ z: o    '55'% v& k& S0 {3 c* y. D
' b/ W2 H. @3 V9 j+ `
a3 =
0 W) [5 G$ R: y1 i/ ~* z" T
" Q* @6 `' G# o: o! Y4 Q: S    '111'" o# N$ b/ D% V$ g3 c7 N
    '222'
2 Y, H/ T& }9 N" Z1 @$ j$ o    '333'
5 u$ J- i2 A4 o$ F    '444'
3 H8 M" ]* b0 V3 g8 U+ W6 Z    '555'0 c' n9 |- M$ t; A1 _
7 g" C! v7 n7 n" i; g# r
a4 =' J& M! J# R$ m+ d
+ ]7 r/ \  }0 d$ R5 z; Y
    '1111'4 ^" p9 t. }4 L8 A
    '2222': g$ ~4 x9 t# D% r- i/ l3 ~9 {
    '3333'2 l/ U. _# x, A' ]/ Q& E
    '4444'. O5 H' V) l: ]! X
    '5555'
8 {& D1 ^$ P4 u1 F' g因以字符串的形式读入,所以有''。$ E# G' i0 H+ K! U4 r" m
————————————————————————————————6 Q+ |$ ^" @# ?

8 l- c' p. R' J* ^+ _三、中文 数据 英文 混乱如test.txt
' c, u. P8 |$ k( I; V2 u3 Y3 o6 `" A, W9 ?9 {  ?4 z
你好! D5 u4 G+ l; h& }3 d- @2 S
1 11 111 1111" u) z- ?5 H; M
欢迎来到
5 d, V$ W, r3 x  Z  k2 22 222 2222
# M# h3 ~7 s% T5 y8 C- Z: A/ q5 @- D, H6 Y论坛9 e+ K+ N( |8 k8 V8 X
3 33 333 33338 E; i9 j( o8 S& M4 n
edu.cn3 B' I' e0 |2 q. b: x
4 44 444 4444) Q! g) @, l5 a7 ^# b2 f
5 55 555 5555
" ]; {6 u8 e) U
6 h+ d. u- u* w; A% [/ A4 M: ]# }6 {# B说明:这种内容格式的文件用上面的方法是不行的。
0 b; j) m9 i4 Z( y- J& |
/ G4 e& n* R* X0 l以下是由chinamaker编写的一种方法:& F/ q% j- {: r5 z6 k

0 L6 v+ q/ X, K; qfidin=fopen('test.txt');                               % 打开test2.txt文件            
, Y: y  @  G' n& h+ B4 i0 `$ Lfidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件
% f7 ~# H. d0 z9 F" A  cwhile ~feof(fidin)                                      % 判断是否为文件末尾              
7 J, b" z$ V! U3 G7 N" P6 D% X    tline=fgetl(fidin);                                 % 从文件读行  , F/ E; z3 @6 J/ [
    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值# o4 H7 c/ S6 E0 j% R1 N, C
       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
9 i0 Y3 B. L" ^9 x: S8 _/ B       continue                                         % 如果是非数字继续下一次循环
) X, `* ^! q2 y    end
4 O! f/ g9 f3 R) `: I  h& iend
/ S7 f4 y) T; U: c6 ~# g  U0 ffclose(fidout);
9 n+ ?3 [4 U) A4 @- J) AMK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
& U  l8 {# j8 p2 }8 h>> MK
- `1 d1 E/ e4 f% v" P; P7 L- l/ G, i6 \8 M3 l" T8 h
MK =6 x% G0 |. m. y: o" H' L/ f

- |# C& k/ L- f2 n! k% v* |' x/ g           1          11         111        11115 E+ z" q: o- C  `" ~
           2          22         222        2222
. i: ?, |' j$ R4 ^& N) p7 g6 O" G           3          33         333        3333
" f. D# e5 w2 k           4          44         444        4444
0 G9 Y2 o) S1 r8 ^/ I$ X) v& I           5          55         555        5555& ?1 j' x; G% o1 O- t: N% m6 ]& G) {

2 N8 C: o: Y: W5 M2 \---------------------------------------------------------------
# G# x0 ^# v. ~2 {! C: _
9 P4 D. o! \5 c% m5 {我的txt数据里既有数字又有字符串,形式为:' F8 R; i+ r8 T- N
0.129515 DDAA  01  2.24609 94.50000  98
  I- `1 m/ I& {; m( G( Y0.130434 DDAA  01  2.24609 96.30000  9A6 m0 I+ n/ e2 I$ \) z  \
0.131441 DDAA  01  2.24609 97.20000  9B
* |% @9 ?: ?; F8 V8 i9 K3 ^3 q- V0.132448 DDAA  01  2.24609 99.00000  9D
1 V3 c9 A: H" B/ N2 U8 M( u0.133507 DDAA  01  2.24609 100.80000  9F: R; |/ E- X9 j  G6 N- A5 V
0.134515 DDAA  01  2.24609 101.70000  A05 U! `1 {! j& j# ]
............
! J7 D3 p8 t) {; `# h我只想要第一列,第四列,第五列。
8 q8 U+ k% K" X2 U也就是0.129515    2.24609    94.50000 这3列数,* G0 A9 L9 A! p, o1 C9 ?5 Q9 c, O
怎样导入matlab啊?
& N. m$ `2 M) Q% B0 U9 ` - \+ v) E! Y; N8 ~# `: }& b9 v* c

: i( |( Z) t8 n- p; r0 _假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了
& Z1 ^3 @5 C& K" g/ ][col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);9 I/ \  w5 r1 c7 v
---------------------------------------------------------------

该用户从未签到

2#
发表于 2020-3-13 18:13 | 只看该作者
在matlab中读取txt数据文件(txt文本文档)

该用户从未签到

3#
发表于 2020-3-16 18:42 | 只看该作者
在matlab中读取txt数据文件(txt文本文档)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 03:50 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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