Pythonの高周波用ライブラリscikit-rfはいろんな人にお勧めしている。最新バージョンはv1.3.0で、IEEEP370 de-embeddingやmultiline TRLも実装されてより使いやすくなった。
https://scikit-rf.readthedocs.io/en/latest/index.html
ただ、Python環境を作るのに苦戦している人も結構いて、またvenvで仮想環境を作るのも敷居が高いという話も聞く。
そこで、Pythonと有名なパッケージ(NumPy, Matplotlib, SciPy, Pandasなどなど)とAI関連のパッケージがすでに入っていて、Googleのアカウントさえあればだれでも使えるGoogle Colab(Colaboratory)を使って簡単に試せるようにしてみる。GPUやTPUも使えて、Googleドライブとも接続できて便利。さらにGoogleのAI、Geminiも搭載されていて分からなくなったら質問できるし、コードの続きを推定もしてくれる。
https://colab.research.google.com/?hl=ja
ただし、残念ながらscikit-rfは入っていない。でも使うようにできる方法はあるので1からやってみる。
まずリンクを開き、ファイル→ドライブの新しいノートブックを選ぶとUntitled0.ipynbというファイルができる。名前をここではscikitrf-01.ipynbに変更した。
こんな画面になっているはず。まさにJupyter Notebookと同じような画面になる。セルにプログラムを入力してSHIFT+ENTERで実行できる。

まずは!pip install scikit-rfとする。これでscikit-rfがインストールできる。ただしいったん閉じると消えてしまうことに注意。
これを毎回やらないといけない(Googleドライブに保存する方法があるがそれはまた別の機会に)。そんなに時間はかからない。

次はGoogleドライブをマウントする。
from google.colab import drive
drive.mount('/content/drive')
とする。このノートブックは"/content/drive/MyDrive/Colab Notebooks/"に保存されている。

必要なパッケージをインポートする。
import numpy as np
import matplotlib.pyplot as plt
import skrf as rf
さて、いつも例題にTDKさんのSパラメータを使っているが、今回はMarki MicrowaveのQuadplexer(1つのアンテナからの入力は4つに分ける)を使う。
このファイルをGoogleドライブに置き、以下のようにしてTouchstoneフォーマットのSパラメータが読み込める。
path = "/content/drive/MyDrive/Colab Notebooks/"
ntwk = rf.Network(path + "MMPX-00002PSM.s5p")
これだけ。簡単!
dB表示で図示するにはntwk.plot_s_db()だけでOKだが…

何も指定しないと全部表示されてしまう。必要なものだけ表示するには
ntwk.plot_s_db(m=1, n=0)のようにする。注意する点としてはm, n はSmnの添え字を表すが、1から始まるのではなく0始まり。
なのでS21を表示させたかったらm=1, n=0にする。ここではS21,S31,S41,S51をプロットしてみる。

確かにQuadplexerになってる。ただ周波数の単位がHzでe+10がごちゃごちゃしている。
周波数だけ変換してもいいのだが、読み込むときに単位を設定するのが簡単。f_unitを使う。
ntwk = rf.Network(path + "MMPX-00002PSM.s5p", f_unit="GHz")

予期した通りの結果になった。またrf.stylely()というのを使うともうちょっとすっきりしたグラフになる。

Y軸の範囲を変えたいときはmatplotlibのplt.ylim範囲を使えばいい。

あと便利なのはntwk["0-10ghz"]みたいに直接周波数を使ってスライシングできる。

ここまでをまとめてテキストデータにしておく。
!pip install scikit-rf
from google.colab import drive
drive.mount('/content/drive')
import numpy as np
import matplotlib.pyplot as plt
import skrf as rf
rf.stylely()
path = "/content/drive/MyDrive/Colab Notebooks/"
ntwk = rf.Network(path + "MMPX-00002PSM.s5p", f_unit="GHz")
ntwk.plot_s_db(m=1, n=0)
ntwk.plot_s_db(m=2, n=0)
ntwk.plot_s_db(m=3, n=0)
ntwk.plot_s_db(m=4, n=0)
plt.ylim(-100, 0)
|
たったこれだけでなかなかきれいな表示ができる。次はスミスチャートを描いてみよう。
最近のコメント