1. 相場
  2. 研究

Homodyne Discriminator

サイクルの周期を測定する


2022年6月19日

ホモダイン・ディスクリミネーター

「Discriminator」を日本語にすると「弁別器」となり、周波数の変化を振幅の変化に戻す機能のことを言う。

「Homodyne」とは、信号にそれ自身を掛け合わせることを意味し、ここでは直近の足の信号に1つ前の足の信号の「複素共役数(complex conjugate)」を掛け合わせる操作を指す。複素共役数は「虚数部の符号を逆にした複素数」のことである。

複素数 $ z = a + bi$
複素共役数 $\bar{z} = a - bi $

ホモダインした信号を極形式で表現すると以下のようになり、振幅の2乗と角周波数($2 \pi$ / 周期)が得られる。

$$ (pe^{j\omega t_n})(pe^{-j\omega t_{n-1}}) = p^2s^{j\omega(t_n - t_{n-i})} = p^2e^{j \omega} $$

ここに角周波数が現れるということは、2つの足から周期を計算することが可能であることを意味する。

周期を計算するコード

実際の計算は、極形式ではなく、実数部と虚数部を使って行う。

// ①
I2 := 0.2 * I2 + 0.8 * I2[1]
Q2 := 0.2 * Q2 + 0.8 * Q2[1]


// ②
Re = I2 * I2[1] + Q2 * Q2[1]
Im = I2 * Q2[1] - Q2 * I2[1]

// ③
Re := 0.2 * Re + 0.8 * Re[1]
Im := 0.2 * Im + 0.8 * Im[1]

// ④
period := Im != 0 and Re != 0 ? 2 * pi / math.atan(Im / Re) : 0
period := math.min(math.max(period, 0.67 * period[1]), 1.5 * period[1])
period := math.min(math.max(period, 6), 50)
period := 0.2 * period + 0.8 * period[1]

// ⑤
smoothPeriod := 0.33 * period + 0.67 * smoothPeriod[1]

信号と雑音の混じり合った信号($ S + N$)があったとする。この信号に自身をを掛け合わせると以下のようになる。

$$ (S +N)(S + N) = S^2 + SN + NS + N^2 $$

これら4つの積の内3つは、雑音が入り使うことができない。そのため、信号を掛け合わせる前に不要な要素を取り除く操作を行う(①)。

信号は平滑化を行った後、1つ前の足の複素共役数と掛け合わせる(②)。 実数部は2つの実数部の積と2つの虚数部の積の和として出力され、虚数部は2つのクロス乗積の差として出力される。

出力された実数部と虚数部は、周期の計算を行う前に再び平滑化する(③)。

周期は実数部と虚数部の比の逆正接(アークタンジェント)を取ることで計算できる(④)。 周期の変化率は前の周期の±50%に制限し、且つ計算する周期は足6本から足50本の範囲内とする。 そうして計算された周期を、ここでも平滑化する。

最後にプロットした時に滑らかな線となるよう「smoothPeriod 」を用意している(⑤)。

相場の最新記事

  1. 12月25日から12月29日

  2. 12月18日から12月22日

  3. 12月11日から12月15日

  4. 12月4日から12月8日

  5. 11月27日から12月1日

PAGE TOP