MATLAB Function Reference    
fwrite

バイナリデータをファイルに書き出します。

表示

詳細

count = fwrite(fid,A,precision) は、MATLAB の値を指定された数値精度 precision に変換し、行列 A の要素を指定されたファイルに書き出します(より多くの情報については、 "注意" を参照してください)。

データは列順にファイルに書き出され、count に正しく書き出された要素数を出力します。引数fid は、fopenから得られる整数ファイル識別子です。

count = fwrite(fid,A,precision,skip) は、各々のprecision値の書き出しの前にスキップするバイト数を指定するオプション引数skipを含んでいます。skipがあると、fwriteは、スキップしてから1つの値を書き出し、つぎにスキップをして別の値を書き出す、等々のようにAのすべての要素が書き出されるまで行います。これは、固定長のレコードの連続でないフィールドにデータを挿入するために有効です。precisionが、'bitN''ubitN' のようなビット書式ならば、skipはビット単位で指定されます。

注意

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

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

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

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

常に同じプラットフォーム上で作業をするならば、ポータブル性を考慮する必要はありません。つぎのプラットフォームに依存した数値精度文字列書式も利用できます。

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

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

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

符号付き整数: N バイト (1 N 64)
'ubitN'

符号なし整数: N バイト (1 N 64)

例題

は、4バイトとして格納された、5行5列の摩方陣行列の25要素を含む、100バイトのバイナリファイルを作成します。

参考

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


 funm fwrite (serial)