Matlab中如何读取TXT数据文件[转载]

 网上收集到的Matlab读取txt文件使用方法:
  转自:
http://blog.sina.com.cn/s/blog_4b5b880c0100e7mo.html

 

下面这个函数是取filein中的第line行写入fileout中的程序,如果想实现取特定几行,只要稍微修改一下就可以。

function dataout=dataread( filein, fileout, line)

  fidin = fopen(filein,'r');

  fidout = fopen(fileout,'w');

  nline = 0;

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

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

        nline = nline+1;

              if nline == line

      fprintf(fidout,'%s\n',tline);

      dataout=tline;

    end

  end

  fclose(fidin);

  fclose(fidout);

 

调用格式:dataout=dataread(filein,fileout,line)

  如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据:

  a=textread('ll.txt');

  t=a(1:43, 4:10);

  1:43143行,4:10410列的数据,当然也可以只读一个数据,如果你的matlab没有textread函数,直接从mathworks网站下载就行。

 

 

根据txt文档不同种类介绍不同的读取数据方法
  

  转自:http://hi.baidu.com/youngbrave/blog/item/878db31fcd4f220f304e15bb.html

 

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

  对于这种txt文档,从matalb中读取就简单多了

 

  例如test.txt文件,内容为:

  17.901 -1.1111 33.045

  17.891 -1.1286 33.045

  17.884 -1.1345 33.045

 

  可以在command window中输入load test.txt,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish也可产生一个叫test的数据文件。

 

  二、中英文和数据如test1.txt

      

  你好

  欢迎来到

  振动论坛
  vib.hit.edu.cn

  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 =

     '你好'

     '欢迎来到'

    '振动论坛'

     'vib.hit.edu.cn'

 

  方法二:

  [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

    vib.hit.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 % 判断首字符是否是数值

              % 如果是数字行,把此行数据写入文件MKMATLAB.txt  

               fprintf(fidout,'%s\n\n',tline);

                     else

               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

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值