Development Environment | ![]() ![]() |
バイナリデータの読み込み
関数fread
は、(ファイル識別子により指定される)バイナリファイルの全体、または、一部分を読み込み、1つの行列に格納する関数です。最もシンプルな形で、この関数はファイル全体を読み込み、それぞれの入力バイトを行列を構成するつぎの要素として解釈します。たとえば、つぎのコードは、ファイルnickel.dat
からデータを読み込み、行列A
に格納します。
fid = fopen('nickel.dat','r'); A = fread(fid);
データを読み込んだ後、それをスクリーンに表示するには、関数char
を使って、A
の内容をキャラクタに変換した後、データが水平方向に表示されるように転置して表示します。
disp(char(A'))
関数charを使って、行列A
の内容を、MATLABに数字ではなく文字列として解釈させることができます。A
を転置すれば、A
は、より自然で水平的なフォーマットで表示されることになります。
読み込む値の数の制御
fread
は、2番目の引数(オプション)を使って、読み込む値の数を制御することができます(引数を設定していなければ、ファイル全体を読み込みます)。たとえば、つぎのステートメントは、fid
により指定されたファイルを構成する最初の100個のデータ値を読み込み、列ベクトルA
に格納します。
A = fread(fid,100);
このコードの中の数字100を、行列次元[10 10] にすると、前と同じ100個のデータを読み込み、10行10列行列に格納します。
それぞれの値のデータタイプの制御
fread
の3番目の引数(オプション)は、入力値のデータタイプを制御します。このデータタイプ引数は、各値の読み込みのバイト数と、バイトをキャラクタ、整数、浮動小数点値のいずれとして解釈するのかに関する制御を行なうことができます。MATLABは、より広範囲の精度をサポートしているため、MATLAB固有の文字列、または、CやFortranと等価な文字列を指定することも可能です。
MATLABとC、Fortranで共通の精度としては、つぎのものをあげることができます。
char
' と 'uchar
'は、符号付きキャラクタと符号なしキャラクタです(通常8バイト)。short
' と 'long
'は、短い(通常16バイト)整数と長い(通常32バイト)の整数です。float
' と'double
'は、単精度(通常32バイト)と倍精度(通常64バイト)の浮動小数点値です。たとえば、fid
が単精度の浮動小数点値からなるファイルをオープンするように設定している場合、つぎのコマンドは、続く10個の浮動小数点値を読み込み、列ベクトルA
に格納します。
A = fread(fid,10,'float');
![]() | ファイルのオープン | バイナリデータの書き込み | ![]() |