MATLAB Function Reference    
fread

バイナリデータをファイルから読み込み

表示

詳細

[A,count] = fread(fid,size,precision) は、指定されたファイルからバイナリデータを読み込んで、行列A に書き出します。オプションの出力引数count には、正しく読み込まれた要素数が出力されます。fidは、fopenから得られる整数ファイル指示子です。

size は、どれだけのデータが読み込まれるかを決めるオプションの引数です。size が指定されなければ、ファイルの終端まで読み込みます。有効なオプションをつぎに示します。

n
列ベクトルに、 n要素を読み込みます。
inf
ファイルの最後まで読み込みます。結果は、ファイル内の要素数と同じ長さの列ベクトルになります。
[m,n]
mn列の行列を満たすだけの要素を読み込みます。列順に要素を書き込み、指定の行列よりもファイルが小さいときはゼロを追加します。

fread は、ファイルの終端に到達し、カレントの入力ストリームが指定された精度の行列要素を完全に書き出すために十分なビットを含んでいない場合、freadは完全な値が得られるまで、最後のバイトあるいはゼロビット要素を埋め込みます。エラーが生じると、読み込みは最後の完全な値まで行います。

precision は、読み込まれる値の数値的な精度を表現する文字列で、precisionは、各値を読み込むビット数と、整数や浮動小数点数値、キャラクタとしてのビットの解釈を制御します。文字列 precision は、'40*uchar'のように、上記文字列の中の1つをプリペンドする 'n*'型の正の整数繰り返しファクタを含むこともあります。precision が指定されなければ、デフォルトは 'uchar' (8ビット符号なしキャラクタ)が仮定されます。詳しくは、注意を参照してください。

[A,count] = fread(fid,size,precision,skip) は、各々を読み込んだ後にスキップするバイト数を示す、オプション引数skip を含んでいます。skipがあると、freadは、1つの値を読み込み、入力のスキップを行い、つぎに別の値を読み込み、入力をスキップを行い、等々のように最大size回行います。これは、固定長の記録から、隣接しないフィールド内のデータを抽出するのに有効です。precision'bitN' または 'ubitN'のようなビット書式の場合、skipはビット単位で指定します。

注意

数値精度は、使用コンピュータに対する実行可能なコードを生成するために使われるコンパイラのタイプによるのと同様に、コンピュータのアーキテクチャでの数値の表現方法によっても異なることがあります。

下記の表に、ポータブルなコードを必要とするときに利用するべき、C-準拠でプラットフォームに依存しない数値精度文字列書式を示します。

便宜上、MATLABは、リストされるMATLAB精度に等価ないくつかのCやFortranのデータタイプも認めています。C、または、Fortranのプログラマの場合、最も使い慣れた言語でのデータタイプ名を使うのがより便利であることがわかると思います。

MATLAB
C、または、Fortran
解釈
'schar'
'signed char'
符号付きキャラクタ;8ビット
'uchar'
'unsigned char'
符号なしキャラクタ;8ビット
'int8'
'integer*1'
整数;8ビット
'int16'
'integer*2'
整数;16ビット
'int32'
'integer*4'
整数;32ビット
'int64'
'integer*8'
整数;64ビット
'uint8'
'integer*1'
符号なし整数;8ビット
'uint16'
'integer*2'
符号なし整数;16ビット
'uint32'
'integer*4'
符号なし整数;32ビット
'uint64'
'integer*8'
符号なし整数;64ビット
'float32'
'real*4'
浮動小数点数;32ビット
'float64'
'real*8'
浮動小数点数;64ビット
'double'
'real*8'
浮動小数点数;64ビット
.

常に同じプラットフォーム上で作業をするの場合、ポータブル性を考慮する必要はありません。つぎのプラットフォーム固有の数値精度文字列を利用することもできます。

MATLAB
C、または、Fortran
解釈
'char'
'char*1'
キャラクタ;8 ビット
'short'
'short'
整数;16 ビット
'int'
'int'
整数; 32 ビット
'long'
'long'
整数; 32、または、64 ビット
'ushort'
'unsigned short'
符号なし整数; 16 ビット
'uint'
'unsigned int'
符号なし整数; 32 ビット
'ulong'
'unsigned long'
符号なし整数; 32、または、64 ビット
'float'
'float'
浮動小数点;32 ビット

つぎの2つの書式は、バイトではなく、ビットの入力ストリームに写像します。

MATLAB
C、または、Fortran
解釈
'bitN'

符号付き整数; N ビット(1 N 64)
'ubitN'

符号なし整数; N ビット(1 N 64)

参考

fclose, ferror, fopen, fprintf, fread, fscanf, fseek, ftell, fwrite


 frameedit fread (serial)