ドキュメンテーションヘルプ センター
最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
バイナリ ファイルからのデータの読み込み
A = fread(fileID)
A = fread(fileID,sizeA)
A = fread(fileID,sizeA,precision)
A = fread(fileID,sizeA,precision,skip)
A = fread(fileID,sizeA,precision,skip,machinefmt)
[A,count] = fread(___)
例
A = fread(fileID) は、開いたバイナリ ファイルから列ベクトル A にデータを読み取り、ファイル ポインターをファイルの終端マーカーに配置します。バイナリ ファイルはファイル識別子 fileID で示されます。fopen を使用すると、このファイルを開いて fileID 値を取得できます。読み取りが終わったら、fclose(fileID) を呼び出してファイルを閉じます。
A
fileID
fopen
fclose(fileID)
A = fread(fileID,sizeA) は、次元が sizeA の配列 A にファイル データを読み取り、読み取られた最後の値の後にファイル ポインターを配置します。fread は A にデータを列順に入力します。
sizeA
fread
A = fread(fileID,sizeA,precision) は、precision に記述されている形式とサイズでファイル内の値を解釈します。sizeA 引数はオプションです。
precision
A = fread(fileID,sizeA,precision,skip) は、ファイルの各値を読み取った後、skip で指定されたバイト数またはビット数をスキップします。sizeA 引数はオプションです。
skip
A = fread(fileID,sizeA,precision,skip,machinefmt) は、ファイルのバイトまたはビットの読み取りの順序を追加で指定します。引数 sizeA と skip はオプションです。
machinefmt
[A,count] = fread(___) は、fread が A に読み取った文字数を追加で返します。この構文では、前述の構文の入力引数のいずれかを使用できます。
count
すべて折りたたむ
9 要素ベクトルをサンプル ファイル nine.bin に書き込みます。
nine.bin
fileID = fopen('nine.bin','w'); fwrite(fileID,[1:9]); fclose(fileID);
ファイル内のすべてのデータをクラス double のベクトルに読み取ります。既定で、fread はファイルを 1 バイトずつ読み取り、各バイトを 8 ビット符号なし整数 (uint8) と解釈し、double 配列を返します。
double
uint8
fileID = fopen('nine.bin'); A = fread(fileID)
A = 9×1 1 2 3 4 5 6 7 8 9
fread は、ファイルの各バイトが 1 要素となる列ベクトルを返します。
A に関する情報を表示します。
whos A
Name Size Bytes Class Attributes A 9x1 72 double
ファイルを閉じます。
fclose(fileID);
9 つの倍精度値を含む doubledata.bin という名前のファイルを作成します。
doubledata.bin
fileID = fopen('doubledata.bin','w'); fwrite(fileID,magic(3),'double'); fclose(fileID);
ファイル doubledata.bin を開き、ファイルのデータを 3 行 3 列の配列 A に読み取ります。ソース データがクラス double であることを指定します。
fileID = fopen('doubledata.bin'); A = fread(fileID,[3 3],'double')
A = 3×3 8 1 6 3 5 7 4 9 2
1 ~ 9 の値を含む nine.bin という名前のファイルを作成します。データは uint16 値として書き込みます。
uint16
fileID = fopen('nine.bin','w'); fwrite(fileID,[1:9],'uint16'); fclose(fileID);
最初の 6 つの値を 3 行 2 列の配列に読み取ります。ソース データがクラス uint16 であることを指定します。
fileID = fopen('nine.bin'); A = fread(fileID,[3,2],'uint16')
A = 3×2 1 4 2 5 3 6
fread は、ファイル nine.bin の最初の 6 つの値が列方向に入力された配列を返します。
ファイルの先頭に戻ります。
frewind(fileID)
一度に 2 つの値を読み取り、値を 1 つスキップして、次の値を読み取ります。precision 値に '2*uint16' を使用して、この形式を指定します。データがクラス uint16 であるため、1 つの値は 2 バイトで表されます。そのため、skip 引数を 2 に指定します。
'2*uint16'
2
precision = '2*uint16'; skip = 2; B = fread(fileID,[2,3],precision,skip)
B = 2×3 1 4 7 2 5 8
fread は、nine.bin の値が列方向に入力された 2 行 3 列の配列を返します。
2 進化 10 進符号 (BCD) 値を含むファイルを作成します。
str = ['AB'; 'CD'; 'EF'; 'FA']; fileID = fopen('bcd.bin','w'); fwrite(fileID,hex2dec(str),'ubit8'); fclose(fileID);
一度に 1 バイトずつ読み取ります。
fileID = fopen('bcd.bin'); onebyte = fread(fileID,4,'*ubit8');
BCD 値を表示します。
disp(dec2hex(onebyte))
AB CD EF FA
frewind を使用してファイルの先頭に戻ります。リトルエンディアン システム上で一度に 4 ビットずつ読み取る場合、結果は誤った順序で表示されます。
frewind
frewind(fileID) err = fread(fileID,8,'*ubit4'); disp(dec2hex(err))
B A D C F E A F
frewind を使用してファイルの先頭に戻ります。前述のようにデータを一度に 4 ビットずつ読み取りますが、正しい結果を表示するためにビッグエンディアン順を指定します。
frewind(fileID) correct = fread(fileID,8,'*ubit4','ieee-be'); disp(dec2hex(correct))
A B C D E F F A
開いているバイナリ ファイルのファイル識別子。整数として指定します。fread でファイルを読み取る前に、fopen を使用してファイルを開き、fileID を取得しなければなりません。
データ型: double
Inf
出力配列 A の次元。Inf、整数 または 2 要素の行ベクトルとして指定します。
n
[m,n]
m
'uint8=>double'
読み取る値のクラスおよびビット単位のサイズ。次のいずれかの形式の文字ベクトルまたは string スカラーとして指定します。オプションで、入力に出力行列 A のクラスを指定することもできます。
source
'int16'
output
'int8=>char'
*source
bitn
ubitn
'*ubit18'
'ubit18=>uint32'
N*source または N*source=>output
N*source
N
N*source=>output
N 値を読み取った後、引数 skip で指定されたバイト数をスキップします。 例: '4*int8'
'4*int8'
以下の表に、source および output が取り得る値を示します。
整数、符号なし
'uint'
32 (4)
'uint8'
8 (1)
'uint16'
16 (2)
'uint32'
'uint64'
64 (8)
'uchar'
'unsigned char'
'ushort'
'ulong'
'ubitn'
1 ≤ n ≤ 64
1
64
整数、符号付き
'int'
'int8'
'int32'
'int64'
'integer*1'
'integer*2'
'integer*4'
'integer*8'
'schar'
'signed char'
'short'
'long'
'bitn'
浮動小数点数
'single'
'double'
'float'
'float32'
'float64'
'real*4'
'real*8'
文字
'char*1'
'char'
MATLAB®char 型は固定サイズでなく、バイト数は、ファイルに関連付けられているエンコード スキームによって異なります。fopen を使用してエンコードを設定します。
char
ほとんどの source の値では、fread が値を完全に読み取る前にファイルの終端に到達すると、最後の値の結果を返しません。ただし、source が bitn または ubitn の場合は、fread はその最後の値の部分的な結果を返します。
メモ
MATLAB で NaN および Inf 値を保持するには、double または single クラスのデータを読み取りおよび書き込みします。
NaN
single
データ型: char | string
string
各値を読み込んだ後にスキップするバイト数。スカラーで指定します。precision を bitn または ubitn に指定した場合、ビット内に skip を指定します。
skip 引数を使用すると、固定長レコード内の不連続なフィールドからデータを読み取れます。
'n'
'b'
'l'
's'
'a'
ファイル内のバイトを読み取る順序。文字ベクトルまたは string スカラーとして指定します。machinefmt は、次の表の値のいずれかとして指定します。bitn および ubitn の精度では、machinefmt でバイト内のビットを読み取る順序を指定しますが、バイトを読み取る順序はシステムのバイトの順序のままです。
'n' または 'native'
'native'
ご使用のシステムのバイト順 (既定)
'b' または 'ieee-be'
'ieee-be'
ビッグエンディアン順
'l' または 'ieee-le'
'ieee-le'
リトルエンディアン順
's' または 'ieee-be.l64'
'ieee-be.l64'
ビッグエンディアン順、64 ビット長データ型
'a' または 'ieee-le.l64'
'ieee-le.l64'
リトルエンディアン順、64 ビット長データ型
既定では、現在サポートされているすべてのプラットフォームは、新しいファイルにリトルエンディアン順を使用します。既存のバイナリ ファイルは、ビッグエンディアン順またはリトルエンディアン順のいずれも使用できます。
ファイル データ。列ベクトルとして返されます。sizeA 引数を指定した場合、A は指定されたサイズの行列になります。A 内のデータは、precision 引数に異なるクラスを指定しない限り、クラス double です。
読み取られた文字数。スカラー値として返されます。
使用上の注意事項および制限事項:
入力引数 precision は定数でなければなりません。
precision で指定する source クラスおよび output クラスは次の値をもつことはできません。'long'、'ulong'、'unsigned long'、'bitn'、または 'ubitn'。
'unsigned long'
machinefmt 入力は使用できません。
precision で指定する source または output が int などの C 型である場合、その型のターゲットと量産サイズは以下でなければなりません。
int
一致する。
MATLAB 型に直接マッピングする。
precision で指定する source の型は、ターゲット ハードウェアの C 型に直接マッピングしなければなりません。
fread 呼び出しによりファイル全体を読み取る場合、すべてのデータがコード生成に利用可能な最大配列に収まらなければなりません。
sizeA が定数でない場合または非有限要素を含む場合は、動的メモリ割り当てが必要です。
関数 fread のコード ジェネレーターは、source または output の char 値を符号付き 8 ビット整数として扱います。0 から 127 までの値のみを使用します。
8
0
127
生成されたコードでは、ファイル読み取りエラーは報告されません。したがって、MATLAB コードで独自のファイル読み取りエラー処理を記述しなければなりません。読み取りバイト数が要求したバイト数と一致するかを、エラー処理コード内でチェックすることを検討してください。以下に例を示します。
... N = 100; [vals, numRead] = fread(fid, N, '*double'); if numRead ~= N % fewer elements read than expected end ...
fclose | fgetl | fopen | fprintf | fscanf | fseek | ftell | fwrite
fclose
fgetl
fprintf
fscanf
fseek
ftell
fwrite
この例の変更されたバージョンがシステム上にあります。代わりにこのバージョンを開きますか?
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office