« RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2026/2/22-2026/3/1 | トップページ | 高周波・RFニュース 2026年3月3日 MWC2026で各社がさらに展示内容をプレスリリース(SkyworksはFR3対応のフロントエンドモジュール、QualcommはR19対応モデムX105、BroadcomはVMware Telco Cloud Platform 9 、IntelはAI-Readyネットワーク、NordicはCat 1 bisモジュールなど) »

2026年3月 2日 (月)

Pythonの高周波ライブラリscikit-rfを使ったマイクロ波LCフィルタ合成ライブラリ filtersynth、バタワースとチェビシェフしかなかったのを楕円、ベッセル、ルジャンドルも含むようにChatGPTに改造してもらった。楕円はLCラダーでは表せないこととその代案まで出してきた。

以前、こういうのを書いた。

Pythonの高周波ライブラリscikit-rfを使ってマイクロ波LCフィルタ合成ライブラリ filtersynthを作った。任意の次数のバタワースとチェビシェフタイプのLPF, BPF, HPFを合成して回路定数のリストやSパラメータにして出力できる。 

バタワースとチェビシェフしか使えないのはいまいちだなと思ったが拡張が面倒。ChatGPTに聞いてみよう。

scipyのsignalを使うのが簡単と言ってきてコードはこちら。

def prototype_LPF(n,
                  type="Chebyshev",
                  ripple=0.1,
                  atten=40):
    """
    正規化LPFプロトタイプの g 値を返す
    source/load = 1Ω, ωc = 1 rad/s

    Parameters
    ----------
    n : int
        フィルタ次数
    type : str
        Butterworth, Chebyshev, Chebyshev2, Elliptic, Bessel, Legendre
    ripple : float
        通過帯域リップル [dB](Chebyshev I, Elliptic)
    atten : float
        阻止帯域減衰量 [dB](Chebyshev II, Elliptic)
    """

    type = type.lower()
    g = np.zeros(n + 2)
    g[0] = 1.0

    # --- Butterworth ---
    if type == "butterworth":
        for k in range(1, n + 1):
            g[k] = 2 * np.sin((2*k - 1) * np.pi / (2*n))
        g[n+1] = 1.0

    # --- Chebyshev I ---
    elif type == "chebyshev":
        eps = np.sqrt(10**(ripple/10) - 1)
        beta = np.arcsinh(1/eps) / n
        gamma = np.sinh(beta)

        a = np.zeros(n+1)
        b = np.zeros(n+1)

        for k in range(1, n+1):
            a[k] = np.sin((2*k - 1) * np.pi / (2*n))
            b[k] = gamma**2 + np.sin(k * np.pi / n)**2

        g[1] = 2 * a[1] / gamma
        for k in range(2, n+1):
            g[k] = 4 * a[k-1] * a[k] / (b[k-1] * g[k-1])

        if n % 2 == 0:
            g[n+1] = 1 / (np.tanh(beta/2)**2)
        else:
            g[n+1] = 1.0

    # --- SciPy based designs ---
    else:
        if type == "chebyshev2":
            z, p, k = signal.cheby2(n, atten, 1, analog=True, output='zpk')
        elif type == "elliptic":
            z, p, k = signal.ellip(n, ripple, atten, 1, analog=True, output='zpk')
        elif type == "bessel":
            z, p, k = signal.bessel(n, 1, analog=True, norm='phase', output='zpk')
        elif type == "legendre":
            z, p, k = signal.legendre(n, ripple, 1, analog=True, output='zpk')
        else:
            raise ValueError(f"Unknown filter type: {type}")

        # --- g値変換(ポールからLCラダーへ) ---
        p = np.sort_complex(p)
        gk = []

        for pole in p:
            gk.append(2 * np.real(1 / pole))

        for i in range(n):
            g[i+1] = np.real(gk[i])

        g[n+1] = 1.0

    return g
ベッセル特性の例。
Newfiltersynth

でも楕円フィルタはLCラダーでは近似的にしか表せないこともちゃんと指摘してきた。↓でその後コードも。電子回路のことも詳しいのか。

ーーーーー

Elliptic(楕円)LC フィルタを「正確に」合成する場合、

あなたが書いている g値 → 交互L/C の世界から一段階上に進み、


有理関数 → 正実関数 → Cauer / Brune 展開

という 回路合成そのものになります。

以下では

 

 

 

 

 


  1. なぜ g値法では Elliptic は「正確でない」のか


  2. 正確な Elliptic 合成の理論(Cauer / Brune)


  3. 実務で使える アルゴリズム手順


  4. Python / scikit-rf / scipy での 実装方針(コード骨格)

を順に説明します。


 

 

 

 

 

1. なぜ g値ラダーでは Elliptic が不完全か

Elliptic フィルタの本質は:

 

 

 

 

 


  • 通過帯リップル


  • 阻止帯リップル


  • 有限周波数ゼロ(Transmission Zero)

👉 この「有限周波数ゼロ」は

単純な L–C–L–C ラダーでは表現できません

そのため g値法では:

 

 

 

 

 


  • 近似的な stopband attenuation は出る


  • 本来の零点位置がズレる


  • 高周波側で特性が崩れる


 

 

 

 

 

2. 正確な Elliptic 合成の理論構造

Elliptic 合成は次の流れです。




|S21(jω)|^2
Driving Point Impedance Z(s) ↓ (正実関数)
Cauer / Brune 展開

LC + 並列共振器(有限周波数零)

« RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2026/2/22-2026/3/1 | トップページ | 高周波・RFニュース 2026年3月3日 MWC2026で各社がさらに展示内容をプレスリリース(SkyworksはFR3対応のフロントエンドモジュール、QualcommはR19対応モデムX105、BroadcomはVMware Telco Cloud Platform 9 、IntelはAI-Readyネットワーク、NordicはCat 1 bisモジュールなど) »

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

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

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

コメント

コメントを書く

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

« RF Weekly Digest (Gemini 3 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2026/2/22-2026/3/1 | トップページ | 高周波・RFニュース 2026年3月3日 MWC2026で各社がさらに展示内容をプレスリリース(SkyworksはFR3対応のフロントエンドモジュール、QualcommはR19対応モデムX105、BroadcomはVMware Telco Cloud Platform 9 、IntelはAI-Readyネットワーク、NordicはCat 1 bisモジュールなど) »

最近の記事

2026年3月
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 31        

最近のコメント

無料ブログはココログ
フォト