matlab 数字字母,MATLAB读取txt(包含字母和数字)

【查了textread函数,但是好像那东西的格式也是固定的。不想钻研了。。放个相关的网址过来

http://guofeiyan01.blog.163.com/blog/static/10552908720111088743523/】

我需要读入这样一个恶心格式的test.txt:

tra 3

ID 1

IMAGE 1 28

ID 3

IMAGE 6 20

ID 2

IMAGE 8 2987

之前读东西的时候都是固定用这个的:

**********************

'a.txt'

1     2    3

1.10   3.2   4

33   2.1   7.2

***********************

fid = fopen(‘a.txt’,'r');

while 1

data = fgets(fid);%按行读.得到的data为char型

if data < 0

break;

end

temp = sscanf(data, '%f,%f,%f');

end

这时候在读第一行的时候我就想用

temp = sscanf(data,  '%s %f');

但是得到的是4x1的列向量。值为:116 114 97 3

【话说如果用temp=sscanf(data,'%s$');会得到 temp = 'tra';】

试了temp = sscanf(data,'%s %s'); % temp='tra3'

试了temp = sscanf(data,'%f %f'); %temp为空

蠢人最后决定一个字符一个字符地读了。。。

fidin=fopen('test.txt');

while~feof(fidin)

words = [];

num = [];

tline=fgetl(fidin);

data=sscanf(tline, '%s %f');

for i = 1 : size(tline,2)

if double(tline(i))>=48&&double(tline(i))<=57

num = [num tline(i)];

elseif (double(tline(i))>=65 && double(tline(i))<=90) ||...

(double(tline(i))>=97 && double(tline(i))<=122)

words = [words char(tline(i))];

end

end

end

fclose(fidout);

其实问题简化为:

temp = 'abc 3 6'; % char型

如果把char型的temp用一个函数分成字母traj和数字3呢?

再次百度了下sscanf这个函数。。。发现了它好多用法。。

data = sscanf(temp,'%*s %d %d'); %这样子得到的data就是[3;6].

算是解决了吧。反正我本来就打算只读数字的╮(╯-╰)╭

最后的重点只在于,用fgetl或者fgets函数,一行一行地得到数据。再用sscanf分别得到字母和数字。(* ̄▽ ̄)y