您的位置:首页 > 编程语言 > MATLAB

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

2015-08-13 09:49 661 查看

转自:http://www.360doc.com/content/12/0307/22/9053144_192599269.shtml

一、纯数据文件(没有字母和中文,纯数字)
对于这种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 % 判断首字符是否是数值

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: