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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

# i5 a% G6 W! P# ?: b+ ?% }1 R根据txt文档不同种类介绍不同的读取数据方法0 N, @* H# j0 L- g5 S

! i. U7 b) L. @' n# i- |. i一、纯数据文件(没有字母和中文,纯数字)
+ i" }* U% T: B  M; z) C9 b1 d* N# g1 Y: p: w$ d0 j
对于这种txt文档,从matalb中读取就简单多了
" `9 c  W9 o, o* K0 V2 g
) a3 @/ z/ j& L' z例如test.txt文件,内容为
6 P. W( [! B/ t) ?/ D3 X2 r. A9 J4 i# }9 t* F" x
17.901 -1.1111 33.0452 u' ^' y9 Z) ?" T( J, y
17.891 -1.1286 33.045+ W, P8 @' b, L" K8 g5 d9 g
17.884 -1.1345 33.045
6 ~5 m2 k5 {' T! G# W. m% c( e* _+ }+ j+ o4 I% v5 u0 M
可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。7 T8 x& s, a7 ~( _8 u9 L) f/ Q

* z% E4 p- `! Z) Z' u+ c二、中英文和数据如test1.txt
% K+ z, p' h6 P! _, o
  s, S9 F- j7 j8 n5 h) w. B你好9 t$ Y6 @- Z% g& K7 o
欢迎来到1 s' V6 E6 o( m0 b! H. a; \3 I
论坛  C. O/ R8 L' a' {  p7 [2 T2 F5 s8 u
edu.cn
8 ]! D4 x& W. L  g3 g1 11 111 11115 e. F* S) C9 w7 C; d
2 22 222 22225 K2 U& i9 H4 K6 D) @* o; Z) p2 p' b
3 33 333 3333
( s& e$ b# m! D% |& X9 L4 44 444 44448 Z0 O" D9 W# x5 O
5 55 555 5555
) \) O* o& i0 \% B3 ]
% ]" d" I: l: S0 [# Y1 T" J* V  t# K9 Y' B4 |
这样的文件怎么读入数据呢?- ]+ u+ h0 d: z
方法有多种,现举两个比较简单实用的。& e" b. W0 v4 D* ?* b- S

% }8 P* a8 ~0 L/ x8 j  d* K5 |方法一:
# \2 N# Q% m! W/ v  A- E# t$ v- Dfile/import data....../next/finish2 P6 j7 D( S6 `1 @9 j* B
>> whos7 D$ S3 g0 \8 \" S4 ]3 E
Name           Size                   Bytes Class. v( s* H6 h; Y2 ~1 o
: z, N8 _% ?1 C8 o; c6 H
data           5x4                      160 double array. f# }" K2 g9 \/ e2 c- ~$ z
textdata       4x1                      300 cell array, P) p5 ?- Q2 E
# F# I" L- P" A' _) q% i7 O1 U
Grand total is 54 elements using 460 bytes* ~, L5 J7 o* w4 H8 _" S$ O
) \0 j( p' j+ p$ G. N  Y
>> data) u& U1 F2 t, a6 d9 p: s# P

* |3 g& ]! \1 R" |! Cdata =: H7 y8 J/ G$ A, _
' D% }# C- O% |  }' R
           1          11         111        1111, K# t( n% H4 i" r4 X2 J
           2          22         222        2222
  M+ E9 z0 b- T  ?# c/ z           3          33         333        3333* C/ m( P6 j$ V3 S% f+ m
           4          44         444        4444
. @+ C: ?# C) ^& X( U           5          55         555        5555
% |5 q& ^% ]9 [  }7 g4 |; r2 X6 x' Q. L
>> textdata
1 _. z5 |* Y4 A9 R' u: L1 S1 X; }3 I8 ]
textdata =
9 Q- f. B! F' q% A/ x& A6 z( U* \
, V  ~! u8 S, D3 h+ F: x. ]& G    '你好'5 q% X( n8 n. W6 Q' k- D
    '欢迎来到'
1 N& T  D, Q- Z: o3 I    '论坛'7 W8 |- j# H3 T8 C
    'edu.cn'
; t+ X. p% F1 X% J7 }6 Y% ?; j" F2 K7 ?5 ]4 {
方法二:4 M% Q* {" _) E2 O1 I# P
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
7 @; S/ Q! W2 v& l说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。, m! [% [- h7 |% q' V% M5 c
这里%s的个数和[a1,a2,a3,a4]对应。
+ I/ U) h5 R3 T  b5 {. K7 E" h) Y7 J: p2 a2 t>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)! C6 x  @! a4 [: I: A
& o% k! c; j7 n
a1 =
; P0 R, m3 ?. L8 f1 e3 n; x1 f' Y7 l4 [* x+ J/ t
    '1'
$ B0 i3 S6 Q7 u1 Y* @    '2'
9 n8 U, ?. |1 }    '3') q% R/ I$ b. V, s! v# Z
    '4'
3 K# b) [, B/ o  y( V" l/ ~& H8 X+ j    '5'
5 H+ K$ ?8 P+ e" O5 t# P; f% \9 Q0 @8 [
a2 =
% e: g$ R" I- T  V" Z; K, q5 w4 i8 A% Z
    '11'
0 s: h* T7 ^& P& B    '22'8 u7 L2 B: S  R) a, V
    '33'5 s  }8 k+ u  s9 x$ d
    '44'- E: X  O3 J3 E1 g; y4 ]. o8 L
    '55'
$ m5 W" z/ M3 I' N4 {1 l. J
: @6 k3 @8 w" {; O0 X/ m* N' A8 va3 =
  M! c+ L3 V6 h1 g: Q
7 h6 Z' u0 W  I! A    '111'
+ f- ~7 R2 ]8 C/ @$ H0 f7 g    '222'1 j8 ]. l* T0 k4 ]- [# I# s4 ^
    '333'
3 m- v# B' F" C5 x0 g# M    '444'! V2 x/ ]" O5 G$ B/ T
    '555'
4 W6 K! e% S1 _0 K1 H8 v
, O0 a6 `3 ]) H! x$ Q: la4 =1 h: u8 B" |% |0 \5 t
6 p* f) l  Y. k( A& o
    '1111', _1 D! ~" r! [: F  m& v; A7 A
    '2222'
& S, q) _/ }3 o5 R    '3333'0 o0 L! d& M3 z2 x
    '4444'
6 X4 E  r) I6 T+ H" E5 F    '5555'
  T3 I: w8 x5 r) Z4 D. F" s" d因以字符串的形式读入,所以有''。
, V# r8 {0 A9 F! ~————————————————————————————————
7 M! s9 k- s% {9 L. \: M+ f+ w
& L- P2 g6 x' W" G8 e& y7 Y三、中文 数据 英文 混乱如test.txt- g: q# t) x( x3 i7 s. p
- A' N. f$ t. N% [4 s2 o
你好  w' d7 g. ?3 R
1 11 111 1111. x- }+ Y+ x) y: P* [2 ]& Q
欢迎来到- D  R2 u5 S# u6 \! m* E, V1 H
2 22 222 22221 E% G, ~+ K+ N9 N0 }* s/ s
论坛6 O$ U; ~2 h, S  U, E- S% Y
3 33 333 3333
% o+ u  I' A, b* }' xedu.cn
" \+ [6 E9 K6 [& ~& U1 u2 M4 44 444 4444- N. W! D7 a. F- D; k" ^0 l8 g
5 55 555 5555
2 u4 n( Y$ R5 `. g$ F5 x. E+ r0 ~+ H/ y; _" v& B
说明:这种内容格式的文件用上面的方法是不行的。# D( U8 ~; ^! P8 ?1 z9 f
$ U7 Q  w$ u; M1 h* F
以下是由chinamaker编写的一种方法:2 t/ {0 i; [$ Q
) @$ e0 V+ Z/ [$ Y' v' A
fidin=fopen('test.txt');                               % 打开test2.txt文件            + Z% V; }% S+ ?+ G" o" l
fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件/ v4 P8 L8 c9 H: I. E5 a6 t: e
while ~feof(fidin)                                      % 判断是否为文件末尾              & ?1 [! |* b, U! ]  ?# o7 X$ T
    tline=fgetl(fidin);                                 % 从文件读行  * X& h9 k: D" y. f( f* ], k% j
    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值3 Z, C  Y+ i% e& P$ w, ^6 T0 o
       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt, O2 c  F" a/ M$ o4 ^+ ?$ ?5 H
       continue                                         % 如果是非数字继续下一次循环; r2 C# p- l3 d0 W( `! @
    end
* v- v6 i  p% @! S' s# H1 X; x/ Rend
2 j% E( j* s1 A3 X6 W6 `# ]6 afclose(fidout);
8 L3 R& H8 F9 o0 lMK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来; A3 q# w& e( V. q  W- }1 a' d
>> MK; m$ I/ \5 b) L' d4 i* A, e

3 i6 A% x/ M3 t4 y: K+ \! k2 dMK =9 A6 ^) c( I3 w; N

% t7 r+ f- C. O6 P, N) t( f           1          11         111        1111
1 A+ R3 b2 D% E8 k           2          22         222        2222
9 e, A; `- F4 I8 ?8 T           3          33         333        3333
- m0 {. z6 X! P+ J  I           4          44         444        4444/ v# r7 G: P7 A1 x1 u7 v
           5          55         555        5555
- N& B! l. I7 o+ j3 L( u
3 K" }9 S% V  d, a---------------------------------------------------------------+ w4 b8 P( _3 F4 j

9 r" M1 j8 H/ B9 G我的txt数据里既有数字又有字符串,形式为:
* Y, e" E& |/ Z6 _. ~# b0 `( {0.129515 DDAA  01  2.24609 94.50000  98
9 Z) f; z, }1 K' O0 V% y3 p0.130434 DDAA  01  2.24609 96.30000  9A
; W8 ]* I  D. J: `/ a+ _0.131441 DDAA  01  2.24609 97.20000  9B! N1 X  R; k2 M  A, x( U( k
0.132448 DDAA  01  2.24609 99.00000  9D
$ C* Q4 t. x. V/ m$ @- e* T8 K0.133507 DDAA  01  2.24609 100.80000  9F
* V5 B0 h+ J/ M7 ^/ b0.134515 DDAA  01  2.24609 101.70000  A05 S1 B0 V# u, Z! x) g* L" P; S
............, `' x% J: q4 M) v
我只想要第一列,第四列,第五列。; L# m1 q9 v. N" N& [
也就是0.129515    2.24609    94.50000 这3列数,9 W( t3 T$ N' W  n
怎样导入matlab啊?
0 U: D0 ?. K) }& {3 k + ]# u4 c4 y! w4 U  i9 B" l) ]
/ X2 I) Q4 v- y4 d
假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了) G. f6 R$ g* x6 B& Z9 d
[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);% A! }2 _" n$ a) 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-10-6 12:57 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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