加入收藏
大学数学, 研究生数学,大学数学资料下载,免费 大学数学课件,研究生数学课件,免费下载
matlab读取txt文本
2014-08-06 09:17:07

根据网上的资料整理,txt文档不同种类介绍不同的读取数据方法

一、纯数据文件(没有字母和中文,纯数字)

对于这类txt文档,matalb中读取比较简单,

例如test.txt文件,内容为

17.901  -1.1111  33.045

17.891  -1.1286  33.045

17.884  -1.1345  33.045

可以使用语句load test.txt ,就会产生一个变量名为test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个名为test的数据文件。

二、中英文和数据

如test2.txt的内容为 

你好

欢迎来到

跳蚤之王

54tzw.com

1 11 111 1111

2 22 222 2222

3 33 333 3333

4 44 444 4444

5 55 555 5555

这样的文件怎么读入数据呢? 方法有多种,现举两个比较简单实用的:

方法一:

file/import data....../next/finish

>> whos

Name           Size                   Bytes Class


data           5x4                      160 double array

textdata       4x1                      300 cell array


Grand total is 54 elements using 460 bytes


>> data


data =


          1          11         111        1111

          2          22         222        2222

          3          33         333        3333

          4          44         444        4444

          5          55         555        5555


>> textdata

textdata =

   '你好'

   '欢迎来到'

   '跳蚤之王'

   '54tzw.com'


方法二:

[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)

说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。

这里%s的个数和[a1,a2,a3,a4]对应。

>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)


a1 =

   '1'

   '2'

   '3'

   '4'

   '5'


a2 =


   '11'

   '22'

   '33'

   '44'

   '55'


a3 =


   '111'

   '222'

   '333'

   '444'

   '555'


a4 =


   '1111'

   '2222'

   '3333'

   '4444'

   '5555'

因以字符串的形式读入,所以有''。

 三、中文 数据 英文 混乱

如test.txt文件里的内容为:


你好

1 11 111 1111

欢迎来到

2 22 222 2222

论坛

3 33 333 3333

edu.cn

4 44 444 4444

5 55 555 5555


说明:这种内容格式的文件用上面的方法是不行的。


以下是由chinamaker编写的一种方法:


fidin=fopen('test.txt');                               % 打开test2.txt文件            

fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件

while ~feof(fidin)                                      % 判断是否为文件末尾              

   tline=fgetl(fidin);                                 % 从文件读行  

   if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值

      fprintf(fidout,'%s\n\n',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt

      continue                                         % 如果是非数字继续下一次循环

   end

end

fclose(fidout);

MK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来

>> MK


MK =


          1          11         111        1111

          2          22         222        2222

          3          33         333        3333

          4          44         444        4444

          5          55         555        5555


---------------------------------------------------------------


我的txt数据里既有数字又有字符串,形式为:

0.129515 DDAA  01  2.24609 94.50000  98

0.130434 DDAA  01  2.24609 96.30000  9A

0.131441 DDAA  01  2.24609 97.20000  9B

0.132448 DDAA  01  2.24609 99.00000  9D

0.133507 DDAA  01  2.24609 100.80000  9F

0.134515 DDAA  01  2.24609 101.70000  A0

............

我只想要第一列,第四列,第五列。

也就是0.129515    2.24609    94.50000 这3列数,

怎样导入matlab啊?


假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了

[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);

赞一个(150) | 阅读(1523)
下一篇:如何将Word文档制作成PDF
 

胡桃木屋版权所有@2013 湘ICP备13006789号-1