2012-05-31 89 views
2

我有一大組文本文件(製表符分隔的數據),我需要解析。他們大多格式良好。但是,隨機散佈的行包含錯誤的字符,如下所示。每個文件中壞行的位置都不相同,但添加的字符總是相同的。從格式不好的文件導入數據到Matlab

1 3 
2 873 
3 46 
23 99798 
23 1 
353 79 
"23 ," 967 
35 8028 
253 615 
"235 ," 3924 
345 188 
345 579 
345 419 
56 16835 
23 449 

importdata(filename)導入所有數據直到第一個格式不正確的行,然後忽略文件的其餘部分。我想我可以用fopen和textscan的組合來做我想做的事情,但我似乎無法得到正確的參數組合來使它工作。

回答

2

請使用textread函數和%q格式字符串。假設在問題的測試數據被保存爲test.txt

>> [a, b] = textread('test.txt', '%q %q'); 

>> a' 

ans = 

    Columns 1 through 9 

    '1' '2' '3' '23' '23' '353' '23 ,' '35' '253' 

    Columns 10 through 15 

    '235 ,' '345' '345' '345' '56' '23' 

>> b' 

ans = 

    Columns 1 through 9 

    '3' '873' '46' '99798' '1' '79' '967' '8028' '615' 

    Columns 10 through 15 

    '3924' '188' '579' '419' '16835' '449' 

然後你可以使用str2double去除a後列。例如:

>> str2double(a)' 

ans = 

    Columns 1 through 13 

    1  2  3 23 23 353 23 35 253 235 345 345 345 

    Columns 14 through 15 

    56 23 
+1

謝謝!我的最終代碼最終成爲以下內容。 [a,b] = textread(文件名,'%q%q'); data = [str2double(a)str2double(b)]; – 1minus1