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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
6 @& V: e! f3 T# B6 Z. V# _
根据txt文档不同种类介绍不同的读取数据方法
- b$ k9 r0 a9 s& D  L
% O# p. v, Q! T2 i9 n4 S! o一、纯数据文件(没有字母和中文,纯数字): |( P: Y! }9 j7 _. _0 p  {' l5 |8 I
9 X: G/ G2 k& e0 O- Y- \. W+ G
对于这种txt文档,从matalb中读取就简单多了
4 N& B, z% _) D8 ^" q: b
. p* a% O# _6 m4 L) `6 p, C7 H例如test.txt文件,内容为) B$ v& M9 a  U8 f$ X: N" c
" ^! l! _8 R" x( L
17.901 -1.1111 33.045
  J1 A1 H: l8 Q: D17.891 -1.1286 33.045; R9 _0 L+ `- e
17.884 -1.1345 33.045
; w# ^6 E% L0 E; w- c& F/ Z6 y8 U, p1 c! I- B
可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。
5 N2 d7 [. A' W9 v  x% ~: W- c% e% ?6 d) @" v
二、中英文和数据如test1.txt
- L: }) }9 L3 G/ X2 ]! B( A1 w" v
+ m1 H' Y( Z4 C你好: d& x2 Y! z- P  o: e
欢迎来到
; W( D' c% @+ e  n9 }, Y- X论坛: G( t9 _3 q$ E
edu.cn
' t/ ?3 P8 g- P" O6 I; m% h1 11 111 1111; C  C7 E) L* t/ E( Q/ d0 _
2 22 222 2222
. @$ a# ~: x: q0 ?+ s! [, c3 33 333 3333
/ r% x3 C4 h1 K4 44 444 4444/ {! j3 w5 x4 i/ b6 Y( f% w/ E
5 55 555 5555
4 H2 p0 P- `: t+ U, r- H
0 [7 t* P0 @9 N' s1 S
, ?& ?" `7 o1 E* x0 p, F这样的文件怎么读入数据呢?
9 \! K5 L! `  s5 N$ _0 O方法有多种,现举两个比较简单实用的。% E' O" P: T# c2 p4 E5 e

8 K9 |) `4 g. c6 p方法一:9 W2 v' Y; F" _- d6 V9 N2 a: H
file/import data....../next/finish
  i6 h. v7 M! p8 l+ c1 W0 X>> whos3 p6 [0 B- n# k* O2 c3 J5 M5 s" E
Name           Size                   Bytes Class
  }& [7 W" r) Y7 X0 P: `+ D! f$ ?0 N, P1 n/ P* Y
data           5x4                      160 double array9 P  m0 k% N& D+ i0 E
textdata       4x1                      300 cell array
2 |% F, M' M$ d' q/ N
) t. a! m9 Q' a: B' R5 m4 dGrand total is 54 elements using 460 bytes
' W; m9 S$ A1 g& G
" z( D& ~  @3 r>> data7 B2 @  ^! K" x$ D$ k
. q- M% {/ E5 F% [$ P# _& |
data =3 L6 _' d8 o0 a) r

) f* C$ D' v0 \           1          11         111        1111  R. r& I8 k+ j
           2          22         222        2222
/ q; [( B' \' w6 R3 P1 i- f           3          33         333        3333
0 K4 P2 l$ c# U7 {/ ]( _           4          44         444        44445 k6 A: B3 U: w/ z6 w6 G
           5          55         555        5555
9 n, b, w( A3 I; f6 j4 p) M/ O9 W0 C3 L0 i
>> textdata2 J. C) n4 E7 s( Q

( D5 z% \, D; ^: }% R7 I* btextdata =( `6 S6 N- X) p; C

* A2 k8 z4 O  |$ ?/ R% f/ Q    '你好'
" Y) a, g9 r: ^" O) w    '欢迎来到'# Z( _9 g' L* Z2 z; B  i
    '论坛'
" D" `+ ?; ?, O) o+ {0 A    'edu.cn'/ q+ V& L" ]0 |9 d
8 ~; H3 l. V; U& v5 N
方法二:/ [) m& H+ M# K! j' ^& v
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
3 e4 U4 b1 r3 I; i说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。) r& x3 {% G$ H" K3 H
这里%s的个数和[a1,a2,a3,a4]对应。
9 F1 \: `! F4 s, n% Z8 S>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
9 |; w( }3 h/ C: M
+ F+ i* }$ y3 E# v% c1 ^( aa1 =
3 ]6 L# U1 E7 _& u/ C
" M7 F. j2 J/ ^( E- y" z- B' T    '1'! g3 F& m/ e: W& }  ]# M
    '2'$ u. O$ o' j, x8 a% j+ [8 I; `/ f
    '3'
, u: T, n4 m- @& m# w% e& j    '4'& S/ R5 D: P( _
    '5'
, T' R4 \( O* R4 m  ?/ I! E6 h: F7 e4 G3 ^0 q
a2 =
! J" L5 F( N* U6 ]  X
7 j% G3 i  E& C; @( n( J, p    '11'* q: n' n6 p& R# `
    '22'
3 H  a7 G  Z! t    '33'
) c3 J' j* r. h. b; T    '44'8 N- b1 E$ l4 A& @
    '55'6 w/ N: J) T  C- z
; ^9 N7 {" N3 n7 `: G
a3 =3 v# q- R$ e; ]0 y9 Z

1 H- ~9 @& \9 [8 P5 O' ~, ?    '111'# M2 i& s) C7 L( n3 m+ d
    '222'
0 n! z; N, @$ ]/ m8 I9 v    '333'2 ]4 p& z% ^( o, X, V
    '444'+ ~3 \1 k: ]1 _
    '555'
/ D6 i# G- U0 O' ?+ m
  d1 r3 s. |$ x; U  H. h, Ma4 =9 v  s) D/ k0 k9 V; A" F
& R  a  Q8 g. z3 ^" @) P9 e9 w
    '1111'
/ f3 S, D' `4 c; ~0 U- Q1 z4 r    '2222'' g) o3 ?$ C5 t# X, g3 Z8 c9 Z
    '3333'
7 Y3 R. W3 A& F7 a4 K    '4444'
3 l, x$ t: u0 i0 b    '5555'7 h  X6 d, J0 J
因以字符串的形式读入,所以有''。4 t. L4 @% O! f( ?% z7 [+ o# R8 n
————————————————————————————————
# f9 P, Q, C2 v: a! f  Y8 J
6 g9 K4 W, a: L- O" x5 X3 \; z! k三、中文 数据 英文 混乱如test.txt
; y- ]$ @8 Q" q- x
" _) J1 ^: u* H) j' b/ t你好8 k9 y4 z' L, i: l2 ^
1 11 111 1111
/ X  i9 D1 q$ J+ Z1 A3 B2 d欢迎来到
! W2 a9 H! K" F, B: M2 22 222 22221 [0 }) r$ ?$ V+ I/ [9 @8 k9 D
论坛
2 H+ b; }3 B* Z1 _8 b( J3 33 333 3333* @# u8 Z; z# s6 g
edu.cn
# ?, H6 {% `& R/ K  j* H4 44 444 4444' A8 K) z5 |2 F7 G
5 55 555 5555
. B( Y" ], B+ |& w0 J5 `8 X7 H0 Q2 H2 C( k
说明:这种内容格式的文件用上面的方法是不行的。
" e- Z3 q- {% }+ [, c' u/ u3 {) [$ p6 z8 f
以下是由chinamaker编写的一种方法:
' v' Q' W4 O5 Y( G) ^. l" n8 r) ^; c! x  C  ]
fidin=fopen('test.txt');                               % 打开test2.txt文件            ' [0 y, ]5 F' d- ~5 b: d, K
fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件
8 d4 |) P. r& K8 U+ \while ~feof(fidin)                                      % 判断是否为文件末尾              0 m5 g) X1 t# s! x" U) u
    tline=fgetl(fidin);                                 % 从文件读行  
7 K6 ]& ~% k4 J; t1 T) l8 \    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值
5 q& ?7 o3 k6 Z6 O       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
  N4 b; P1 \9 ?       continue                                         % 如果是非数字继续下一次循环0 y. A% }; l$ r- y( ~: S
    end
& ^6 E& w1 e/ _end. f- W) C- N2 s3 z* o( V
fclose(fidout);
8 y9 S+ t; v" N  P/ MMK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
( }0 h: A  j8 ^>> MK
- r  b1 f* _( w' h8 C2 _  T& q, }$ l  |( Y1 H: L; E
MK =
( y& I7 U: D" T& Y# |! t
8 R" M& E# T  R& B           1          11         111        1111" V2 h  l5 R$ z, S! M+ {+ K* \) b
           2          22         222        2222
, q' s( S, x0 @- C           3          33         333        3333* g# z# t& l0 P
           4          44         444        44445 S8 r( X! ?; K
           5          55         555        5555& [( m" d# Y) B  V6 j

& N; G& u( q7 [* A0 \5 O+ ~& H& U---------------------------------------------------------------4 M5 y( U9 E+ B: [+ s- x  B0 H) s5 e! z

: H1 v7 j6 v: }% o% P3 b2 T我的txt数据里既有数字又有字符串,形式为:: \' B+ x" P/ H" o
0.129515 DDAA  01  2.24609 94.50000  981 \9 A! i0 _+ h: {; u1 T: o4 A4 m
0.130434 DDAA  01  2.24609 96.30000  9A
3 T1 \3 ~* B8 k" y: f0.131441 DDAA  01  2.24609 97.20000  9B
& T. F* H9 z% ~7 q; J. p0.132448 DDAA  01  2.24609 99.00000  9D
8 c" O$ c& b. R" k+ M, l$ r0.133507 DDAA  01  2.24609 100.80000  9F
9 U. w- m( F: a, {& T0.134515 DDAA  01  2.24609 101.70000  A0
+ H% r3 q0 b$ I............
6 H# q5 M7 n" F3 {: Y" A我只想要第一列,第四列,第五列。
/ O, |5 f7 G- U- ?: ]也就是0.129515    2.24609    94.50000 这3列数,) T1 Q" Q. ^0 B( d( ~
怎样导入matlab啊?
, T3 N, N, \( N 7 w& ~2 D, l, l1 Z# G4 t5 g7 Y
) R% o1 j4 _- x4 S3 K7 I6 a+ ]
假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了
: c8 P7 N) U$ l; o$ a5 L[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
; i) w4 t( k' ~3 v7 Z  x; B: \---------------------------------------------------------------

该用户从未签到

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 06:46 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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