• 検索結果がありません。

Binary

ドキュメント内 gnuplot documentation (ページ 75-89)

バイナリデータファイル:

以前のgnuplot バージョンでは、バイナリ形式のデータファイルを自動的に検出するものもありましたが、

現在はファイル名の後ろにbinaryのキーワードを与えることが必須となっています。ファイル形式に関する 十分詳細な情報は、ユーザがコマンドラインから与えるか、またはサポートしているfiletype のバイナリ形 式のファイルそれ自身から抜き出されるかする必要があります。バイナリファイルには、大きく2 つの形式、

binary matrix形式とbinary general形式があります。

binary matrix形式は、32ビットIEEE規格の浮動小数値(float)が2次元配列の形で並び、それらの座標 値を表す行と列が追加されています。ASCII matrix同様、usingリストにおいては、座標用の列の並び(1列

目)が usingの1 番目の要素(x座標)に対応し、座標用の行の並び(1 行目)が usingの2 番目の要素(y座

標)に対応し、配列の各値がusingの 3番目の要素(z 座標)に対応します。

binary general形式は、任意個の列のデータを含み、それらの情報はコマンドラインで指定する必要があり

ます。例えば array, record, format, using などでサイズや形式、データの次元を指定できます。他にも、

ファイルヘッダ読み飛ばしたり、エンディアン(endian) を変更するための有用なコマンドがありますし、配 置、データの変換を行なうコマンドの組があります。それは、一様に標本化されたデータの場合、その座標が ファイルには含まれないことが良くあるからです。matrixバイナリやASCIIデータと違っているところです が、generalバイナリは1,2,3といったusingリストで生成される列番号を使わず、むしろ1 列目はファイル の1 列目、あるいはformat リストで指定されたもの、になります。

さまざまな binary オプションに対する大域的なデフォルトの設定も可能で、それは (s)plot <filename>

binary ... コマンドに与えるオプションと全く同じ書式で指定できます。その書式はset datafile binary ...

です。一般的な規則として、デフォルトのパラメータはファイルから抜き出されたパラメータで上書きされ、

それはコマンドラインで指定された共通なパラメータで上書きされます。

例えばarray,record,format,filetypebinary general形式を特定するようなキーワードが何もついて いなければ、デフォルトのバイナリ形式はbinary matrix です。

generalバイナリデータは、特別なファイル名’-’を使ってコマンドラインから入力することもできます。しか

し、これはキーボードからの入力を意図したものではなく、パイプを使ってプログラムにバイナリ形式を変換 させるためのものです。バイナリデータには最後を表す記号がありませんので、gnuplotはパイプからデータ を読み込む場合、array指定子で指定した数の点数になるまでデータを読み込み続けます。詳細に関しては、

以下参照:binary matrix (p. 172),binary general (p. 75)。

indexキーワードは、ファイルフォーマットが 1つのファイルにつき1 つの曲面しか許さないため、サポー

トされません。everyやusing フィルタはサポートされます。using は、データがあたかも上の3つ組の形 で読まれたかのように働きます。

バイナリファイルの splot のデモ。

General

generalバイナリデータは、その形式に関する情報が必ずしもファイル内にはなくても良く、ファイルの形式に

関する詳細な情報をコマンドラインから与えることで、そのデータを読み込むことが可能になります。そのオ プションの書式は一時的なユーザにはやや難解ですが、generalバイナリは特にgnuplotを使い、多くのデー タを送るようなアプリケーションに取っては有用です。

書式:

plot ’<file_name>’ {binary <binary list>} ...

splot ’<file_name>’ {binary <binary list>} ...

generalバイナリ形式は、ファイル構造に関する情報に関連するキーワード、すなわちarray,record,format,

filetypeなどを<binary list>内に与えることで有効になります。それ以外の場合はmatrixバイナリ形式と 見なされます。(詳細に関しては、以下参照: binary matrix (p. 172)。)

バイナリ形式に関する情報が自動的にファイルから読み取ることができるような標準的なファイル形式もいく つかあります(その一覧を見るには、gnuplotの対話画面からshow datafile binaryしてください)。それ以 外の場合はコマンドライン、あるいはデフォルトの値を設定する必要があります。キーワードに関しては以下 で説明します。

<binary list>に与えるキーワードfiletypeは、ファイルを読み込むのに使用されるルーチン、すなわちデータ

の形式の扱いを制御します。サポートしているfiletypeの一覧を見るには、show datafile binary filetypes としてください。filetypeを指定しない場合の規則は、splot用にbinaryキーワードが単独で与えられた場合 は古典的なgnuplotバイナリ形式だと見なされ、その他全ての状況、すなわちplot用かまたは少なくとも一

つの<binary list>キーワードが与えられたような場合は、rawバイナリファイルとみなされ、そのキーワー

ドによってバイナリ形式が指定されます。

generalバイナリデータファイルは2 つの基本的なクラスに分かれますが、それがどのように扱われるのかに

よって両方のクラスに入る場合もあります。一つのクラスは、データは一様にサンプリングされていると見な され、点の座標は必然的にそこから生成されます。このクラスでは<binary list>キーワードを用いて全ての 制御が行なわれます。そして、このクラスでの設定の優先順位は、コマンドラインパラメータがファイル内の パラメータを上書きし、それはデフォルトの設定を上書きします。もう一つのクラスは、座標情報がファイル 内に含まれた複数のファイルの組のためのもの、あるいはgnuplotバイナリのような非一様な標本化を含み得 る一つのファイルのためのものです。

gnuplotバイナリのような特殊なデータファイル以外では、一般にバイナリデータは概念上はASCIIデータと

同様に考えられます。各点は情報の列を持っていて、それはusingによって結びつけられる<using list>で選 択されます。format文字列が何も指定されなかった場合、gnuplotはバイナリ変数の数を<using list>で与 えられる最大の列番号に等しく取ります。例えばusing 1:3の場合は3列ずつデータが読み取られ、2番目の ものは無視されます。各描画スタイルにはその典型的なパラメータの個数があり、それに基づく<using list>

がデフォルトとして選択されます。例えばwith imageでは デフォルトでusing 1が、with rgbimageでは デフォルトでusing 1:2:3が使われます。usingで 点/線/indexを表す特別な文字は、一般にはバイナリデー タでは使うべきではないことに注意してください。これを制御する<binary list>のキーワードがあります。

Array

バイナリファイルの標本の配列の大きさを設定します。座標はgnuplotが生成してくれます。各方向の次元を 表す数を指定しなければいけません。例えばarray=(10,20)は、2次元で最初の次元方向(x)には10点、2 番目の次元方向(y)には20点の標本化データがあることを意味します。ファイルの終了までデータが続くこ とを示すのに負の値を使えます。データ次元が1の場合は、カッコは省略できます。複数のデータのサイズ指 定を分離するのに、コロンを使うことができます。例えば array=25:35は 2つの 1 次元データがファイル の中にあることを意味します。

注意: gnuplot version 4.2 では array=(128,128) という書式ではな く、array=128x128 という書式を使用していました。古い書式 は推奨されていませんが、あなたの gnuplot が後方互換性をサ ポートするようコンパイルされていれば一応今でも使えます。

Record

このキーワードはarray と同じ書式で、同じ機能を提供します。しかしrecordはgnuplotに座標情報を自動 生成させません。これは、そのような座標情報が、バイナリデータファイルのある列に含まれている場合のた めのものです。

Skip

このキーワードは、バイナリファイルのある区画のスキップを可能にします。例えば、そのファイルがデータ 領域の開始位置の前に1024バイトのヘッダを持つような場合には、以下のようにしたいと思うでしょう:

plot ’<file_name>’ binary skip=1024 ...

ファイルに複数のレコードがある場合、そのそれぞれに対する先頭のずらし位置を指定することができます。

例えば、最初のレコードの前の 512 バイトをスキップし、2 番目、3 番目のレコードの前の 256 バイトをス キップするには以下のようにします:

plot ’<file_name> binary record=356:356:356 skip=512:256:256 ...

Format

デフォルトのバイナリ形式は、単精度浮動小数(float)が一つ、です。それをより柔軟に設定するために、この

formatで変数のサイズに関する詳細な情報を指定できます。例えばformat="%uchar%int%float"は、最

初のusing列として符号なし文字型変数(unsigned char)を、2番目の列は符号つき整数(int)を、3番目の列

は単精度浮動小数(float)を指定しています。もしサイズ指定子の数が最大列数より小さい場合は、残りの列の 変数サイズは暗黙のうちに最後に与えた変数サイズに等しく取られます。

さらに using 指定同様、*文字がついた読み捨てる列を書式に指定することもできますし、繰り返しフィー

ルドへの回数指定によって暗黙の繰り返しを指定することもできます。例えば、format="%*2int%3float"

は、3つの実数データを読む前に、2つの整数データを読み捨てます。使用できる変数サイズの一覧は、show datafile binary datasizesで見ることができます。それらは、それぞれのコンパイルによってそのバイトサ イズとともにマシンに依存する変数名のグループと、マシンに依存しない変数名のグループに分かれています。

Endian

ファイルのバイナリデータのエンディアンは、gnuplotが動作するプラットホームのエンディアンとは異なる場合 も良くあります。いくつかの指定でgnuplotがバイトをどのように扱うかを制御できます。例えばendian=little は、バイナリファイルを、そのバイトの並びが小さい桁から大きい桁へ並んでいると見なされます。オプショ ンは以下のものが使えます。

little: 小さい桁から大きな桁へ並ぶ

big: 大きな桁から小さな桁へ並ぶ

default: compiler と同じエンディアンと見なす

swap (swab): エンディアンを変更する (おかしいようならこれを

使ってみてください)

gnuplotは、コンパイル時にオプションが指定されていれば、"middle"(や"pdp")エンディアンもサポートで きます。

Filetype

gnuplotは、いくつか標準的なバイナリファイル形式については必要な情報をそのファイルから抜き出すこと

ができます。例えば"format=edf" は ESRF ヘッダーファイル形式のファイルとして読み込みます。現在サ ポートしているファイル形式については、show datafile binary filetypesで見てください。

特別なファイル形式としてautoがあり、この場合gnuplotはバイナリファイルの拡張子が、サポートされて いる形式の標準的な拡張子であるかをチェックします。

コマンドラインキーワードはファイルから読み取る設定を上書きするのに使われ、ファイルから読み取る設定 はデフォルトの設定を上書きします(詳細は以下参照: set datafile binary (p. 111))。

Avs avsは、自動的に認識される画像イメージに対するバイナリファイルの型の一つです。AVSは非常単純 なフォーマットで、アプリケーション間でやりとりするのに最も適しています。これは、2つのlong (xwidth

とywidth)と、その後続くピクセルの列から成り、その各ピクセルはalpha/red/green/blue の4バイトから

成ります。

Edf edfは、自動的に認識される画像イメージに対するバイナリファイルの型の一つです。EDF は ESRF データフォーマット(ESRF Data Format)を意味していて、それはedfと ehfの両方の形式をサポートして

います(後者はESRF Header Format)。画像の使用に関する詳しい情報は以下で見つかるでしょう:

http://www.edfplus.info/specs

ドキュメント内 gnuplot documentation (ページ 75-89)