0

私はこれを使用しました:

weights=fopen('indices.txt');
weights=textscan(weights, '%d %d %d %d %d %d %d')

しかし、これは私のファイルの最初の行のみを読み取ります。私のファイルは次のようになります:

0 90 100 5 0 0 0 (class)
19 5 0 0 0 0 0 (class2)
5 5 0 0 0 0 0 (class3)
-10 -5 0 0 0 0 0 (class4)

そして、私は括弧内にあるものは必要ありません

どうもありがとう !

4

2 に答える 2

2

この場合、次のことができます。

fid = fopen('indices.txt');
num_ints = 7;
num_rows = 4;

format = [repmat('%d ', 1, num_ints), '%s'];
weights = textscan(fid, format, num_rows);
weights = [weights{1:num_ints}];
fclose(fid);

もちろん、欠点は、読み取る行数を事前に知っておく必要があることです。ループで textscan を呼び出してみることもできますが、それは本来の使い方ではないようです (ファイルを 1 行ずつ読み込もうとしている場合は、代わりに fgetl を使用します)。

于 2013-03-29T18:05:10.867 に答える
1

以下を使用します。

fh = fopen('indices.txt');
resC = textscan(fh, '%d %d %d %d %d %d %d %s', 1000);
res = cell2mat(resC(1:7))
fclose(fh);

textscan使用可能な行数までのみ読み取り (および戻り) ます。ただし、指定しtextscanた行数 (ここでは 1000) のメモリが割り当てられるため、「賢明な」ものを選択する必要があります。

于 2013-03-30T00:40:45.313 に答える