2

解析する必要がある大量のテキスト ファイル (タブ区切りデータ) があります。それらはほとんど適切にフォーマットされています。ただし、以下に示すように、誤った文字を含む行がランダムに散在しています。不良行の場所はファイルごとに異なりますが、追加される文字は常に同じです。

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 の組み合わせでやろうとしていることはできると思いますが、それを機能させるための引数の正しい組み合わせを取得できないようです。

4

1 に答える 1

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
于 2012-05-31T13:08:41.783 に答える