在Matlab中使用文本扫描来处理格式不正确的数据



我正在使用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标志来处理它,但它不起作用。非常感谢您的帮助。

我不知道你所说的到底是什么意思。我想导入数据中的字符串,或者更确切地说,你想把字符串存储在哪里。

但是,关于整体读取数据,您可以使用"TreatAsEmpty"参数:

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

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

最新更新