実際にすべてをロードせずに、テキスト ファイルの値を使用して新しい変数を作成するにはどうすればよいですか?
たとえば、2 つのテキスト ファイルがあります。1 つa**bc**d
目は 18 行目に含まれています。2 つ目a**cf**d
は同じ位置に含まれています。私が探している結果は次のとおりです。
bc
cf
実際にすべてをロードせずに、テキスト ファイルの値を使用して新しい変数を作成するにはどうすればよいですか?
たとえば、2 つのテキスト ファイルがあります。1 つa**bc**d
目は 18 行目に含まれています。2 つ目a**cf**d
は同じ位置に含まれています。私が探している結果は次のとおりです。
bc
cf
残念ながら、あなたの質問は言葉遣いが不十分ですが、例はあなたが達成したいことの手がかりを私に提供してくれました. 以下が役立つことを願っています:
行をスキップするには、その結果を効果的に使用fgetl
またはfgets
破棄できます。これにより、ファイルポインタが目的の行に進むだけです。単純化した例に関して、最初の 17 行をスキップして 18 行目を読みたい場合は、次のようにします。
fid = fopen(somefile, 'r');
for i = 1:17
fgetl(fid);
end
s = fgets(fid);
または、各行を同じ変数 (s
私の例では) に読み込み、以前の値を上書きします。
fid = fopen(somefile, 'r');
for i = 1:18
s = fgetl(fid);
end
これに対するさらに短い代替手段はtextscan
、'HeaderLines'
オプションを使用することです。
C = textscan(fid, '%s', 1, 'Delimiter', '\n', 'HeaderLines', 17);
s = C{:};
文字列は文字の配列 (ベクトル) であるため、ベクトル インデックスを使用して必要な要素を抽出できます。たとえば、 から位置 2 と 3 を抽出しs = 'abcd'
て を取得するには、次のようbc
に式 を使用できます。s([2 3])
result = s([2 3])
あなたの質問を理解しているかどうかはわかりませんが、FSEEK と FGETL のドキュメントを参照してください。ブレット