« 高周波・RFニュース 2024年10月2日 QualcommとSTMicroelectronicsがWireless IoTで提携、YoleがRF front-end市場は2029年に$23.1Bになると予測、Infineonが20GbpsのUWBペリフェラルコントローラ発表、SiversがFull Duplex arrayでCHIPS法から資金、NTTドコモとSamsungのAI協業 | トップページ | 方舟(夕木春央さん)を読んだ。衝撃的…「え?」と声を上げそうになった。方舟という名の地下施設に閉じ込められた10人。誰か1人を犠牲にしないとみんな助からない…という状況で殺人が起き、犯人をその1人にするため推理するが…これは本当にネタバレ厳禁なやつ。 »

2024年10月 3日 (木)

Google Colab(Colaboratory)でPythonの高周波用ライブラリscikit-rfを使う(2)スミスチャート(インピーダンスチャートとアドミタンスチャート)を描いてみる。そしてマーカーをうってその値を読む。

さて前回はTouchstoneフォーマットのSパラメータを読んでdB表示で図示してみるところまでだった。

Google Colab(Colaboratory)でPythonの高周波用ライブラリscikit-rfを使う(1)まずは準備とTouchstone形式でSパラメータファイルを読み込んでdB表示をする。事例はMarki MicrowaveのQuadplexer(4バンド分離)のs5pを使う。 

今回はスミスチャートを描いてみよう。例題は前回と同じくMarki MicrowaveのQuadplexer。

データを読むところまでは同じ。

!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")
単純にスミスチャートを描くだけなら前回のplot_s_db()をplot_s_smith()にするだけ。
Scikitrf0202
これはインピーダンスチャートだが、アドミタンスチャートにするにはchart_type='y'にする。
Scikitrf0203
スミスチャートと言えばマーカーを引いて値を読みたいところだが、最近まであまりうまいやり方がなかった。
しかし公式サイトでやり方が記載された。
これを元にやってみよう。ただし、公式サイトの例題が配列の要素指定なのがいまいちなので、周波数から探すようにした。ただしこれは確実にその周波数があると分かっている場合のみなので、一番近い値にしたいときは例えばこれなど
を参照。
# 周波数が配列の何番目に当たるか?
fmarker = []
for i in [15.0e9, 25.0e9, 35.0e9, 40.0e9]:
    fmarker.append(np.where(ntwk.f == i)[0][0])

# マーカーの準備
lines = [
    {'marker_idx': fmarker, 'color': 'b', 'm': 0, 'n': 0, 'ntw': ntwk}
]

# figureの準備
fig, ax = plt.subplots(1, 1)

# スミスチャートの設定
rf.plotting.smith(ax = ax, draw_labels = True, ref_imm = 50.0, chart_type = 'z')

# データをプロット
col_labels = ['Frequency', 'Real Imag']
row_labels = []
row_colors = []
cell_text = []
for l in lines:
    m = l['m']
    n = l['n']
    l['ntw'].plot_s_smith(m=m, n=n, ax = ax, color=l['color'])
    #マーカーをプロット
    for i, k in enumerate(l['marker_idx']):
        x = l['ntw'].s.real[k, m, n]
        y = l['ntw'].s.imag[k, m, n]
        z = l['ntw'].z[k, m, n]
        z = f'{z.real:.4f} + {z.imag:.4f}j ohm'
        f = l['ntw'].frequency.f_scaled[k]
        f_unit = l['ntw'].frequency.unit
        row_labels.append(f'M{i + 1}')
        row_colors.append(l['color'])
        ax.scatter(x, y, marker = 'v', s=20, color=l['color'])
        ax.annotate(row_labels[-1], (x, y), xytext=(-7, 7),
                    textcoords='offset points', color=l['color'])
        cell_text.append([f'{f:.3f} {f_unit}', z])
leg1 = ax.legend(loc="upper right", fontsize= 6)

# 表をプロット
the_table = ax.table(cellText=cell_text,
                      colWidths=[0.4] * 2,
                      rowLabels=row_labels,
                      colLabels=col_labels,
                      rowColours=row_colors,
                      loc='bottom')
the_table.auto_set_font_size(False)
the_table.set_fontsize(6)

結果はこちら。ちゃんとマーカーがついてる。

Scikitrf0204
次はTDRあたりかな…

« 高周波・RFニュース 2024年10月2日 QualcommとSTMicroelectronicsがWireless IoTで提携、YoleがRF front-end市場は2029年に$23.1Bになると予測、Infineonが20GbpsのUWBペリフェラルコントローラ発表、SiversがFull Duplex arrayでCHIPS法から資金、NTTドコモとSamsungのAI協業 | トップページ | 方舟(夕木春央さん)を読んだ。衝撃的…「え?」と声を上げそうになった。方舟という名の地下施設に閉じ込められた10人。誰か1人を犠牲にしないとみんな助からない…という状況で殺人が起き、犯人をその1人にするため推理するが…これは本当にネタバレ厳禁なやつ。 »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 高周波・RFニュース 2024年10月2日 QualcommとSTMicroelectronicsがWireless IoTで提携、YoleがRF front-end市場は2029年に$23.1Bになると予測、Infineonが20GbpsのUWBペリフェラルコントローラ発表、SiversがFull Duplex arrayでCHIPS法から資金、NTTドコモとSamsungのAI協業 | トップページ | 方舟(夕木春央さん)を読んだ。衝撃的…「え?」と声を上げそうになった。方舟という名の地下施設に閉じ込められた10人。誰か1人を犠牲にしないとみんな助からない…という状況で殺人が起き、犯人をその1人にするため推理するが…これは本当にネタバレ厳禁なやつ。 »

最近の記事

最近のコメント

2024年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フォト
無料ブログはココログ