比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

Matlab中读取txt文件的几种方法

Matlab中读取txt文件的几种方法http://www.bieryun.com/3236.html

matlab读取文本文件的几种函数:

1、load——适合读取纯数据文本;
2、importdata——只读取数据,自动省略数据格式前后的字符,超大文件不适合;
3、textread、textscan——适合读取行列规整的文本,会存到元胞中,可通过headerlines省略读取字段名(字符行);
4、csvread、dlmread——适合读取csv、xsl等文件格式文本;
5、fprintf、fscanf——适合读取复杂的文本(中英文、数字串混杂出现);
一、纯数据文件(没有字母和中文,纯数字)

对于这种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           5×4                      160 double array
textdata       4×1                      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’)    #    %*s代表省略后两列数据

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,’%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

未经允许不得转载:阿里云代理商 » Matlab中读取txt文件的几种方法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS