6.7.28 SaveMatrixFrames

6.7.28.1 ノードの概要

Matrix<ObjectRef> 型のフレームのデータをファイルに保存する.サポートされている ObjectRef は float 型と complex<float>  型のみである.

6.7.28.2 必要なファイル

無し.

6.7.28.3 使用方法

どんなときに使うのか

このノードは,複数のフレームの Matrix<ObjectRef> 型データを1つのファイルに保存するために用いる.

典型的な接続例

下の図 6.127 は, MultiFFT が Matrix<complex<float> > 型のフレームのデータを出力する SaveMatrixFrames を使用したネットワークの例を示す.

\includegraphics[width=\linewidth ]{fig/modules/SaveMatrixFrames}
Figure 6.127: SaveMatrixFrames の接続例

6.7.28.4 ノードの入出力とプロパティ

入力

INPUT

: Matrix<ObjectRef> 型のフレームのデータ. サポートされている型は Matrix<float> 型と Matrix<complex<float> > 型.

出力

OUTPUT

: 複数のフレームの Matrix<ObjectRef> 型データを保存したファイル.

パラメータ

Table 6.124: SaveMatrixFrames のパラメータ表

パラメータ名

デフォルト値

単位

説明

FILENAME

string 

   

出力ファイルのファイル名.

OUTPUTTYPE

string 

TEXT

 

出力ファイルのファイル形式オプション. テキストファイルの場合はTEXT,バイナリファイルの場合はRAWを選択する.

TEXTFORMAT

string 

FIXED

 

OUTPUTTYPEをTEXTに設定した場合に出力するデータファイルのファイル形式オプション. FIXEDかSCIENTIFICを選択する.

FILENAME

: string  type. 出力ファイルのファイル名.

OUTPUTTYPE

: string  type. 出力ファイルのファイル形式オプション. テキストファイルの場合はTEXT,バイナリファイルの場合はRAWを選択する. デフォルト値はTEXT.

TEXTFORMAT

: string  type. OUTPUTTYPEをTEXTに設定した場合に出力するデータファイルのファイル形式オプション. FIXEDかSCIENTIFICを選択する.

6.7.28.5 ノードの詳細

SaveMatrixFrames は,複数のフレームの Matrix<float> 型または Matrix<complex<float> > 型のデータを入力として受け取り,それらのすべてのデータを1つのファイルに保存する. ファイル形式は,OUTPUTTYPEパラメータで指定する. OUTPUTTYPEパラメータをRAWに設定すると,フレームのデータは,リトルエンディアン順にIEEE 754 32ビット単精度浮動小数点数形式で書き込まれる. このパラメータのデフォルト値TEXTは,RAWとは異なり人間が読めるデータを出力する.

6.125 に,OUTPUTTYPEパラメータでTEXTが選択されたときに,ファイル内でデータがどのようにフォーマットされるかの詳細を示す. 各データはスペースで区切られ,フレームのデータはラインフィードによってMatrixのサイズでフレームごとに分離される.

Table 6.125: TEXT OUTPUTTYP のファイル形式

データ型

ファイルフォーマット

Float

data[0][0] data[0][1] data[1][0] data[1][1] ... data[m][n]

 

data[0][0] data[0][1] data[1][0] data[1][1] ... data[m][n]

Complex

data[0][0].real() data[0][0].imag() data[0][1].real() data[0][1].imag() ... data[m][n].real() data[m][n].imag()

float

   

ここで,nとmは,フレームのデータが格納されている入力の行列の列サイズと行サイズである.

SaveMatrixFrames は,各フレームのデータを受け取ると,マトリックスの行と列のサイズをチェックする. 上のサンプルネットワーク(図 6.127)では, MultiFFT は Matrix<complex<float> > を出力する. 入力行列サイズがM×Lの場合,出力行列のサイズは MultiFFT ではM×L / 2 + 1であり,Mはチャネル数を表し,Lはサンプル数を表す. MultiFFT のウィンドウの長さはデフォルトで512である. Lの式を適用すると,列のサイズが257となる. チャネル数が8の場合,行サイズは8になる. MultiFFT 出力の詳細については, MultiFFT ノードリファレンスを参照されたい.

入力データが Matrix<float> 型に格納されていて,列サイズが512で行サイズが8で,合計6397のフレームがあるとすると,出力ファイルの内容は図 6.128のようになる. 表 6.125 に記述されているTEXTファイル形式でデータが保存されているものとする.

\includegraphics[width=.8\textwidth ]{fig/modules/SaveMatrixFrames-2}
Figure 6.128: データがフロート型であるTEXTファイル形式の出力データファイルのサンプル内容

6.128 および図 6.129 の左側に書かれたフレーム番号は,ファイルに書き込まれないことに注意.

6.129 は,入力データが図 6.127のサンプルネットワークのような Matrix<complex<float> > 型の場合の出力ファイルのサンプル内容を示す.行サイズと列サイズはそれぞれ8と257. 合計で6397のフレームがある. また,データは表 6.125 に記述されているTEXTファイル形式で保存されているものとする.

\includegraphics[width=.8\textwidth ]{fig/modules/SaveMatrixFrames-3}
Figure 6.129: SaveMatrixFrames のTEXT Complex Float型出力ファイルの例

Filename:

FILENAMEパラメータに値を指定するときは,フォーマット文字列と呼ばれるデータプロパティを持つ特別なパターン{tag:format}を使用するオプションを使用できる. フォーマット文字列を使用すると,入力データの情報を含んだファイル名を設定することができ,後の使用に便利である. 使用可能なタグを,表 6.126 に示す.

Table 6.126: Tag list of SaveMatrixFrames のタグ表

タグ

説明

単位

datatype

データ型 (float または complex float)

String

rowsize

行列の行サイズ

Integer

colsize

行列の列サイズ

Integer

dim

データの次元 (固定値. 行列は2)

Integer

6.127 にフォーマット文字列とその出力の例を示す.

Table 6.127: Matrix<complex<float> > 型のフォーマット文字列とその出力の例.行サイズは8,列サイズは512とする

フォーマット文字列 (FILENAME パラメータ値)

出力 (フォーマット指定されたファイル名)

samplefile.dat

samplefile.dat

samplefile_{datatype}.txt

samplefile_complex_float.txt

samplefile_row{rowsize}.raw

samplefile_row8.raw

samplefile_col{colsize}.dat

samplefile_col512.dat

samplefile_dim{dim}.dat

samplefile_dim2.dat

samplefile_{datatype}_row{rowsize}_col{colsize}_dim{dim}.dat

samplefile_complex_float_row8_col512_dim2.dat

LoadMatrixFrames を使用して SaveMatrixFrames によって出力されたファイルを Matrix<ObjectRef> 型にロードするときは,列サイズ,行サイズ,およびデータ型をパラメータで指定する必要がある. したがって,ファイル名にデータ情報を持つことは,後の使用に役立つ.

6.127 に示されているように,ファイル名の拡張子に関する規則はない. ユーザーが指定する任意の値にすることができる. ファイル名の拡張子は無くても良い.

{tag:format}の "format"の値はオプション. "format"は,03dのような桁数を指定するために使用できる.フォーマット指定子は,Cのprintfと同じである.