フィルターのクリア

Parse a binary file with different number formats

2 ビュー (過去 30 日間)
Antares
Antares 2017 年 12 月 14 日
コメント済み: Antares 2017 年 12 月 14 日
Hi, I have a binary file representing a surface, there is a header which provides some info about the surface like sampling rates along x and y axis, number of rows and columns and so on... then there is a series of values which represent values along z axis.
The header is made of short, long and float number formats while z values are in floats. An example can be this:
\\ HEADER:
-float (type of figure)
-long (number of rows)
-long (number of columns)
-float (x sampling rate)
-float (y sampling rate)
-float (x origin)
-float (y origin)
...... //end of header
float z1
float z2
float z3
and so on
How can I retrieve all the values scanning the file? I tried with fread but I don't know which format option choose
Thanks

採用された回答

Jan
Jan 2017 年 12 月 14 日
編集済み: Jan 2017 年 12 月 14 日
The documentation explains this clearly: doc fread
fid = fopen(File);
if fid == -1, error('Cannot open file %s', File); end
typeOfFigure = fread(fid, 1, 'float'); % -float (type of figure)
numOfRows = fread(fid, 1, 'long'); % -long (number of rows)
numOfCols = fread(fid, 1, 'long'); % -long (number of columns)
xSampleRate = fread(fid, 1, 'float'); % -float (x sampling rate)
ySampleRate = fread(fid, 1, 'float'); % -float (y sampling rate)
xOrigin = fread(fid, 1, 'float); % -float (x origin)
yOrigin = fread(fid, 1, 'float); % -float (y origin)
...
fclose(fid);
Looks trivial, doesn't it?
I'd prefer 'int32' instead of 'long', 'int16' instead of 'short' and 'single' instead of 'float', but this is only for clarity.
  1 件のコメント
Antares
Antares 2017 年 12 月 14 日
Wow! I didn't expect to be so simple
Thanks!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDescriptive Statistics についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by