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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
2 ]. k% t9 Q; ?- O# T# s& o
根据txt文档不同种类介绍不同的读取数据方法$ J+ Q# s" d  r, A+ A: U7 Z! \

3 d' B* m4 m% c  v5 }; R' V一、纯数据文件(没有字母和中文,纯数字)& l: K4 _% n2 n
; m. [* v/ ?: K& |
对于这种txt文档,从matalb中读取就简单多了
+ n, ^+ ~) C6 Y7 g
% E; h3 c7 h# Y4 k% _/ Z例如test.txt文件,内容为7 [, s) y: j$ J9 F9 p: g
8 C7 l! l* b1 A/ j6 J- J
17.901 -1.1111 33.0459 ]6 d8 o0 p- l5 H# R2 S" v
17.891 -1.1286 33.045
2 O3 o% b2 E; b5 N% U! C1 f9 U' e17.884 -1.1345 33.045
  T; J% ~( `, L1 @1 S# H" i- [
. K) b0 o: Y5 t7 L! M可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。! F. M- u7 m* m% s

( `! j. I! L, ?7 ^7 c6 V. \二、中英文和数据如test1.txt' h' ~& V% i$ K# w, G4 n
# R* _% l* m" ]* t$ F
你好5 \! V! @# F# s. H3 ]1 Z
欢迎来到/ [- b6 P) o& l* i; K+ {
论坛% ^& F6 u3 K. e1 b1 }/ U4 ^
edu.cn8 R. x" T- Y4 _$ w( }
1 11 111 1111! _/ u$ q* i' p: r" y' K* }6 n
2 22 222 2222  |- W/ ?3 a, n. l% K/ H$ m7 b' A
3 33 333 3333
1 e# l+ q8 Y" o4 44 444 4444
& Z! ?: a2 L% i9 x4 l5 A5 55 555 55555 @" @3 W& l2 |$ B  m7 T  {
! F% E& ^1 r+ z4 s- C
! Y& d% Q6 x7 e, [/ e" u* [5 t" O
这样的文件怎么读入数据呢?
% {- {6 \& a$ n2 w* e方法有多种,现举两个比较简单实用的。
- H* C' u8 I: [7 t6 H
8 F  }, f' U* i9 c0 S( o1 [方法一:
, H- R( ?$ H0 @1 ?file/import data....../next/finish
6 i: m  Y% e8 x  j9 ^>> whos& g* B( i! E& U: `* M
Name           Size                   Bytes Class( g5 `) q5 r% J0 |2 x

7 Y0 T( W# h6 |9 \, x# }! idata           5x4                      160 double array
9 M9 N6 x$ j/ k3 M" Y, b4 \% Ytextdata       4x1                      300 cell array
# [2 `# I- G2 U- O$ r7 ~' D) [+ z& B
Grand total is 54 elements using 460 bytes
/ g( i2 L% r/ ]
7 m2 V$ ^0 @% |6 H$ `>> data
/ J0 g7 ?$ b# [) Q3 F
3 E+ q2 d9 t9 g9 h  jdata =
1 R# }* ~+ A( N
0 B1 I/ Z* \8 G1 B           1          11         111        1111
, [! g/ Y( g+ m& ]           2          22         222        2222
- A3 b  m# L$ L+ p/ k! r; o           3          33         333        3333+ U2 p& j% j1 v
           4          44         444        44444 t9 A9 v: K/ F0 K* H5 X; P
           5          55         555        55552 e! R0 n& k' A' ?" Y1 T( L$ ?
: F: ?* h7 t- }* K) {/ C% b
>> textdata
& Y8 e, q6 t3 {6 Q4 ]) K* e! h- v/ H( W, G
textdata =
& i. H7 Y  j0 N+ E6 _% j4 M* r/ o* t( A- X) [9 H! c" s4 m7 H6 w
    '你好'
# ?" X" z2 s6 L/ V    '欢迎来到'# q5 T7 J% a/ J' j9 i
    '论坛'
: l1 g8 L8 c5 `' c6 f    'edu.cn'
( P) T& K. a1 J
. ?+ M4 M1 {  [2 }) C; A方法二:! k9 D; v% D6 f# e& y) i
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4): f4 N4 ?/ t7 M, Y
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
) ~$ K# Z# q" C这里%s的个数和[a1,a2,a3,a4]对应。
! J- Y( l  Y7 O" x5 o4 u* |>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)+ j$ u' f- _. t4 ?0 z1 j6 b3 y
# D6 W- U3 [& ?& B
a1 =
5 M( s* n/ x  B0 i) H& M+ n# ?. W0 g% @$ a- ^; W/ y
    '1'0 K+ d8 X% E% D5 X: h# }4 R
    '2'7 S( e2 o8 X: Q/ ~. @' i
    '3'
2 {* G( z; X4 `5 n) H$ v5 M4 `    '4'
& j- F0 L- Z- X4 K/ a" `    '5'
9 k1 H8 [' p: m8 j4 K" T: p! i* K2 `' w6 N8 ~
a2 =
5 W9 M5 s1 k# |' i6 p6 B, {) A& O3 d3 H" l8 a, ~
    '11'
" P' Z2 D0 ]8 [+ A4 e+ ^    '22'
6 @; x- u2 m" ]4 h7 I! Z7 V0 w) K    '33'
- U$ b% u7 p! l$ \+ @% z& Q3 ~    '44'
! y: M! w  I! d8 p8 h7 D/ v3 E    '55'/ z$ s7 d1 p! Z7 \8 ~* K
: @& Z* V0 t( j' a% a2 N
a3 =
  k; P+ i! z6 S6 E) Z5 T: z. c- S: N% O' R6 z4 f( ]
    '111'
5 y9 K' Z% I6 l7 N; j: [    '222'& Y% N. X% @7 U! W4 V
    '333'
: i7 @8 K6 p/ X8 |" E    '444'' P6 v4 R2 t; H: R
    '555'+ t4 P3 [% h9 A& O
& C3 @5 I3 r# }- Q) }
a4 =3 B+ J9 t7 y' S7 B

! {  w6 V- f+ L) b( _% H) R    '1111'4 n. n. x% U+ G3 z2 k+ i. u8 Q( |
    '2222', F, T: w& b6 o2 t0 F& l5 T( `8 |
    '3333'" ^5 p# g5 _1 H
    '4444'" h: Y3 \2 j2 m: L  g0 n+ Q1 r
    '5555'+ |: S  X( k" c" v) m' n4 M* b
因以字符串的形式读入,所以有''。
1 r8 X& Y0 p1 g) N3 Y————————————————————————————————
. s" b  r6 A/ w  f) [6 S" f. k/ S: X1 a9 N* s7 E6 r4 ^( k
三、中文 数据 英文 混乱如test.txt
; w  b% _/ q; [" ]! n8 S% `1 R$ M; ]! a5 v8 p6 m$ s, ^& T
你好/ r* G! M" {6 l' J' T- W
1 11 111 11115 j3 U9 l" Q1 ]. s
欢迎来到
& s8 b, Z; W5 u2 22 222 2222
% E/ E8 J+ z( b  A论坛
9 e: ~  I! t; K5 r) H/ `$ g$ d- b0 e3 33 333 3333
1 r% C* p  }/ A* f& N  ledu.cn2 D/ [& j6 R$ J. [) |2 i- C+ c: L
4 44 444 4444
! o4 b8 _* Z, b% g- I8 K5 55 555 55551 T8 \9 n$ j6 ]/ z- R3 {! l
: [) K" ^2 b4 W6 |: A! E
说明:这种内容格式的文件用上面的方法是不行的。- x8 `) Y: L7 n8 p6 d4 Z7 B
$ V5 {; e, i! s6 D* q) z
以下是由chinamaker编写的一种方法:
5 m8 o6 M" B0 _  n# t' G! X8 P% o4 U: l' |4 \! {! u
fidin=fopen('test.txt');                               % 打开test2.txt文件            
, X1 e4 n7 Y9 ^fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件
' P( p( Q# Z* Wwhile ~feof(fidin)                                      % 判断是否为文件末尾              0 V/ c; c0 N$ M. v! n
    tline=fgetl(fidin);                                 % 从文件读行  $ D  }3 h; x( j, l! z
    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值
; y9 S$ r  s( C$ M# P2 P4 ?       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
" A) I* ], k* c7 ?5 q; Y       continue                                         % 如果是非数字继续下一次循环& |' X+ x" U/ |6 ~' H
    end
: N( ^9 X( `* T* d0 a4 C7 {8 ]end
0 ?" Q3 x( [9 Efclose(fidout);
- R5 W; j" _# ]- `) kMK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
2 z0 `# m  s1 _& F2 B1 n* J>> MK% l$ H: A3 L! [2 W% f

- t8 R; I0 G5 Z2 J# AMK =
- A# x: f# d/ C2 u  T
1 I- Y$ Z) ~  m0 A6 M4 Y) S( ?' P           1          11         111        1111. g7 I) Z! @* Z3 Y- f6 A- j1 p* r8 n
           2          22         222        2222. y  f. C! l. p  t3 u7 C4 F  y* F
           3          33         333        3333* x9 j% }/ A) U
           4          44         444        4444
/ }  b5 `5 Q+ a# z/ J6 L' m! P           5          55         555        5555
' i, d1 F" @" h& |. p' u  q  p- p9 p8 L. N; w6 \
---------------------------------------------------------------
. ~+ \( s5 f, X1 S7 ~
" n0 n. D) c0 D  F3 S2 s我的txt数据里既有数字又有字符串,形式为:
4 D3 q/ ^8 O$ w0.129515 DDAA  01  2.24609 94.50000  98
# b+ j+ S( o& H0.130434 DDAA  01  2.24609 96.30000  9A
" l) O' ^" {+ [/ O2 s# X0.131441 DDAA  01  2.24609 97.20000  9B0 s4 U+ `0 B8 l  h+ @; Q2 u, f) z
0.132448 DDAA  01  2.24609 99.00000  9D8 H9 V" U( T# r: U3 R
0.133507 DDAA  01  2.24609 100.80000  9F
2 q$ }+ H: ~! t/ Y& |" O+ i: Q6 o0.134515 DDAA  01  2.24609 101.70000  A0
1 V1 B8 }: {" \/ H............* j  y8 ~! }/ x- w$ r8 j
我只想要第一列,第四列,第五列。
' S) o& w) X+ }! l( F! n8 F0 `4 p也就是0.129515    2.24609    94.50000 这3列数,
2 O. N7 X- r" p& f怎样导入matlab啊?. w7 e8 r; r/ v/ ^- b7 L

- l3 Z' E1 s( D& F! z; O- Z; e
1 V8 {2 v9 f! J  `假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了
$ v, p$ Q6 ]: ~, L' d! N. |4 _[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
! G$ X* y; `' U% q6 y# y1 f---------------------------------------------------------------

该用户从未签到

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-1 14:03 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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