我正在使用" 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读取它像浮点数。此外,在上面的行中正确读取字符串。
任何人都可以帮助我吗?谢谢!!
答案 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};