2

フォーマットされた .txt ファイルを 5 列で読み取り、次のように整理する予定です。

0 1:0.007477 2:0.000000 3:1.000000 id:10002 #we = GX008-86-4444840 an = 1 asd = 0.086622
0 1:0.603738 2:0.000000 3:1.000000 id:10002 #we = GX037-06-11625428 an = 0.0031586555555558 asd = 0.0897452
0 1:0.214953 2:0.000000 3:0.000000 id:10002 #we = GX044-30-4142998 an = 0.00841930701072746 asd = 0.0999735

これらのファイルの内容を、各要素が文字列として取得されるマトリックスに読み込む予定です。マトリックスに正常に読み取った後、オクターブで文字列操作関数を使用して、id: などの不要なものを削除する予定です。

ただし、ファイルを正しく読み取ることができません。textscanfscanfおよび他のそのようなコマンドなどを試しました。

例:

[sam,count]=fscanf(fid,'%d %*s %*s %*s %*s %*s',[5,inf])

sam = [] (0x1) ???と を返しますcount = 0。これに関するドキュメントを読もうとしていますが、ほとんどありません。どんな助けでも大歓迎です。

4

2 に答える 2

3

これは、textscanを使用した実際の例です。Matlabでは機能しています。オクターブではテストしていません。

>> fid = fopen('test.txt')
>> A = textscan(fid,'%f 1:%f 2:%f 3:%f id:%f %*[^\n]')

A = 

  Columns 1 through 4

    [3x1 double]    [3x1 double]    [3x1 double]    [3x1 double]

  Column 5

    [3x1 double]

>> A{2}

ans =

    0.0075
    0.6037
    0.2150

編集:それをマトリックスに変換するには:

cell2mat(A)
于 2012-09-27T10:21:19.977 に答える
0

とを使用するfopenfgetl、ファイルの各行を MATLAB/OCTAVE セル配列に読み取ることができます。

簡単な例は次のとおりです。

fid=foepn('c:\path\to\file.txt') %# open the file for reading

%#Loop through the file reading one line at a time
i=0;
while ~feof(fid)
   i=i+1;
   cellContents{i,1}=fgetl(fid);
end

の各要素cellContentsは、ファイル内の行の内容です。

于 2012-09-27T00:10:37.327 に答える