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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

# E2 |! `5 s2 w" G# J根据txt文档不同种类介绍不同的读取数据方法( [8 [2 v; U0 E$ S4 j
* |; S# @( O5 F3 [4 i0 \; ]
一、纯数据文件(没有字母和中文,纯数字)+ M( f  z1 q! s4 t- {
; w# Y" b, M8 R# ?+ G! c# _0 Q
对于这种txt文档,从matalb中读取就简单多了  G1 _$ w' T" u7 W$ A2 R  ^* s

3 ~0 X" p5 K# s6 |, m' Y例如test.txt文件,内容为) F" t+ g+ {; w. w7 w' ~
' j/ C2 D* x8 d: M7 q
17.901 -1.1111 33.045
! g8 \- d% `6 F. q6 T* t17.891 -1.1286 33.045
( S9 d8 l! \) V  w! ]# ?17.884 -1.1345 33.045
( z! I# N! a' {; K8 l  D6 E% y9 F) ^1 }3 N* w8 ?
可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。
& G9 S7 v8 E) x# l8 g3 L( w$ n* h" j* o4 u
二、中英文和数据如test1.txt
- b! D% u5 Z8 ]) p% p( g
, e/ z% g# D) Z' ?你好
9 W6 u: l) I, ^" k- V欢迎来到" S  I: e* D- r( a7 `# i# m/ j+ ^6 G
论坛# x6 v! R: S  q) ]  {# f
edu.cn
# p- o6 E$ }  c6 `' @* R1 11 111 11114 l; k/ Z4 l6 p+ M% b" b
2 22 222 2222' J( W" T; Q4 ?- {. Q# f
3 33 333 3333
4 ^7 o; l6 T" ?! A) }/ E4 44 444 4444" T5 q8 C4 K/ S. n. Y
5 55 555 55555 H2 T9 w. i) r* s9 |9 r0 i

) g2 A* |; S3 e7 W/ I# H- f. t  n! B  x  [! v: L; n* i* H
这样的文件怎么读入数据呢?. D4 q4 c9 N1 _
方法有多种,现举两个比较简单实用的。1 `% L: Q: @) J/ w4 k

0 A5 Y# G) ]( B; `: s% a; D; \方法一:) `. `  B% l' W' W4 x
file/import data....../next/finish
0 p) D% e# G/ k. o, M( U  w>> whos
8 B& U1 o/ y- x8 F8 q( U( z+ rName           Size                   Bytes Class8 k: g! I- w9 ~' C4 D, r

7 Q' j& F5 n  p! \2 ldata           5x4                      160 double array
1 }0 X6 X* o* ^textdata       4x1                      300 cell array. F5 C5 S! M2 e, b8 ^, G0 Z6 @

" q. S8 u4 h7 K! a5 SGrand total is 54 elements using 460 bytes) o" Z  i+ U5 S9 n% e# M9 [) Z# M! ?
" b, k& k. l0 l1 D3 N
>> data
' T$ i$ r8 C; t8 p2 c: M; W% Q$ d! I7 M" ^6 s3 T
data =
' x. L  B; b" U; n' |: s
2 l/ q; z; y# b           1          11         111        11112 O) H' [& ?; \3 i2 B! |$ g
           2          22         222        2222# H5 i4 e+ V1 y- Z  Y$ o
           3          33         333        3333
# f: ?! p2 A$ r( S           4          44         444        44449 E. B* `# L% y
           5          55         555        5555
" m' k( }. @" x" j, r6 _7 Q% ^5 e% A, U1 n
>> textdata
+ R& y, E' K! ~! g) m- ^+ r- v' v# C2 D  k$ r0 y) ^
textdata =
6 L, u6 q+ W) V( K
0 g) z) M& V6 x7 ~5 {    '你好'
0 z2 r8 a# w1 l& g    '欢迎来到'3 i9 t4 J) {4 ]  E: O
    '论坛': v5 n: Z+ D" a2 S: }* K% U( `1 A
    'edu.cn'. N. b' a7 K, `1 q/ c

7 ]  Y0 j* c$ S; f方法二:
7 r: {- Y. k8 t. ^4 |, a[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
* d# D2 `  s. Q, O, V" E说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。3 w" a4 }. H7 m- N# l6 m; [/ H+ \& O) L
这里%s的个数和[a1,a2,a3,a4]对应。; N+ W4 K4 S: _
>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
; A/ U; ]/ E$ b% V, C( T# ~" g4 M
  \+ z( ~; M4 m- F8 aa1 =
3 L: H1 h1 M4 P0 W6 U. c0 O
9 W7 z$ _9 [$ S/ z    '1'
6 ^) b5 F- p' o! v    '2'+ w- R8 Y; J7 j% B- v1 y8 A
    '3'
7 q* T1 N8 ~5 e$ t9 m0 b) V    '4'
- T, W# x3 N' L4 r" |/ {    '5'- w( b; @  f9 R3 k& b
; q4 s; j& N) T. c+ N& k
a2 =
( X: K3 t; z+ f, [% h" S% H9 [! f
% Q& K" c+ ~( Y! R0 N2 L+ [    '11'4 G6 m3 \/ P1 k1 _
    '22') D, E7 j; {- x( u1 A3 O( g  M
    '33'& R4 R4 o: ?& O3 X/ h
    '44'
% y" S) J2 R# @5 G    '55'
4 f& E! q; e+ b7 A, f. l3 d% {7 n
& j. \2 {2 V9 k1 p& q  Y. ~$ Oa3 =: S6 N+ Z/ T9 K% ^3 D5 u! y6 w
. Q0 p1 \4 i' w0 C' p; z
    '111'
& H/ V. c7 k7 u4 z0 `/ P. I# c    '222'9 Y! l  L4 V: o( Z
    '333'
  y" m" f9 X( o0 f& `" ~$ a    '444'* A% n9 ?+ {3 N, ~
    '555'
$ k% H/ w$ w+ f' z, z. w7 e4 P' i7 o
a4 =2 a& T* }) C2 R' Q; d4 b2 c0 |
6 s. A- W* ~* ~+ {& U* G
    '1111'
, F% P8 q5 H$ x) ]' ?) `( L    '2222'
* b  G3 a  T/ O+ @! c1 B    '3333'
  m* w! ?8 }( ~, H+ g7 x" V    '4444'1 F: C7 E3 \! [9 N4 E5 n
    '5555'( |( p' U2 ]( e2 y7 \
因以字符串的形式读入,所以有''。- G- d( J8 T/ e: T( d
————————————————————————————————
" f$ d) ?& ~  c- }! `$ e' n
4 i1 b7 d: P7 H三、中文 数据 英文 混乱如test.txt
- q* L7 o8 i8 Q" n0 X: i
! S2 r+ J6 ~% Q. X7 P1 F7 z  }你好& l0 t( Y4 [' H8 {( l
1 11 111 1111
. h3 V& R9 j; t) h) \欢迎来到5 L5 N# V! S0 k: K& r
2 22 222 2222
4 g% p* F7 I9 B8 `# e论坛) Q+ b* B. F; z! H0 M/ T
3 33 333 3333
& `# b9 V0 [; O% Xedu.cn
9 X, x0 J; {7 v2 D$ B4 44 444 4444
$ b. f, z/ w: v1 W! s1 l$ Y: x5 55 555 5555) k% J; R( r6 a1 Z' {" O" p  N

! ?( i3 d9 {+ f. q( t1 t& N说明:这种内容格式的文件用上面的方法是不行的。
2 d: j' |+ {4 n9 \  R6 y9 M6 N' K) x+ w
以下是由chinamaker编写的一种方法:
. i0 ?$ r0 M4 ?3 _, f& h9 b3 I  T% v* q, E: h6 N# y' J! H1 v
fidin=fopen('test.txt');                               % 打开test2.txt文件            : t9 c7 x5 a% l' D4 q% \! Q
fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件
6 Q9 M' ?  @  {- g. S8 j: wwhile ~feof(fidin)                                      % 判断是否为文件末尾              
0 g* j$ P2 }! p- C  ?    tline=fgetl(fidin);                                 % 从文件读行  
2 J' M) W  C2 Z* ]8 d    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值- y$ l3 x. q: _$ n  f8 r
       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
% M5 Q/ F% M7 e1 \: j, o       continue                                         % 如果是非数字继续下一次循环, L. r: h1 v- O- H/ F
    end
! K+ C( W5 y  P+ iend
) z' b, b* u! d3 w$ kfclose(fidout);
* b* i! H, B4 [0 `& O8 }" H: N4 JMK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来, D) n( `, Z! n0 i- \; t
>> MK( o- N0 Y5 n* }3 S* M" b% n+ Z
- q/ q8 X9 a/ Q+ w$ c* Q8 S: b
MK =- L4 x; ?& A) b) X

0 k* {9 u  ~) c! t3 a           1          11         111        1111# g  m6 S) [# \# l1 G: t) A' B2 t
           2          22         222        2222
4 a8 K0 ^! b( p           3          33         333        33335 Y/ _" X( ^* Q- L' ~1 v7 k/ q" ?6 z
           4          44         444        4444
& `/ _& r9 `( V  y0 d1 e) W           5          55         555        55551 v4 _. Y+ D7 J3 `7 {$ B+ y
. d* @& {7 p, U" d6 W( q5 N
---------------------------------------------------------------- x5 Y  d7 m7 E
. J9 T# F3 ?/ ^5 f5 \: I; K; ^6 k3 y! i
我的txt数据里既有数字又有字符串,形式为:; ^* A9 s6 E- t! b7 @1 a* H) M
0.129515 DDAA  01  2.24609 94.50000  986 M+ j" t+ n) \) M
0.130434 DDAA  01  2.24609 96.30000  9A
  T1 h7 a0 Z  o  p; H3 D. ]0.131441 DDAA  01  2.24609 97.20000  9B
# `! e3 O$ J8 X0.132448 DDAA  01  2.24609 99.00000  9D% x1 i& C$ s; A
0.133507 DDAA  01  2.24609 100.80000  9F5 Z# r# w1 R* Q$ p8 x7 J
0.134515 DDAA  01  2.24609 101.70000  A0
4 b+ c- x+ T# H6 L............, o+ k9 B: D, ?8 O% a4 O
我只想要第一列,第四列,第五列。
. h- N1 O. X& z. e& l也就是0.129515    2.24609    94.50000 这3列数,4 u; ^7 ?; \- o4 x
怎样导入matlab啊?" Y" ]8 Q" x/ N$ U
: U+ b7 l( ?" f7 N& J1 D
( r5 J) u1 x# v1 ]6 Z6 [# J9 C
假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了
$ \! |$ W; G/ ^/ ~% }* b( U, C[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
+ O" R2 ~* l$ B, d8 g/ J---------------------------------------------------------------

该用户从未签到

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-4 07:21 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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