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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
7 ^3 ~9 Z; E( X4 z
根据txt文档不同种类介绍不同的读取数据方法
1 t5 j6 q0 w) r1 E
8 {. T: V* e) V* v一、纯数据文件(没有字母和中文,纯数字)0 K2 _" _5 R8 W$ R$ u$ s& ?9 n- i

+ ]5 K" t' c! p对于这种txt文档,从matalb中读取就简单多了$ `/ o! o- d- _$ X8 k
3 i( H* w% n: v! S! H" h: `
例如test.txt文件,内容为5 G2 I0 g& [/ }+ t" ^

6 M9 p3 `; R. \$ G' b/ Y17.901 -1.1111 33.045
  x: o' \2 U# }" C0 O17.891 -1.1286 33.045* b8 I( E- P1 Z
17.884 -1.1345 33.045
) s  k* [. S0 q* m7 M
) [8 x1 H2 ?3 w" R7 k可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。
) o4 K6 r# h# \' `
! }1 s; t( s# V二、中英文和数据如test1.txt
( o" h. m# `' {9 M
  z( y) t3 A, {5 ?0 T, T! \" Z你好
1 Y" y' P8 v  S" T3 b. A) n" E欢迎来到
  B' ]$ u5 g) j9 u( a论坛
* d: B- j+ z+ [7 G( Gedu.cn
# E8 x3 ^& I! ]5 ?1 11 111 1111
2 m; y  ~# f, D6 z# E% m$ k2 22 222 22222 q9 Q" I. A. V) X5 v) K1 f; F
3 33 333 3333
7 P1 w9 T: N! J+ A4 44 444 44444 H+ K) L# }6 g8 u
5 55 555 5555
0 k4 X- Z% {# H' |8 n; I& _
# U# e3 i) Z8 s5 S6 T6 j2 S. B  a% D
7 Z) H: N" d, w& U) w' ^4 L这样的文件怎么读入数据呢?, u9 O4 d! `5 _4 m3 a1 n
方法有多种,现举两个比较简单实用的。
% ?9 v8 A: t% C* j# B8 _+ V6 v8 h
方法一:8 [- c( {0 _5 |: T  ^" u- \) j
file/import data....../next/finish
- \, `9 M. Q3 ^1 e: l. E8 ~, V8 B>> whos
+ f# A. C5 ]0 H/ |# i4 a4 `' sName           Size                   Bytes Class
6 O. ]3 H/ E, D7 N2 ~. I( ]
3 v6 ]$ F4 X) }* ^data           5x4                      160 double array
; D( Q* Q2 ]& x: M* Dtextdata       4x1                      300 cell array3 R) {5 v, @3 ?) e' E& F

$ Q" p( @# s+ ?; O, ]Grand total is 54 elements using 460 bytes
' r$ G+ F8 W7 ?  e( y
8 a7 f: S3 Z7 r- E>> data
# l. o' g* I& s, z) F: x$ j' Q2 E5 C/ R, i5 n9 p$ n
data =
% q( I9 R% l7 }$ M2 q
& j' e  {+ `9 o% Q) D           1          11         111        1111
5 g1 V- `  r' H$ V2 z, [           2          22         222        2222$ l" Y9 D$ Q3 q) ^9 x
           3          33         333        3333
3 N' F3 o- R, j' x           4          44         444        44441 A8 ?5 B; P$ T4 b
           5          55         555        5555
) J' v0 d( }4 c6 ^, N/ Z5 @
7 p( F( o3 L# m+ J  s& d. k4 a>> textdata
9 D/ J. {% z& b& M% P- y
4 @# W8 ?5 c3 h; w% gtextdata =
0 t, ?0 A/ m& b0 G/ n* K% g* p' P  W: o# }0 ]) r! b
    '你好'
  T1 P& {0 }) I' s    '欢迎来到'
4 X3 f1 N) m6 g0 m3 Q    '论坛'
/ n; s' B( R5 Z5 u# _( m- }    'edu.cn'
; h6 s4 Z) m# c  W3 `9 p+ |" Z. F: X6 L. H4 R/ Y
方法二:
( n$ A* w* L2 n3 E/ k8 b! o6 \* a[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
& M: }" K! W5 l& }3 `1 ?* q, R) n说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
  W: T/ f& K( k7 m' ?这里%s的个数和[a1,a2,a3,a4]对应。2 L& s0 v: P1 I. `/ }* }* v
>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
" R$ r2 N' z! L0 `+ A1 w2 n5 j* y9 J! m! E
a1 =
; D: V, B+ C$ [2 l4 u4 P
1 K/ o& u6 e  I& T# ?- l9 W% r    '1'4 L- X; Z# I' H' ]
    '2'+ w5 A' \( {7 n  Y+ \' K3 R0 P
    '3'
4 l1 J# Y0 b/ N6 q& D    '4'9 N: D- H* m  c/ i) v/ g+ P
    '5'
( k0 o1 [" ?# k2 a) g& E- U: w% `  p( S3 Q. [2 t% i
a2 =' o0 {7 K" V& K$ A

* |3 Z" K0 G: n8 ?2 `/ N  y+ x' a    '11'
* {0 N" ~+ @1 _% a7 a    '22'# D9 W; x* Q) B5 V' l4 V2 g" y
    '33'
' Z  W1 @/ N. K5 E4 Q: O    '44'
2 n! n; F) [1 U0 }- I) _" g, q. Y2 E    '55'
% ~: x6 [; B9 M& h' Y, B5 f% I1 ]6 y6 X" s$ C) ^
a3 =" j% |- R: p0 B
% d% _# g0 b/ M4 ]7 ?0 D- h
    '111'- S" I6 R$ @1 X4 S
    '222'
9 [6 X% l4 ~, w7 e; }' w5 T    '333'
6 V0 O# @( h! W, Z" ^7 T    '444'' j; r( l: l! s+ \
    '555'' m+ a5 u0 k! K* z" \! ]

' x  {+ a. I; A" Z* m; l2 V: ca4 =
) C! C: j5 F. A. S: E. R: u0 r* R
    '1111', v3 T3 u, i% n2 J
    '2222'
( n5 \1 `! M8 @9 t: w    '3333'
" E  M$ k, `* w( w2 E    '4444'
+ o+ s! p  w/ \+ ]; \    '5555'% K# h( e" G* E1 @' s+ ]+ e( {8 E9 V- H& C
因以字符串的形式读入,所以有''。% f5 \& x8 p% Q: z, o" O$ J' u5 c
————————————————————————————————; d: }* @4 d, t' u# F7 t
$ k8 M  }( n" d, u- Q
三、中文 数据 英文 混乱如test.txt
4 }' M# M0 X4 g' c  `8 r1 K
1 R2 D7 _& v7 s; U. ]你好% _' @" v2 w  G) D
1 11 111 1111( W4 h% W0 O4 X$ e, Y& c  A% O
欢迎来到: H. i" f+ ?1 _8 x' E2 d- V
2 22 222 2222
# a+ z  {7 P0 h3 l& |6 \' O论坛" x7 g1 ^! |- w, P& @7 t8 X' S0 T
3 33 333 3333
+ v4 T6 y; ~* y, O/ gedu.cn
4 d% p' |; W' ~1 w, I9 Y) z4 44 444 4444
. a; c% n5 z4 r' D3 L9 y! f: e5 55 555 5555( x) g8 G! }  _
% a0 `5 d" \( g
说明:这种内容格式的文件用上面的方法是不行的。
4 y( A8 G( t" c! a! {! m  t1 J
, p% `: r* D2 g/ A( M以下是由chinamaker编写的一种方法:
& F8 i8 h, A) m1 t
  o. n3 |1 T* Efidin=fopen('test.txt');                               % 打开test2.txt文件            
! D3 y$ W) }) [' `& Y7 P/ l" a  j! D* |fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件7 \0 @/ Q5 [% g. X; R7 ]
while ~feof(fidin)                                      % 判断是否为文件末尾              7 B1 S- O: [2 l4 Q, J( T% v
    tline=fgetl(fidin);                                 % 从文件读行  ; {% X# T* y  x  u7 @
    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值
) J! d7 b8 U7 f0 ^7 z/ o& _       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
3 G" w2 U8 S0 O+ P" A0 D0 c. T. x       continue                                         % 如果是非数字继续下一次循环0 w  H( @3 _; l
    end0 S2 i/ L' M' d6 D6 |& f, J  q
end
# }& l- U1 O: X, q$ bfclose(fidout);# N5 {' e: Q. u6 D6 j
MK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
9 D' J* U) ^& q8 J! X: e0 A>> MK6 Q' \% W7 M6 g) Y# U/ y+ z" p

4 O# L9 }* R1 lMK =
7 P9 F/ X- e9 E+ d9 Q8 C
, a1 m/ S9 A' ?( K: Y           1          11         111        1111: o- H- a- H/ F+ A
           2          22         222        22225 C" x% _' Z- O6 n, v+ V4 @8 U
           3          33         333        3333" C6 T% ^: F2 F$ p* L' n
           4          44         444        4444# z( i9 e2 @5 I5 T" ?- k$ v
           5          55         555        5555  [+ K- f' Z; O- B6 |, H9 B
/ b4 M) }& T4 S! C2 \
---------------------------------------------------------------
) d3 z& d: w! h+ n7 m5 v1 G
4 W; J/ x. p! g- h' [* s3 g& e5 {我的txt数据里既有数字又有字符串,形式为:! K) P. i# w1 N: R- ^9 _# K
0.129515 DDAA  01  2.24609 94.50000  98
$ ~/ q  I; p% u# Z1 f0.130434 DDAA  01  2.24609 96.30000  9A
3 J2 I/ G, C" u5 ]0.131441 DDAA  01  2.24609 97.20000  9B
1 G" W6 C4 m; e! E% a4 b4 j: f0.132448 DDAA  01  2.24609 99.00000  9D0 G7 Z& H. G2 g5 e
0.133507 DDAA  01  2.24609 100.80000  9F& v& D: c9 s4 {( h( ?  P
0.134515 DDAA  01  2.24609 101.70000  A0* Y, ?9 `. D( A' B* [
............
6 P( L. w) G" _我只想要第一列,第四列,第五列。
8 R7 r2 A; f5 P$ v) K6 h1 Y: X也就是0.129515    2.24609    94.50000 这3列数,0 W9 d7 c+ @6 k* R
怎样导入matlab啊?
& R; d  ?% @% g3 i: H
$ H+ {8 A, @4 K8 |0 Q2 e. B& [1 s: X* e+ v& }, r* N& ~
假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了1 m' a. R; I* C$ Y  A
[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
. `: y* _9 S0 M$ m1 m1 S" g! l! 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-7-21 07:35 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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