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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

" x- Y7 m4 J/ i2 A- C- _根据txt文档不同种类介绍不同的读取数据方法0 n' D  M4 m: C2 Q
9 B' u# I- F# t; O/ G' M2 I
一、纯数据文件(没有字母和中文,纯数字)& ?( D; ^. }& n8 C7 O, j

/ [* n5 g7 a* F4 C6 q6 j对于这种txt文档,从matalb中读取就简单多了
; N* g9 \9 f& W+ c
- N) ?- Z. `: G5 B例如test.txt文件,内容为
) x: q7 n1 T) @( X$ C: T2 x9 f8 {( _9 q& W7 C$ e+ v) J
17.901 -1.1111 33.045& d4 m/ T7 q3 @: a& M. g6 z
17.891 -1.1286 33.045' P$ r" Z3 `9 M- K- x: x* x' N. ~
17.884 -1.1345 33.045; y" m' k3 D4 D) m5 G5 H/ a

1 b/ @! ]$ \% M4 S2 t+ k可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。
: C5 w% \) y, s# p+ g5 i
) n$ V% [& _. c4 ?. x二、中英文和数据如test1.txt
! A: P! |! @) I2 T. r6 x6 ]- C9 a  {# A- ^$ u
你好
$ E% G& f5 J" \* R% R/ t# {  [/ x' S欢迎来到
3 V! d2 a+ W8 |# J论坛
5 U- g5 M9 D+ O" uedu.cn  @- p6 l( C4 _2 x1 |6 q
1 11 111 1111- ?+ J5 c" {4 G' t8 I
2 22 222 2222: g! R+ e+ H$ U( a  ]2 r8 d* i+ z
3 33 333 33339 L7 d6 R/ r& Q' S. R4 g$ N
4 44 444 4444
3 X' Z1 N* ~. W0 H5 55 555 5555' T7 b7 _  {3 U
  c. I" m& J6 G* _6 W9 H

: h2 R) C! Q1 L& d1 m/ s! z3 O$ b' V这样的文件怎么读入数据呢?' m$ y, j/ d% \0 Z
方法有多种,现举两个比较简单实用的。
6 s2 [3 A& X0 I: ]4 R7 H! B% w6 u$ p6 g  s0 B2 _( i; }& f; [- O
方法一:
9 O! d1 O" i0 e' g4 hfile/import data....../next/finish& @! c2 K% D3 D" E! u& ^
>> whos
0 y: w( B5 h) r! ?7 DName           Size                   Bytes Class
* @/ V7 g& t2 V# L+ \
3 q3 L& U! p3 mdata           5x4                      160 double array) c- {: n& G$ s2 h' ]0 a; B
textdata       4x1                      300 cell array$ A0 T+ `6 D- H

* @/ P3 h, P5 L: ]Grand total is 54 elements using 460 bytes4 x7 K+ N$ Q; U
6 A0 I1 t9 e  }* H9 T4 ~
>> data% H: }6 K9 ~* N: y

" Y3 y% q) f, W& ~2 Wdata =  z* F! V* O2 E& c; `# d- G0 H
! A  o7 G: a! Y4 d7 L, M: @
           1          11         111        1111" n( ~( D+ O3 R; f: ]4 {$ h
           2          22         222        2222- k" m3 ]. `1 e
           3          33         333        3333
; n, ^" ~, p3 f! m+ R' `& X           4          44         444        4444
6 z  \! D& K, h& ^1 q           5          55         555        5555" N  ]2 C/ w  M" t

, O, C2 Y3 G9 N5 \- T>> textdata
! u- U+ t; }/ c; C
7 a; t6 w& c& Atextdata =
; Z9 k4 V4 x, U6 h
3 H. o& i4 {; C& S# T    '你好'0 ~, R) K# S0 t3 d' ?7 e. l
    '欢迎来到', P  s9 v5 {7 ~4 N2 c* d) I
    '论坛'
0 S' `  i$ ?" F' _; `8 |% P5 o! G    'edu.cn'
* N0 T% D. j# t  S: g/ A
7 K2 X+ @2 c% N& [$ E2 g. N方法二:
& W1 M: R8 f' b3 p% O2 |$ P$ b6 l[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
* l2 }( e3 a9 r' o2 i5 I+ x说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
) _- G9 f5 J, O# k' m/ U这里%s的个数和[a1,a2,a3,a4]对应。
" j# O, n' M1 U3 m>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
2 S+ V. @/ D, }4 x/ O7 z3 \6 K0 u% t# o' i: t4 b& f
a1 =- L6 n3 r& n* ?8 A! S9 u% ]
, h0 p/ W. \' E: H* w5 f0 }
    '1'
  Q: {  H* m5 v1 p8 K8 ~    '2'
* K  y) T& x. }- D2 A    '3', [8 a# V6 b7 p( J: |+ x
    '4'
  J; v- U0 \" w6 Z' A5 C    '5'0 S0 X. X8 c0 r7 o* L5 ]% r. o

: x- F& b# B' I# o5 Y+ n  z/ Ca2 =
$ ]1 l$ u( s3 i$ `. |9 q! O7 z, q, B
    '11'% Q; l% p$ ~! S
    '22'" v6 p# i: K( Z' e
    '33'4 k$ c" Z( [3 i: g/ p! |7 i3 Q# B
    '44'
0 U6 Z; F8 [# G* n4 @/ X    '55'
+ ~/ `9 L; S5 q* y! _# u9 @+ X% u$ I8 X+ G$ _; I0 B& W% ~
a3 =  d; E! J7 F: a9 I7 |6 @( Q# J. d
* @$ m6 n5 L2 q, Q5 X
    '111'
8 |& u! ^4 b" c& ~3 s; d+ m    '222'3 G1 x( _( d- _$ c# v0 t
    '333'7 }+ e9 `% `9 V8 z( l
    '444'
2 z2 {7 V/ K$ ]    '555'
/ {& y9 K6 A+ A, H( _& ?0 |
% q% }0 l- s. fa4 =
; }7 Q$ }' y6 o3 }' {- L' x) L: K/ p) x# x$ T- ^
    '1111'/ l" _: _, D( g1 w% B; U. D" _+ l- r
    '2222'+ a5 K! j5 u4 P$ ~  V
    '3333'9 s: I; [5 j  V$ \
    '4444'8 o$ s" Y- ?- d+ e( |  v2 a
    '5555'% g# `/ x: q. }8 L, v  X
因以字符串的形式读入,所以有''。
+ e1 M+ S1 H6 y8 W! o* l4 m" c————————————————————————————————7 h, a9 O; B+ x$ X4 _( m  r
2 {! a/ R' Y! y+ J% G% ]+ y' k# g( h
三、中文 数据 英文 混乱如test.txt
5 G! l5 U- Z+ Y) C4 P  X5 q' x2 h  P- G8 p, |9 w8 \7 ]. j6 ~) ~+ U
你好
/ E( Q3 N( T" O& U! c/ M1 11 111 11118 G6 L3 B; X3 T! l$ _8 K# r/ y
欢迎来到# q8 u  Y: w' E8 L
2 22 222 22226 X2 ]8 S9 O4 \; |
论坛
& K2 w. `! i/ i& Q3 33 333 3333$ L2 c0 k: K& p. |, o/ C1 f. U
edu.cn1 e* C, b& \& ?0 \: b- u0 h
4 44 444 4444
. q$ Y5 f8 a& \* q% u4 c5 55 555 5555
" J8 g: G; I/ v8 V* f
9 A3 _$ q' ?; L+ C5 g说明:这种内容格式的文件用上面的方法是不行的。' S: A0 Q2 R6 c

! H3 E' J9 j8 v9 Z% s' Z* v9 i/ ]以下是由chinamaker编写的一种方法:/ G: f+ z( e( L, \; f8 v- x( a0 c1 |
! S7 b( x8 B" a7 i6 {: Z0 i8 G* z
fidin=fopen('test.txt');                               % 打开test2.txt文件            3 _  U) d3 l' `: [1 F4 l
fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件$ A3 A# `$ F3 v1 \
while ~feof(fidin)                                      % 判断是否为文件末尾              / T* b0 M' y/ a- {6 n/ q$ h
    tline=fgetl(fidin);                                 % 从文件读行  
) M. Z5 T; Z$ X* A7 z% _    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值
. N* W9 l/ x( ]5 @; J. z; ]       fprintf(fidout,'%snn',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt# d) i7 m- Y3 e, q8 \
       continue                                         % 如果是非数字继续下一次循环
% ?/ w/ h: c! E    end
. \0 @+ @* E6 b$ x3 K$ wend
: p; }+ Z2 B+ x' f9 h; pfclose(fidout);9 d4 J7 ]# W, y( B7 F/ {
MK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来! e2 |/ \/ v2 u: |! y/ d
>> MK2 P) w1 `3 L+ O, i
) B( G9 _; A: r  q  u1 _
MK =$ ~8 J$ Q0 g; Z+ C( F- l2 ?
- k- [5 ^2 y! o* u" F1 d0 H
           1          11         111        1111/ w7 H) G$ D6 M! \; {# j% t
           2          22         222        2222. i+ j4 \: u/ ^1 s
           3          33         333        3333$ z, B! V1 y1 ^. e- p; N
           4          44         444        4444+ f4 L& |" d. t+ I$ g% O* S
           5          55         555        5555( s/ H+ i% Z. B* G2 k% |$ e

; s5 ^( L4 _. l: o---------------------------------------------------------------
4 L3 d5 y! e( r/ W; ]0 d
: H- Q! n/ t. K3 i! n6 I我的txt数据里既有数字又有字符串,形式为:
7 z. f% K1 _5 b7 u& ^8 _0.129515 DDAA  01  2.24609 94.50000  98
4 ^' c5 [+ B# l0.130434 DDAA  01  2.24609 96.30000  9A
8 x& b% @$ R% l0.131441 DDAA  01  2.24609 97.20000  9B6 N3 }* o; |0 o# w0 R. x& C
0.132448 DDAA  01  2.24609 99.00000  9D
: L5 P( s! @8 ~6 n0.133507 DDAA  01  2.24609 100.80000  9F
; |3 `( R- u3 I+ Z+ s0 C0.134515 DDAA  01  2.24609 101.70000  A0/ `. [* ?& R) q4 b3 [
............
0 v% `" N6 _' \& E+ Y7 `4 ?9 }4 ^我只想要第一列,第四列,第五列。4 T3 m4 Z8 {0 e$ x1 `5 @5 L
也就是0.129515    2.24609    94.50000 这3列数," s- Y( j9 n1 x: d6 G
怎样导入matlab啊?# F2 u6 ]4 Z  g, _
1 i( d. b' e# p$ }7 D

1 E6 J1 k1 W$ |& w假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了
& }: h4 S) P+ o/ M4 E. g; q8 a; d[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);# {5 f, z( M  y
---------------------------------------------------------------

该用户从未签到

3#
发表于 2020-3-16 18:42 | 只看该作者
在matlab中读取txt数据文件(txt文本文档)。

该用户从未签到

2#
发表于 2020-3-13 18:13 | 只看该作者
在matlab中读取txt数据文件(txt文本文档)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 05:48 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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