0

各行に5つのエントリがあり、そのうち2つはfloatで、他は整数であるファイルを読み取ろうとしています。ただし、matlabのfscanf関数は2行しか読み取らないため、メモリの問題だと思います(5k行のデータの場合)。

これを修正する方法を知っていますか?

4

1 に答える 1

0

私はそれが記憶の問題だとは思わない。入力ファイルに予期しない文字が含まれている可能性がありますか?以下を再現できますか?

input.txt

3.4E-5 4.2E14 1475 381 998877
3.4E-5 4.2E14 1475 381 998877
3.4E-5 4.2E14 1475 381 998877
3.4E-5 4.2E14 1475 381 998877
3.4E-5 4.2E14 1475 381 998877

input.txtを終了します

filename='input.txt';
fid = fopen(filename);
A = fscanf(fid, '%f %f %d %d %d', [5 inf])';
fclose(fid);


>> A(:,1)

ans =

  1.0e-004 *

    0.3400
    0.3400
    0.3400
    0.3400
    0.3400

>> A(:,5)

ans =

    998877
    998877
    998877
    998877
    998877

複数の数値タイプでfscanfを使用すると、すべての数値が2倍になると確信しているので注意してください。

>> class(A(:,5))

ans =

 double
于 2012-04-24T10:08:30.617 に答える