本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

matlab中如何读取TXT数据文件_matlab教程

matlab培训 cdadata 3796℃

matlab中如何读取TXT数据文件_matlab教程

今天需要做个matlab读取txt文件,在网上收集了下,查到了几篇不错的,总结一下,方便大家(包括me)使用:

下面这个函数是取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,’%sn’,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:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的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 =

                   11         111        1111
                  22         222        2222
                  33         333        3333
                  44         444        4444
                  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       % 判断首字符是否是数值
      fprintf(fidout,’%snn’,tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
      continue                                         % 如果是非数字继续下一次循环
   end
end
fclose(fidout);
MK=importdata(‘MKMATLAB.txt’);      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
>> MK

MK =

                   11         111        1111
                  22         222        2222
                  33         333        3333
                  44         444        4444
                  55         555        5555

转载请注明:数据分析 » matlab中如何读取TXT数据文件_matlab教程

喜欢 (1)or分享 (0)