MATLAB Function Reference    
fscanf

データを書式付きでファイルから読み込みます。

表示

詳細

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進数
%e, %f, %g
浮動小数点数
%i
符号付き整数
%o
符号付き8進整数
%s
空白のないキャラクタ列
%u
符号付き 10進整数
%x
符号付き 16進整数
[...]
連続するキャラクタ (scanlist)

%s が使われると、スペースにより分離されたいくつかのMATLAB行列要素を1つの要素として使うことがあります。スペースキャラクタを読み込むためには、%cを使ってください。書式 %sは、すべての空白をスキップします。

キャラクタと数値変換仕様が混在していると、結果の行列は数値からなり、MATLAB行列の要素ごとに1つのキャラクタが、それらの ASCII値として読み込まれます。

書式指定文字列についてのより詳しい情報は、C言語のリファレンスマニュアルの scanf()fscanf() ルーチンを参照してください。

例題

fprintf での例題は、つぎのような exp.txtという ASCII のテキストファイルを生成します。

この ASCIIファイルを 2列のMATLAB行列に読み戻します。

参考

fgetl, fgets, fread, fprintf, fscanf, input, sscanf, textread


 frewind fscanf (serial)