Skip to content

Gray-coded BPSK/QPSK/QAM modulator & demodulator (complex or real-valued equivalent model)/ 変調・復調器:Gray符号 BPSK/QPSK/QAM(複素モデル/実数等価モデル)

License

Notifications You must be signed in to change notification settings

Ichihashi0317/MIMO_GrayCode_Modulation_py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

110 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MIMO Gray-Code Modulation (Python)

Python用の変復調プログラム

  • BPSK, QPSK, QAM対応(すべてグレイ符号)
  • 複素モデル,実数等価モデルどちらにも対応

依存関係

  • Python 3.10+(動作確認: Python 3.13.5)
  • NumPy

インストール方法

pip install git+https://github.com/Ichihashi0317/MIMO_GrayCode_Modulation_py.git

補足:

  • ソースコードをそのまま自分のプロジェクトへコピーして使うことも可能.

使い方

インスタンス生成時の引数

import MIMO_GrayCode_Modulation as mgm

Q_ant = 2  # 2: BPSK, 4: QPSK, 16: 16QAM, 64: 64QAM, ...
mod = mgm.Modulator(Q_ant, complex=True)
  • Q_ant: 1 アンテナあたりの多値数. $2$ または $4^n$ ($n$は任意の自然数) で指定可能.
  • complex:
    • True: 複素モデル(規定値)
    • False: 実数等価モデル

ビット列生成メソッド

bits = mod.gen_bits(M, K)

入力:

  • M: アンテナ本数.任意の自然数で指定可能.
  • K: 1 フレーム中の送信ベクトル数.任意の自然数で指定可能.

出力:

  • bits: 乱数生成された,変調入力用ビット列の2次元配列1shape=(log2(Q_ant) * M, K)

変調メソッド

syms = mod.modulate(bits)

入力:

  • bits: 送信ビットの2次元配列.1送信ベクトルに対応するビット列を列ベクトルとして含む.shape=(log2(Q_ant) * M, K)1

出力:

  • syms: 送信行列.送信ベクトルを列ベクトルとして含む.complex=True のとき shape=(M, K)complex=False のとき shape=(2M, K).シンボルマッピングは平均電力が 1 になるように正規化される.

復調メソッド

bits = mod.demodulate(syms)

入力:

  • syms: 受信行列.送信行列と同じサイズ.

出力:

  • bits: 受信ビットの2次元配列.各アンテナの実部・虚部単位で硬判定される.送信ビット配列と同じサイズ.

Footnotes

  1. modulate() の入力は gen_bits() の出力に限らず,符号化器などから出力したビット列を整形して入力しても問題ない. 2

About

Gray-coded BPSK/QPSK/QAM modulator & demodulator (complex or real-valued equivalent model)/ 変調・復調器:Gray符号 BPSK/QPSK/QAM(複素モデル/実数等価モデル)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages