6.2.6 CMDivideEachElement

6.2.6.1 ノードの概要

音源定位のための二つの相関行列を成分ごとに除算する.

6.2.6.2 必要なファイル

無し.

6.2.6.3 使用方法

どんなときに使うのか

CMMakerFromFFT ,CMMakerFromFFTwithFlag から作成した音源定位用の相関行列の 演算ノードの一つで,成分毎に除算する機能を持つ.

典型的な接続例

図 6.16CMDivideEachElement ノードの使用例を示す.

CMA 入力端子へは,CMMakerFromFFT や CMMakerFromFFTwithFlag 等から計算される相関行列を接続する (型は Matrix<complex<float> > 型だが,相関行列を扱うため,三次元複素配列を二次元複素行列に変換して出力している). CMB 入力端子も CMA と同じく相関行列を接続する.除算の際は,CMA $./$ CMB が演算される. ただし $./$ は成分ごとの割り算を表す. OPERATION_FLAG は int 型,または bool 型の入力で,相関行列の除算を計算するタイミングを指定する.

\includegraphics[width=100mm]{fig/modules/CMDivideEachElement}
Figure 6.16: CMDivideEachElement の接続例

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

Table 6.19: CMDivideEachElement のパラメータ表

パラメータ名

デフォルト値

単位

説明

FIRST_FRAME_EXECUTION

bool 

false

 

1 フレーム目だけ演算を実行するかの選択

ENABLE_DEBUG

bool 

false

 

デバッグ情報出力のON/OFF

入力

CMA

: Matrix<complex<float> > 型. 各周波数ビン毎の相関行列.$M$次の複素正方行列である相関行列が $NFFT / 2 + 1$ 個入力される. Matrix<complex<float> > の行は周波数($NFFT / 2 + 1$ 行)を,列は複素相関行列($M * M$ 列)を表す.

CMB

: Matrix<complex<float> > 型.CMA に同じ.

OPERATION_FLAG

: int 型,または bool 型. 本入力端子が 1 もしくは真の時にのみ相関行列の演算が実行される.

出力

OUTPUTCM

: Matrix<complex<float> > 型.CMA $./$ CMB に相当する除算後の相関行列が出力される.

パラメータ

FIRST_FRAME_EXECUTION

: bool 型.false がデフォルト値. trueの場合は OPERATION_FLAG が常に 0 または偽であった場合にも 1 フレーム目のみ演算が実行される.

ENABLE_DEBUG

: bool 型.false がデフォルト値.trueの場合は相関行列が除算される時に,標準出力に計算した時のフレーム番号が出力される.

6.2.6.5 ノードの詳細

二つの相関行列の成分毎の除算を行う.相関行列の行列としての除算でないことに注意されたい. 相関行列は $k \times M \times M$ の複素三次元配列であり,$k \times M \times M$ 回の除算が以下のように行われる. ただし,$k$ は周波数ビン数 ($k = NFFT / 2 + 1$),$M$ は入力信号のチャネル数である.

 OUTPUTCM = zero_matrix(k,M,M)

 calculate{

    IF OPERATION_FLAG
        FOR i = 1 to k
            FOR i = 1 to M
                FOR i = 1 to M

                    OUTPUTCM[i][j][k] = CMA[i][j][k] / CMB[i][j][k]

                ENDFOR
            ENDFOR
        ENDFOR
    ENDIF

 }

OUTPUTCM 端子から出力される行列は,零行列として初期化され, 以降は最後の演算結果を保持する.