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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

) E6 ~* {4 d1 b: j( k5 E1 Z根据txt文档不同种类介绍不同的读取数据方法8 F; [* _( f# m$ l  a1 h

+ V0 T* y1 J5 w一、纯数据文件(没有字母和中文,纯数字)
. o2 D- ^/ t' a* w
7 a/ D" g0 s1 k! |& e% N8 @  f0 M3 d对于这种txt文档,从matalb中读取就简单多了& C6 Q2 k& u/ r. ]. D
9 K& u, t. p; ~& o( h0 e
例如test.txt文件,内容为
! X+ O( _2 L. y2 y7 {/ V$ A% z, |$ W% I9 }) P. [
17.901 -1.1111 33.045
$ i* ^: }7 ?5 i2 T- |" ]17.891 -1.1286 33.045
" ?4 E$ @0 ~6 o# h% z17.884 -1.1345 33.0453 M7 U3 B$ o" s2 p$ y( G; k

  q$ J, i8 M! o0 K& w可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。4 L: |: K" [) C# ], G7 H
4 }0 L' W  p6 G& J6 o/ D9 I# E- I
二、中英文和数据如test1.txt0 Z! v- |. L* x  Y

7 X* }+ H- n  Z- x9 h0 m& q4 l你好
0 l, d$ ]! x9 K$ V" x+ W欢迎来到6 y1 L5 [1 }2 I6 [: j
论坛
6 `  Z' d; [) w- I  p+ h; K: j! K, oedu.cn0 M8 g5 O/ z' c; K& {$ b
1 11 111 1111
# D0 d, A! P7 p+ d2 22 222 2222
9 I* m. ]5 T* e5 G3 e# {3 33 333 3333
/ n& Y& K/ R1 C" a. _! S2 a. n& B4 44 444 4444  z- A$ Y2 P6 V# c" _
5 55 555 5555
: q7 u* i1 S: O* P1 q: |  F6 T
: h9 F5 c& o; Z* h- Y" S
; o' ~2 M" F% c7 f  J- C这样的文件怎么读入数据呢?* C$ M, U# w& C+ b. @' |0 W2 Y
方法有多种,现举两个比较简单实用的。
5 \! x6 N* ]: f4 L. D& g' d  k$ J# J1 r" I( {2 y5 e- d: |9 C/ j
方法一:* Q$ N1 T$ R9 f/ M4 z. a) n
file/import data....../next/finish
8 j1 D# u5 i8 ?>> whos' E  X- _. V) m% k; Z
Name           Size                   Bytes Class
: L( d4 \* F$ w% A3 r
* h" a8 F" c' l# j; S, ydata           5x4                      160 double array# U6 O$ D# l7 o; }* Q
textdata       4x1                      300 cell array# C9 Z2 C' T3 t7 I3 R, R9 n
4 C3 d! g+ }! m
Grand total is 54 elements using 460 bytes2 S+ {' n2 Y6 K
' I  ~" N1 U6 b3 e
>> data9 V+ r, [! }& I, H

5 G( {8 G& b% udata =
/ C2 J2 R/ c  l, ^9 }. ], l" v, @8 Q( J* [; l' w# e' ?
           1          11         111        11118 P$ m" o* M! s( [' ~1 C
           2          22         222        2222
7 k( `* x5 O2 d           3          33         333        3333
7 Y: v# M5 x+ C- e8 k% ?           4          44         444        44443 I# k$ g3 D! s
           5          55         555        5555
9 z0 j: T( F6 n) T/ v( e! D" @9 x9 ~, C- E9 \+ ]$ B9 O
>> textdata( ^0 q+ F! A+ _
4 Y' _3 X% c/ P8 o$ ^
textdata =
5 a1 v; O6 u2 i  n1 c+ V$ e2 P7 S, r7 W, c1 U! r5 G
    '你好'& x6 E* d$ U5 ?
    '欢迎来到'* \+ o( A5 B  D+ a! l
    '论坛'' f  G% U+ v& L5 a/ ?  e5 T
    'edu.cn'1 [% g$ V1 v6 P( q0 p, k- `# |

+ G6 |3 X7 M: `# x5 N$ F$ N" o& R7 {方法二:' e* {/ F9 M5 k. @- x6 o
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4): L, ^+ E$ @( ^" n7 F9 L4 ~
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
+ N) u- i4 s2 L2 h1 q这里%s的个数和[a1,a2,a3,a4]对应。
7 l& w4 Y* r+ H1 i; l1 s; @>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
; I# E/ a9 X4 z& v
( k( B& ^  I; D! Ja1 =
! q% Z% M  [* p' _" ]
! K  s: Q2 w% l! P9 ]    '1'! `; @0 D9 V6 U1 W0 p5 u% s9 t
    '2'' m2 V! ~, g8 U
    '3'
: {6 S; L4 R2 _7 o2 B( {0 _    '4'
0 x6 _/ I) a/ z6 H    '5'. b: }& S& R1 s
. D* n4 A5 H( b! s
a2 =
: Q( B3 C+ D$ L9 G
$ m: q9 S+ v" J8 f; j" g5 I    '11'
' D/ Q7 y+ X) J9 z* |# Q    '22'
6 n' U  T: s) [, \1 U; E    '33'
8 w* e3 ?; P3 q% @- f    '44'2 O4 O6 B$ B8 H9 Q
    '55'
, [  X! j( O; X( u" j$ \7 s- h# g6 c& z
a3 =  B( O9 K5 X0 P, F6 L
& R4 M3 Y4 T9 M& o, u5 E' Y
    '111'8 E$ f# y. I7 P5 M) n* o
    '222'
# o$ a- p& b' n! E$ f2 f: G5 e$ [1 ~: D    '333'2 P0 |8 g8 ^- |9 g, e5 b, O2 o; O
    '444'8 ~: E$ K) |. I' x- N4 q
    '555'
( Y) {2 K4 D$ U, \
: s* t- E5 P$ s; Ba4 =( s: G. d2 d' J  d" e* a
  o, V8 w5 V4 |. ]
    '1111'
+ P# C" X* d  Y+ a    '2222'7 I0 m* H( k5 ^: e; \6 }2 h
    '3333'7 ?% `6 L4 z( P' H6 Y
    '4444'
; J& _/ S7 i0 v; \    '5555'4 r* `1 J8 `3 o
因以字符串的形式读入,所以有''。& N" F. q) @3 V3 N/ [
————————————————————————————————
% {' O+ F+ @7 M- N1 B' A8 ^1 Y) K$ A7 D& c
三、中文 数据 英文 混乱如test.txt  P+ F0 |  w0 u# Z

8 C' Q/ i* r2 M9 l9 {你好; H/ G1 G1 z0 G. Y& v! ~2 t' R9 {$ _
1 11 111 1111
6 w  L; \3 C. p* C8 r& Q欢迎来到
$ o' n9 C: d* `' _! y3 E- i2 22 222 22220 E7 V/ [5 R, m* `' e: }* {
论坛
% a9 K/ q- o6 _$ v3 33 333 3333
  y0 y( H. z1 |( Gedu.cn, b0 {- w8 z6 M; T8 b6 Y
4 44 444 4444
8 A% q, j  c3 U5 55 555 5555: P- Q' N1 s$ E1 ^

9 r7 H3 p4 O0 [7 j说明:这种内容格式的文件用上面的方法是不行的。
7 Q" }" P# q5 V) n
  Z1 ^3 O" A3 ^& D以下是由chinamaker编写的一种方法:! n/ A6 X9 X4 Q5 n

2 D3 l1 j. ^# F) Dfidin=fopen('test.txt');                               % 打开test2.txt文件            ; J& c' y. ?5 v( {! _2 r
fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件$ v9 H9 s/ F: p; D
while ~feof(fidin)                                      % 判断是否为文件末尾              
% K5 l( P% h2 }1 M- C* t' O    tline=fgetl(fidin);                                 % 从文件读行  6 {' O6 a8 |2 n+ I, g4 r, [
    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值
: c! p" G5 B8 E" J       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt) V  v' t& `4 b+ ?; c% m/ K
       continue                                         % 如果是非数字继续下一次循环
% i  R$ n; }1 H2 C0 L7 S2 D, G+ _2 c    end
, ~$ g7 ?& B8 l8 n  ^1 {* V8 zend
- |' L& H0 X. ~9 L; d- cfclose(fidout);
- q; f/ ]) k- u, O$ P) R% CMK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
2 K  L) U& q! [( p/ W8 O>> MK
& [. F4 ~5 {1 A  K- y+ R
8 K! j7 ]6 V) o9 X5 h- dMK =& f  E9 d$ A2 M/ y/ `; T
. ]& P8 f; J5 j$ d7 {; n  h
           1          11         111        1111% n8 }7 L, i$ k7 g0 Q" L) B# D1 p
           2          22         222        2222  p/ ^, f! p" }% M: W5 |" r5 V
           3          33         333        3333
( R8 Q1 P8 C0 G, m  D           4          44         444        4444
) _7 U# ]! ?) L6 t0 q6 _           5          55         555        55557 r+ @$ v, h4 B3 p4 `

& Z2 F7 q( [, J---------------------------------------------------------------! D7 i; l) i0 e" o* O! C, |
- e' H( k8 Z/ h. e! {& }
我的txt数据里既有数字又有字符串,形式为:, I7 W, B7 d0 `0 ^. h" I$ y, @
0.129515 DDAA  01  2.24609 94.50000  984 }! J0 _9 J1 F; O5 M
0.130434 DDAA  01  2.24609 96.30000  9A5 E& a8 x0 T5 h# p" k$ Q* ]
0.131441 DDAA  01  2.24609 97.20000  9B- R' U1 C& o& w7 S6 \
0.132448 DDAA  01  2.24609 99.00000  9D
3 R! `0 v, J, c" j0 X0.133507 DDAA  01  2.24609 100.80000  9F
5 ?; z2 ~4 T8 Z& N2 j0.134515 DDAA  01  2.24609 101.70000  A0
% `7 U* F0 n6 Z% [............
+ R9 Y' _& _4 U: P1 O4 T, Y" A我只想要第一列,第四列,第五列。0 j% z7 \" m, o3 Q& i
也就是0.129515    2.24609    94.50000 这3列数,
) m, b2 @# y# T1 {/ `$ F3 F怎样导入matlab啊?
4 z# K1 b1 K9 A) h1 V( g# q# p# ^ - f& k; K$ i. e5 `: t7 ~, u
4 o% n. y3 Q) O
假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了; N; `+ U2 B4 B% w3 K' C+ x
[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
' G% y6 X' I6 U4 e) a  b# M---------------------------------------------------------------

该用户从未签到

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-8-13 11:07 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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