2015-02-09 104 views
1

我正在使用textscan導入數據。我可以成功導入格式正確的數據。我無法正確處理格式不正確的數據。以下是數據的格式。在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標誌來處理它,但它不工作。任何幫助是極大的讚賞。

回答

2

我不確定你的意思是什麼我想導入字符串,因爲它在數據中,或者更確切地說,你希望存儲該字符串的位置。

但是關於剛讀你的數據作爲一個整體,你可以使用「TreatAsEmpty」的說法:通過查看導入的數據陣列僅包括在行進一步

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

然後,你可以修改輸入零。