MATLAB Function Reference | ![]() ![]() |
表示
A = fscanf(fid,format) [A,count] = fscanf(fid,format,size)
詳細
A = fscanf(fid,format)
は、fid
で指定されるファイルからすべてのデータを読み込み、指定された文字列 format
に従って変換し、行列 A
に出力します。引数 fid
は、fopen
から得られる整数ファイル指示子です。format
は、読み込まれるデータの書式を指定する文字列です。詳しくは、"注意事項" を参照してください。
[A,count] = fscanf(fid,format,size)
は、size
で指定されるデータ量を読み込み、指定された文字列 format
に従って変換し、読み込みが成功した要素数 count
を一緒に出力します。size
は、読み込まれるデータ量を決定する引数です。つぎのオプションを利用できます。
n |
n 個の要素を列ベクトル内に読み込みます。 |
inf |
ファイルの終端までを読み込みます。結果として得られる列ベクトルは、ファイル内と同じ要素数を含みます。 |
[m,n] |
m 行 n 列の行列を満たすだけの要素を、列順に読み込みます。n は Inf を指定できますが、m にはできません。 |
fscanf
は、C言語で同名のscanf()
や fscanf()
とは重要な点で異なり、行列引数に出力するためにベクトル化されます。ファイルの終端に到達するか、size
で指定されるデータ量を読み込むまで、文字列 format
が繰り返し使われます。
注意
MATLABが、指定されたファイルを読み込むとき、ファイル内のデータを書式を、指定する文字列に適合させようとします。適合すれば、データは列順に書き出されます。部分的に適合すると、適合したデータのみが書き出され、読み込み操作は終了します。
文字列 format
は、通常のキャラクタや変換仕様からなります。変換仕様は、適合させるデータのタイプを示し、キャラクタ %
とオプションのフィールド幅、変換キャラクタを含んでいます。以下のように構成されます。
%
と変換キャラクタとの間には、以下のキャラクタを1つ以上設定できます。
アスタリスク(* ) |
値が適合しても出力行列に格納されない場合、適合した値をスキップします。. |
桁数を表す文字列 |
最大フィールド幅 |
文字 |
受け取るオブジェクトのサイズ。たとえば、単精度整数に対する %hd のように単精度には h 、倍精度整数に対する %ld や倍精度浮動小数点数に対する %lg のように倍精度に対しては l を使います。 |
%c |
連続するキャラクタ;フィールド幅で指定される数 |
%d |
10進数 |
|
浮動小数点数 |
%i |
符号付き整数 |
%o |
符号付き8進整数 |
|
空白のないキャラクタ列 |
%u |
符号付き 10進整数 |
%x |
符号付き 16進整数 |
[...] |
連続するキャラクタ (scanlist) |
%s
が使われると、スペースにより分離されたいくつかのMATLAB行列要素を1つの要素として使うことがあります。スペースキャラクタを読み込むためには、%c
を使ってください。書式 %s
は、すべての空白をスキップします。
キャラクタと数値変換仕様が混在していると、結果の行列は数値からなり、MATLAB行列の要素ごとに1つのキャラクタが、それらの ASCII値として読み込まれます。
書式指定文字列についてのより詳しい情報は、C言語のリファレンスマニュアルの scanf()
と fscanf()
ルーチンを参照してください。
例題
fprintf
での例題は、つぎのような exp.txt
という ASCII のテキストファイルを生成します。
0.00 1.00000000 0.10 1.10517092 ... 1.00 2.71828183
この ASCIIファイルを 2列のMATLAB行列に読み戻します。
fid = fopen('exp.txt');
a = fscanf(fid,'%g %g',
[2 inf]) % 2 行
a = a';
fclose(fid)
参考
fgetl
, fgets
, fread
, fprintf
, fscanf
, input
, sscanf
, textread
![]() | frewind | fscanf (serial) | ![]() |