在Matlab中使用textscan来处理数据格式不正确的数据

时间:2015-02-09 04:09:07

标签: matlab textscan

我正在使用textscan导入数据。我可以成功导入正确格式化的数据。我无法正确处理格式不正确的数据。以下是数据的格式。

JeB2021Da 12-13 and stuff, 1, 1, 0, 1, 0, 1, 1, 1, 3, 1, 99, 0, 0, 0, 
JoB2021Ha 12-13 and stuff, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 99, 2, 1, 0, 
JoP2021Co 12-13 and stuff, not enough samples
MaA2021Be 12-13 and stuff, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 99, 1, 0, 0, 
MaA2021Ma 12-13 and stuff, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 99, 1, 0, 0,

我如何处理not enough samples的数据?因为目前数据结构不排队。正在生成的数据结构是17 x 116 x 14。我想在数据中导入字符串。因此not enough samples将被导入。下面是我正在使用的代码。

fid = fopen('./file.txt','r');
fmt = ['%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d'];
d = textscan(fid, fmt, 'CollectOutput', 1,'Delimiter',',','headerLines', 1, 'EmptyValue', 0);

我正试图用EmptyValue标志来处理它,但它不起作用。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我不确定我究竟是什么意思,我想导入字符串中的字符串,或者更准确地说是要存储该字符串的位置。

但是关于只是整体阅读你的数据,你可以使用'TreatAsEmpty'参数:

d = textscan(fid, fmt, 'CollectOutput', 1,'Delimiter',',','headerLines', 1,'TreatAsEmpty','not enough samples');

然后,您可以通过查找导入数据数组中仅由零组成的行来进一步修改输入。