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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
3 z- ]" {" ?2 {: P
根据txt文档不同种类介绍不同的读取数据方法1 ]5 U: a  h$ y. I- I

& j4 p9 l/ p: S) U一、纯数据文件(没有字母和中文,纯数字)* M0 g% H6 x/ s( U7 Q

; R9 l( m) U* |) O1 z# {5 h对于这种txt文档,从matalb中读取就简单多了
( @) r. D" k  R# J5 r% Z' h9 y& P& A3 j( N: K, D; t. j; k0 ^
例如test.txt文件,内容为
( q4 r+ C' k; j5 c' @9 L) k4 b. n0 r: _* f6 \
17.901 -1.1111 33.0454 d; A# G( L! x5 X) }( B
17.891 -1.1286 33.045
7 r) e2 e5 t6 Z2 m17.884 -1.1345 33.045  _& S  y) z3 c( j; B: e, h6 r

1 h: k  u2 }1 u4 h可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。; \( C; C( N! W' t' D  |

8 X! A% _% Z5 q! c二、中英文和数据如test1.txt
+ s* ?$ E+ R' |1 m+ _. o- C9 D% b/ t0 L8 w+ }( v) W
你好
5 S: A5 J% U- e; [* k- X: c欢迎来到
. A$ `* b3 \. m论坛
% j( \4 {& v) K. a) _* L+ t2 Aedu.cn
! i/ E% v+ b8 q6 O; F9 w1 11 111 1111; u  a4 N- a& U  J* E& X
2 22 222 2222
1 r  B2 ~; H4 F! l& d( ?. E8 r3 K3 33 333 3333
$ r6 {( s  ]7 @: ~5 a4 44 444 4444
! Y/ `& x2 j3 y% {) N4 d5 55 555 5555! p& C. r( d& L$ a+ |3 `
: R5 {, X+ b6 U) K( T6 r7 |

- L* q" X. J& ^. \- v这样的文件怎么读入数据呢?' y. l: }5 D7 ~; H( e, w
方法有多种,现举两个比较简单实用的。
: w+ R+ e7 I& Z! s0 {
! j, I. W/ k2 ~8 B, x方法一:1 x" X6 `7 R8 R' y; g
file/import data....../next/finish
% T9 X0 s7 ?/ w) z* s/ W>> whos
$ W% M; O+ E2 a3 {Name           Size                   Bytes Class% o3 b1 J# N8 I, h- Z& K6 _$ O: D
6 c) [9 ?) n6 i6 G
data           5x4                      160 double array
! ?  k/ o; Z( h" h$ B9 a. K7 X. Z3 i! ntextdata       4x1                      300 cell array( c- U8 z( v! Q' S2 ]7 `, p6 |5 q
: [2 O8 \: S4 ]. ^3 P' s' J$ d
Grand total is 54 elements using 460 bytes- S0 P& I' ]* w

0 D! k- q/ `% {: ~) V) ~4 s>> data
% N$ q1 p1 p, m1 N4 b4 Y6 B- y) l$ Q. b2 {( C
data =
1 N: D9 K0 L1 y- S5 ?( w) [$ K- @  \7 U  ^& E( m, f" A4 S1 g
           1          11         111        1111- s6 `3 [% d0 [1 g/ m& {2 F. T
           2          22         222        2222$ C5 A3 O5 w. n9 A
           3          33         333        3333
7 o9 Y5 ^% D  E$ v2 K) A- D. {           4          44         444        4444
/ h5 ~, B0 E0 X( y+ Y! U           5          55         555        55557 u, c* U. U  Z# v# M9 G( R) Q4 {0 [

. P* s# E8 Z( k1 e6 S/ y" ]>> textdata
2 A4 ^' k! Z" z0 O. ]! U" R' ^( F% s: C  P- Q; q: @% p. X4 V
textdata =
6 T) U5 v# ~5 E5 |* Y0 _6 m: Y7 _) K( L* s/ J  L( D( t; t, L* i
    '你好'
, E6 x  _+ D% u    '欢迎来到'
; N; G& z/ p8 I, J3 `3 F    '论坛'
. ]: C/ d5 E6 ~    'edu.cn'
" `/ e9 i7 y% q& ]/ [
2 e/ g! V5 x7 {7 w  R. J" ^方法二:
% N5 G% }- o3 x: B& V5 Z" |1 }8 J[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
' ^0 L( Z; D* |3 V) @0 q. t3 ~说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。( Q' f! H0 E0 s  j
这里%s的个数和[a1,a2,a3,a4]对应。/ g  k3 J# j/ _9 z1 F
>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)* B3 V" e8 J/ ?) g8 S

+ |: F) q4 G: K! X/ ya1 =
& ]$ V; F) N0 k. H$ S8 S2 L/ T+ J1 x! t
    '1'
# u0 [4 o1 H, K# U% X3 G# T0 N) _    '2'7 y+ d! n$ [2 ~: f+ o) d, I
    '3'
0 H+ e5 A% X. H% S1 M    '4'
/ b* @) U! X* b/ n% h3 o) k    '5'
0 ~7 R& c- b4 h% v2 W; M
1 j. h  d4 q2 d5 y  O0 T6 h" O* Aa2 =
6 V: S% r: U- r: c2 f
7 W% f: L( t8 \, I$ @    '11'. q7 P! F; s; H) r( }
    '22'
* v2 h$ v" V9 c5 U    '33'# @, A# z/ Y3 u: ]+ ~
    '44'( d4 Q6 c3 S) d5 g9 x, c
    '55'
  E$ ~0 Q2 Z+ M9 K
. A: `9 d  U* T) A# ?a3 =; X  X2 e$ M1 O! t$ V5 k

+ n& v) Y3 P( P$ R1 k! i% [  l    '111'
1 I2 t" e5 [4 u! V0 h    '222'# e0 z8 Y0 E( H$ O4 N: w7 T: c
    '333'2 w6 E: }/ e: a  O+ v
    '444'* o4 x) P: h, J7 i8 U. p  V/ i" }# b
    '555'$ u' G# W# M% e% U, t1 c( ~, m; X8 f9 w

1 R, l% z- b: @( fa4 =) m4 U* |; e# K5 l# Z5 R: |* X# T, m7 [

1 j- I  ]# N2 r, X    '1111'
7 B2 f+ V4 ?% }: p7 S* b    '2222'
2 n) O# S  I. {    '3333'
1 b+ b6 q" @, o2 ]    '4444') |# F0 O. t. \8 w% ?
    '5555'4 F. e/ k9 c# z2 S  a
因以字符串的形式读入,所以有''。# M) n+ O" x% i+ u( c. Y. q& c2 |! o
————————————————————————————————
  \5 a" L  l( C- g+ n$ f2 I: A
4 x9 ?( `/ R: O1 ^( E/ {5 k三、中文 数据 英文 混乱如test.txt
6 E6 S' ^2 X9 I5 h* k4 Z9 B
$ q+ I- e5 N; X4 p/ j$ z' B- V5 g你好+ z* t7 W; Q1 w' i- a! Z
1 11 111 1111! u, f4 p8 z# v; s$ @4 m. U# ]
欢迎来到
7 U! Q0 r# V% w3 Z: \% \9 w2 22 222 2222- g* n6 P' x, k) _- Y
论坛
: \7 K9 E0 X6 R/ w) }8 I% m3 33 333 3333
3 P9 g. R/ p: j8 L) A2 zedu.cn- ?' D2 E0 c# j
4 44 444 4444
" f. P9 e/ ~. z- k5 55 555 5555
; T9 v) g* d: h; F7 c. P+ d# A5 A- g7 n; ~: ?* b$ b( W# L
说明:这种内容格式的文件用上面的方法是不行的。9 |0 d4 \: l' a9 A: d$ L
6 M0 t' S9 j( c$ O2 @
以下是由chinamaker编写的一种方法:
6 t& k) M9 D' R% I. E
" N! L5 R4 |- f+ s* Lfidin=fopen('test.txt');                               % 打开test2.txt文件            
8 s) G+ Y; e/ ]; W8 `fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件
& T5 \/ o2 N2 }7 B# Zwhile ~feof(fidin)                                      % 判断是否为文件末尾              6 [# ^# @) x  B$ C+ L5 l
    tline=fgetl(fidin);                                 % 从文件读行  ' b, y) g) L+ Q/ }  a; _& U
    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值" w% T8 d/ K" P; \3 Q, `
       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt/ @9 G6 Y5 @. Z! Q
       continue                                         % 如果是非数字继续下一次循环  [2 a, y0 K* p
    end
% L" d  ]  w# s& R* ]9 I) {. q# Hend( d! g& g9 Z2 b2 `5 t5 Y
fclose(fidout);) w& z" e2 Q& w+ ^% i. @& Y1 j
MK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
" \3 `6 ?4 Y7 a>> MK$ t- U, J/ U6 c  j" N9 S* ?

$ |. J% q; P3 t9 a1 eMK =; o! Z8 b6 }+ ]

9 B% g9 S% R7 M9 L           1          11         111        1111! e5 w, F4 K3 _: k2 P. m, Z
           2          22         222        2222
. B4 h" `& F  H; r: b" S           3          33         333        3333
) I8 C, c1 p2 Z* x; o           4          44         444        4444
5 f! P$ K+ b, \% Y4 I           5          55         555        55553 e3 X; A$ K( b0 y1 w

- `' X9 {+ o+ B% O) R: M---------------------------------------------------------------# L4 ^& \# m! m! w

" X4 C. n' m7 r2 h( n7 b我的txt数据里既有数字又有字符串,形式为:
/ n2 y! d; U! ?& U0.129515 DDAA  01  2.24609 94.50000  98
7 Y( Y  d+ l. d: R0.130434 DDAA  01  2.24609 96.30000  9A% o2 W- X% t! M
0.131441 DDAA  01  2.24609 97.20000  9B- R8 Y! t' Q: m
0.132448 DDAA  01  2.24609 99.00000  9D; ~, ]( \- n! C3 i6 }
0.133507 DDAA  01  2.24609 100.80000  9F% I3 |& @, _& G! g) p
0.134515 DDAA  01  2.24609 101.70000  A06 Q5 `4 t5 Z* T7 K+ M5 @0 q
............
  D, {: F7 V; c( t' X% J我只想要第一列,第四列,第五列。
' s! F$ v* m$ s$ ]1 b+ U( Y  ^4 z% z也就是0.129515    2.24609    94.50000 这3列数,
! b5 x- X$ s- @怎样导入matlab啊?! G6 x' g, v% C" Q/ W8 L
3 b: [4 F9 ^. x4 H

- Y/ e8 |4 ^- V& R, ^假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了
4 |( ]6 g, {, ]- _' A[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);+ P: e9 U, k! _  H+ L! 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-11-24 01:48 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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