无法从文件中读取浮点数

时间:2015-08-02 09:27:22

标签: matlab

我正在使用" textread"函数来读取这样的文件:

[files1,time_in1,time_out1,lable_id1] = textread(ref_file,'%s%f%f%s%*[^\n]','delimiter',' ');

ref_file显示为下一个:

ACCEDE00000 0 10 sn
ACCEDE00100 0 5 sn
ACCEDE00300 0 10 sn        

控制台抛出下一个错误:

Error using dataread
Trouble reading floating point number from file (row 3, field 3) ==> sn\n    

我不明白为什么会出现此错误。我认为格式是正确的:我在行的最后一个位置(%s)有一个字符串,但Matlab读取它像浮点数。此外,在上面的行中正确读取字符串。

任何人都可以帮助我吗?谢谢!!

2 个答案:

答案 0 :(得分:0)

问题是*[^\n],您不需要为换行添加说明符,而您正在做的是要求它查找不是\ n的字符串(五个值) ,而不是四个),所以它可能跳到下一行并取第一个字符串,导致第二个值(数字)被读取为字符串,依此类推,直到它尝试读取其中一个字符串作为浮点数。

如果您需要,可以使用'endofline'参数,但除非您使用非标准的内容,否则它应该能够自行确定内线。

旁注:textread现在不推荐,您应该使用textscan代替。

答案 1 :(得分:0)

将您当前的format更改为

[files1,time_in1,time_out1,lable_id1] = textread(ref_file,'%s %f %f %s');

并且建议您使用textscan,因为textread已弃用。新代码将是这样的

fileID = fopen(ref_file);
C = textscan(fileID,'%s %f %f %s');
files1=C{1};
time_in1=C{2};
time_out1=C{3};
lable_id1=C{4};