e-tipsmemo

ごった煮

PythonでFMを直交復調を試す2

以前、PythonでFM復調を試した、
そのとき、変調指数が大きいときは素朴に、位相の差分を取るところで特別な処理を入れて対処していたが、
Interfaceを読んで、直交復調を真の意味で?活用することでその問題を回避できるということを確認した。

e-tipsmemo.hatenablog.com

# arctan & diff
phi_sig = np.ndarray(0)

for index, (i, q) in enumerate(zip(bbi2, bbq2)):
    if index == 0:
        continue

    xn = bbq2[index-1]+1j*bbi2[index-1]
    xm = q + 1j*i
    phi_sig = np.append(phi_sig, np.angle(xn*np.conj(xm)))

demod = phi_sig

分かりやすい図がInterfaceのp80に乗っている。
QとIから①位相を求めてから②差分を取るのではなくて、
複素数の掛け算で②差分を取ってから、①位相を求める。

またpythonなら

demod = np.angle(samp[1:]*np.conj(samp[:-1])

こうも書けるらしい

複素数の掛け算による偏角の差が十分に小さく
(信号周波数にたいしてサンプリング周波数が十分に大きいので)
π/2以上になることがない。
変調指数が小さくても大きくても同様の処理で行える。

その他

復調信号のノイズはサンプリング周波数とフィルターでうまい組み合わせによる?

f:id:katakanan:20210505200513p:plain:w300f:id:katakanan:20210505201059p:plain:w300
Interface(インターフェース) 2021年 5 月号

Interface(インターフェース) 2021年 5 月号

  • 発売日: 2021/03/25
  • メディア: 雑誌