高周波&数値計算関係記事リンク集

・Pythonの高周波用ライブラリ scikit-rfを使う

・Visual C#で数値計算ライブラリ Math.NET numericsを使う(Visual Basic版もあり)

・高周波エンジニアのためのAI・機械学習入門

・JavaScriptの数値計算ライブラリmath.jsを使う

・カシオの高精度計算サイトに投稿した自作式一覧

おまけ

円の弧長,弦長,矢高,半径のどれか2つを与えて残りを計算(改善版)

 

見せ算計算機

» 続きを読む

2026年8月20日 (木)

高周波・RFニュース 2026年8月20日 Pythonの高周波ライブラリscikit-rfがv2.1.0でTouchstone v2.1に対応、Mini-CircutsがSバンドアップコンバータ製作解説、6Gフォーラムは10月6日開催、Google Pixel 11分解動画で5Gミリ波AiP確認、LitePointとSTMがUWBでコラボ

・Pythonの高周波ライブラリscikit-rfがv2.1.0でTouchstone v2.1に対応
https://github.com/scikit-rf/scikit-rf/releases/tag/v2.1.0

202608201

・Mini-CircutsがSバンドアップコンバータ製作解説

Building a High-Performance S-band Upconverter with Mini-Circuits Components

202608202

・6Gフォーラムは10月6日開催
https://www.6g-forum.com/home

202608203

・Google Pixel 11分解動画で5Gミリ波AiP確認

Google Pixel 11 Teardown Disassembly Phone Repair Video Review202608204

・LitePointとSTMがUWBでコラボ

LitePoint Collaborates with STMicroelectronics to Validate Next-Generation UWB Technology

2026年8月19日 (水)

高周波エンジニアのためのAI・機械学習入門(GPU編42)強化学習でLCバンドパスフィルタの素子値を最適化する。今回はPythonで報酬とgymnasium環境を作る。

前回は特性評価するライブラリを作った。今回は報酬とgymnasium環境を作る。
報酬はこんな感じ。指数関数を使って素子値を更新するのがポイント(Copilot Chatに考えてもらった)。


import numpy as np

def constraint_penalty(value, lower=None, upper=None, weight=1.0, scale=1.0):
    """
    value が lower 以上、upper 以下に入るようにペナルティを返す。
    制約を満たしていれば0。
    """
    penalty = 0.0

    if lower is not None and value < lower:
        penalty += ((lower - value) / scale) ** 2

    if upper is not None and value > upper:
        penalty += ((value - upper) / scale) ** 2

    return weight * penalty


def score_bpf_analysis(
    analysis,
    targets,
    objective="min_insertion_loss",
):
    """
    analysis辞書から報酬を計算する。

    targets の例:
    targets = {
        "insertion_loss_at_f0_dB": {"upper": 2.0, "weight": 10.0, "scale": 1.0},
        "passband_ripple_dB_in_design_band": {"upper": 0.5, "weight": 5.0, "scale": 0.2},
        "min_return_loss_dB_in_design_band": {"lower": 15.0, "weight": 5.0, "scale": 5.0},
        "measured_fbw": {"lower": 0.09, "upper": 0.11, "weight": 3.0, "scale": 0.01},
    }

    reward は大きいほど良い。
    """

    penalty = 0.0

    for key, spec in targets.items():
        if key not in analysis:
            raise KeyError(f"{key} is not found in analysis.")

        value = analysis[key]

        if not np.isfinite(value):
            penalty += 1e6
            continue

        lower = spec.get("lower", None)
        upper = spec.get("upper", None)
        weight = spec.get("weight", 1.0)
        scale = spec.get("scale", 1.0)

        penalty += constraint_penalty(
            value=value,
            lower=lower,
            upper=upper,
            weight=weight,
            scale=scale,
        )

    # 目的関数
    if objective == "min_insertion_loss":
        obj = analysis["insertion_loss_at_f0_dB"]
    elif objective == "min_worst_insertion_loss":
        obj = analysis["worst_insertion_loss_dB_in_design_band"]
    elif objective == "max_return_loss":
        obj = -analysis["min_return_loss_dB_in_design_band"]
    elif objective == "min_ripple":
        obj = analysis["passband_ripple_dB_in_design_band"]
    else:
        obj = 0.0

    if not np.isfinite(obj):
        obj = 1e6

    reward = -(obj + penalty)

    return reward, {
        "objective_value": obj,
        "penalty": penalty,
        "reward": reward,
    }

def apply_lc_log_multipliers(
    LC_base,
    x,
    active_rows=None,
):
    """
    LC_base の L,C に対して exp(x) の倍率をかける。

    x の長さは 2 * n。
    x = [x_L1, x_C1, x_L2, x_C2, ..., x_Ln, x_Cn]

    active_rows:
        最適化対象の行番号。
        Noneなら 1〜n 行を対象にする。
    """
    LC_new = np.array(LC_base, dtype=float, copy=True)
    n = LC_base.shape[0] - 2

    if active_rows is None:
        active_rows = list(range(1, n + 1))

    expected_len = 2 * len(active_rows)

    if len(x) != expected_len:
        raise ValueError(f"x length must be {expected_len}.")

    idx = 0
    for row in active_rows:
        LC_new[row, 0] = LC_base[row, 0] * np.exp(x[idx])
        LC_new[row, 1] = LC_base[row, 1] * np.exp(x[idx + 1])
        idx += 2

    return LC_new

gymnasium環境はこんな感じ。


import numpy as np
import gymnasium as gym
from gymnasium import spaces
import bpf
import bpf_score

class LCBPFOptimizationEnv(gym.Env):
    """
    LCラダーBPFのL,C値を強化学習で最適化するGymnasium環境。

    事前に synthesize_lc_bpf() で作ったLC_baseを基準に、
    L,Cを exp(x) 倍して探索する。
    """

    metadata = {"render_modes": []}

    def __init__(
        self,
        n,
        LC_base,
        Q_values,
        f1,
        f2,
        f0,
        fstart,
        fstop,
        points,
        fq=None,
        z0=50.0,
        first_element="series",
        targets=None,
        objective="min_insertion_loss",
        x_limit=0.7,
        action_step=0.08,
        max_steps=40,
        success_reward=100.0,
        name="RL_LC_BPF",
        active_rows=None,
    ):
        super().__init__()

        self.n = n
        self.LC_base = np.array(LC_base, dtype=float, copy=True)
        self.Q_values = np.array(Q_values, dtype=object, copy=True)

        self.f1 = f1
        self.f2 = f2
        self.f0 = f0
        self.fstart = fstart
        self.fstop = fstop
        self.points = points
        self.fq = f0 if fq is None else fq
        self.z0 = z0
        self.first_element = first_element
        self.targets = targets or {}
        self.objective = objective

        self.x_limit = float(x_limit)
        self.action_step = float(action_step)
        self.max_steps = int(max_steps)
        self.success_reward = float(success_reward)
        self.name = name

        if active_rows is None:
            self.active_rows = list(range(1, n + 1))
        else:
            self.active_rows = list(active_rows)

        self.dim = 2 * len(self.active_rows)

        # 状態: log倍率 x, Sパラメータ評価値, および目標との誤差
        self.target_keys = sorted(list(self.targets.keys()))
        obs_dim = self.dim + 4 + len(self.target_keys)

        low = np.zeros(obs_dim, dtype=np.float32)
        high = np.zeros(obs_dim, dtype=np.float32)

        low[:self.dim] = -self.x_limit
        high[:self.dim] = self.x_limit

        low[self.dim:] = 0.0
        high[self.dim:] = 10.0

        self.observation_space = spaces.Box(
            low=low,
            high=high,
            dtype=np.float32,
        )

        # 行動: xへの増分。実際の増分は action_step を掛ける
        self.action_space = spaces.Box(
            low=-1.0,
            high=1.0,
            shape=(self.dim,),
            dtype=np.float32,
        )

        self.x = None
        self.step_count = 0
        self.best_reward = -np.inf
        self.best_x = None
        self.best_analysis = None
        self.best_LC = None

    def reset(self, seed=None, options=None):
        super().reset(seed=seed)

        self.x = np.zeros(self.dim, dtype=np.float32)
        self.step_count = 0

        analysis, LC_current = self._evaluate_current()
        reward, details = bpf_score.score_bpf_analysis(
            analysis,
            targets=self.targets,
            objective=self.objective,
        )

        self.best_reward = reward
        self.best_x = self.x.copy()
        self.best_analysis = analysis
        self.best_LC = LC_current.copy()

        obs = self._get_obs(self.x, analysis)
        info = {
            "analysis": analysis,
            "LC_elements": LC_current,
            "reward_details": details,
            "best_reward": self.best_reward,
        }

        return obs, info

    def step(self, action):
        self.step_count += 1

        action = np.asarray(action, dtype=np.float32)
        action = np.clip(action, -1.0, 1.0)

        self.x = self.x + self.action_step * action
        self.x = np.clip(self.x, -self.x_limit, self.x_limit)

        analysis, LC_current = self._evaluate_current()
        reward, details = bpf_score.score_bpf_analysis(
            analysis,
            targets=self.targets,
            objective=self.objective,
        )

        if reward > self.best_reward:
            self.best_reward = reward
            self.best_x = self.x.copy()
            self.best_analysis = analysis
            self.best_LC = LC_current.copy()

        success = self._check_success(analysis)

        if success:
            reward += 10.0  # 制約を満たしているステップではボーナス

        terminated = False
        truncated = bool(self.step_count >= self.max_steps)

        obs = self._get_obs(self.x, analysis)
        info = {
            "analysis": analysis,
            "LC_elements": LC_current,
            "reward_details": details,
            "success": success,
            "best_reward": self.best_reward,
            "best_analysis": self.best_analysis,
            "best_LC_elements": self.best_LC,
        }

        return obs, reward, terminated, truncated, info

    def _evaluate_current(self):
        LC_current = bpf_score.apply_lc_log_multipliers(
            self.LC_base,
            self.x,
            active_rows=self.active_rows,
        )

        ntwk = bpf.lossy_bpf(
            n=self.n,
            LC_elements=LC_current,
            Q_values=self.Q_values,
            fq=self.fq,
            fstart=self.fstart,
            fstop=self.fstop,
            points=self.points,
            z0=self.z0,
            first_element=self.first_element,
            name=self.name,
        )

        analysis = bpf.evaluate_bpf(
            ntwk,
            f1=self.f1,
            f2=self.f2,
            f0=self.f0,
        )

        return analysis, LC_current

    def _check_success(self, analysis):
        """
        全制約を満たせば成功。
        """
        for key, spec in self.targets.items():
            value = analysis[key]

            if not np.isfinite(value):
                return False

            lower = spec.get("lower", None)
            upper = spec.get("upper", None)

            if lower is not None and value < lower:
                return False

            if upper is not None and value > upper:
                return False

        return True

    def get_best_result(self):
        return {
            "best_reward": self.best_reward,
            "best_x": self.best_x,
            "best_LC_elements": self.best_LC,
            "best_analysis": self.best_analysis,
        }

    def _get_obs(self, x, analysis):
        obs_x = np.array(x, dtype=np.float32)

        il = analysis.get("insertion_loss_at_f0_dB", 20.0)
        rl = analysis.get("min_return_loss_dB_in_design_band", 0.0)
        ripple = analysis.get("passband_ripple_dB_in_design_band", 10.0)
        fbw = analysis.get("measured_fbw", 0.0)

        if not np.isfinite(il): il = 20.0
        if not np.isfinite(rl): rl = 0.0
        if not np.isfinite(ripple): ripple = 10.0
        if not np.isfinite(fbw): fbw = 0.0

        metrics = np.array([
            np.clip(il, 0.0, 20.0) / 20.0,
            np.clip(rl, 0.0, 40.0) / 40.0,
            np.clip(ripple, 0.0, 10.0) / 10.0,
            np.clip(fbw, 0.0, 0.5) / 0.5
        ], dtype=np.float32)

        errors = []
        for key in self.target_keys:
            spec = self.targets[key]
            val = analysis.get(key, np.nan)
            if not np.isfinite(val):
                errors.append(10.0)
                continue

            lower = spec.get("lower", None)
            upper = spec.get("upper", None)
            scale = spec.get("scale", 1.0)

            err = 0.0
            if lower is not None and val < lower:
                err += (lower - val) / scale
            if upper is not None and val > upper:
                err += (val - upper) / scale

            errors.append(np.clip(err, 0.0, 10.0))

        obs_errors = np.array(errors, dtype=np.float32)

        return np.concatenate([obs_x, metrics, obs_errors])

これを使っていろいろな強化学習のアルゴリズムを試してみよう。

高周波・RFニュース 2026年8月19日 IEEE Antennas and Propagation Magazine8月号発行、東京農大とロームがテラヘルツ用薄型レンズ開発、I-PEXの細線同軸ケーブル解説ウェビナー、NokiaとMediaTekが3GPPベースGNSS RTKでデシメートル精度を達成

・IEEE Antennas and Propagation Magazine8月号発行
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=74

202608191

・東京農大とロームがテラヘルツ用薄型レンズ開発

次世代通信技術を支える「テラヘルツ波」を鋭いビームにする薄型レンズ技術を開発 -東京農工大とローム、小型発振器に載せられる平面型レンズを開発-

202608192

・I-PEXの細線同軸ケーブル解説ウェビナー

細線同軸ケーブルとは? [Webinar Series vol. 1]

202608193

・NokiaとMediaTekが3GPPベースGNSS RTKでデシメートル精度を達成

Ericsson, MediaTek achieve decimeter-level accuracy with 3GPP-based GNSS RTK

202608194

その他

Low-latency private networks – STRATUM 9’s DECT NR+ and the nRF9151

Nokia ranked No. 1 for mobile core portfolio competitiveness in Omdia’s 2026 market landscape report

2026年8月18日 (火)

Codex(GPT-5.6 Sol)で高周波で使われる伝送線路(マイクロストリップライン、ストリップライン、コプレーナ、グランド付きコプレーナ)の特性インピーダンス計算、50Ωになる寸法計算ができるRF LINE LABを作ってChatGPT Siteで一般公開した。

Codexでいろいろ遊んでいるが、ちょっと実用的なものを作ろうと思って伝送線路計算ツールを作ってみた。

Codextl5

指示を与えるとすぐできた。

マイクロストリップライン、

Codextl1

ストリップライン、

Codextl2

コプレーナ、

Codextl3

グランド付きコプレーナ。

Codextl4

寸法を入れて特性インピーダンスを計算することも、特性インピーダンスを与えて

電極幅を計算することもできる。寸法単位がmmとμmが選べるようになっているのはいい配慮(指示してないのに)。

IEEEの文献やQucsの文書から計算式は出していた。

せっかくなので公開しようということでこちらがリンク。

https://rf-line-lab-jp.tomohiro-nagai972131.chatgpt.site

次はフィルタとかかな。

2026年8月17日 (月)

Google Gemini 3.7 Flash(Antigravityから使用)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作成。爆速で一発で頼んだ通りのものができてきた。

Google Gemini 3.7 Flashが発表されて、Antigravityでも使えるようになっていた。

Gemini 3.7 Flash を発表

そこでいつもやっているPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作ってもらおう。

頼むとすぐにImplementation Planができて、

Gemini3_7spara5

OKだすとすぐにWalkthroughまでできた。

Gemini3_7spara6

実行すると当然一発で動く。

dB

Gemini3_7spara1

位相

Gemini3_7spara2

スミスチャート

Gemini3_7spara3

TDR

Gemini3_7spara4

Gemini評判はいまいちだけど、どんどん良くなっていると思う。自分が欲しいようなコードを書くくらいなら十分すぎる性能。

2026年8月16日 (日)

RF Weekly Digest 2026/8/10-8/16 (Codex(GPT-5.6 Sol)によるRF情報週刊まとめ)



Weekly intelligence for radio-frequency engineering

RF Weekly Digest

2026年8月10日〜8月16日(JST)|英語情報を先に要約し、日本語訳とRF視点を併記

9 key stories2 research papers4 component & market briefs1 teardown videoDark mode

Executive summary

今週のRF領域は、次世代無線の「実装と評価」が前面に出た。6G/Wi-Fi 7/8向けチャネルエミュレータ、既存5G網を使うドローンセンシング、60 GHz耐妨害リンクが、AI・センシング・高周波ビームフォーミングを実システムへ落とし込む動きを示す。

デバイス側では、GaNの熱限界を狙うDARPA THREADS、24〜34 GHz宇宙用GaAs PA、9 kHz〜8 GHzのLNA/デジタル減衰器統合品が注目点。受動部品ではsub-GHz統合LTCCフィルタと、330 GHzまで評価された小型導波管フランジが設計密度と高周波実装の課題に応える。


今週の注目情報


 | 6G / Wi-Fi 7/8 / Channel emulation

VIAVI Vertex 6.0、最大23.6 GHz・400 MHz帯域で6G/Wi-Fi 7/8伝搬を再現

6GWi-Fi 7/8FR3ISACMIMO
English-first summary: VIAVI introduced Vertex 6.0 with 400 MHz instantaneous bandwidth and carrier support up to 23.6 GHz. The platform natively supports newly defined 6G waveform requirements and exceeds Wi-Fi 7/8 bandwidth needs. When combined with VIAVI's FR3 MIMO converter and ray tracing, it can emulate RF propagation for FR3, AI-RAN and ISAC digital-twin workflows. A 6U chassis supports 36 RF ports, 256 digital links and up to 1.6 GHz aggregate bandwidth.

日本語訳: VIAVIは、瞬時帯域幅400 MHz、キャリア周波数最大23.6 GHzに対応するVertex 6.0を発表した。新たに定義される6G波形要件へネイティブ対応し、Wi-Fi 7/8の帯域要件も上回る。FR3 MIMOコンバータとレイトレーシングを組み合わせ、FR3、AI-RAN、ISAC向けRF伝搬デジタルツインとして利用できる。6U筐体は36 RFポート、256デジタルリンク、合計最大1.6 GHz帯域を備える。

RF視点: 6G候補技術の評価がリンク単体から、多ユーザーMIMO、FR3、センシングを含む再現可能なラボ環境へ移っている。最大23.6 GHzなので、FR2/sub-THz全域を直接カバーする装置ではない。

Source: everything RF / VIAVI Solutions

 | GaN / Thermal management / DARPA

BAE Systems、GaN RFデバイスの熱限界を狙うDARPA THREADS Phase 2へ

GaNRF powerThermalMaterials6G
English-first summary: BAE Systems' FAST Labs completed Phase 1 of DARPA's Technologies for Heat Removal in Electronics at the Device Scale (THREADS) program and received support for Phase 2. The work targets temperature limits in high-performance GaN RF electronics through material and process improvements. BAE says successful thermal management could nearly triple the range of RF systems.

日本語訳: BAE SystemsのFAST Labsは、DARPAのデバイススケール放熱技術THREADSプログラムPhase 1を完了し、Phase 2支援を獲得した。材料・プロセス改善により、高性能GaN RF電子デバイスの温度限界克服を目指す。熱管理に成功すれば、RFシステムの到達距離を約3倍にできる可能性があるとしている。

RF視点: GaN PAの性能制約はトランジスタ固有性能だけでなく、接合部からパッケージまでの熱抵抗で決まる。距離3倍はプログラム目標であり、量産デバイスの確定仕様ではない。

Source: everything RF / BAE Systems and DARPA

 | 5G sensing / AI-RAN / Counter-UAS

Lockheed Martinら、既存Verizon 5G網でAIドローン検出・追跡を実証

5GISACAI-RANRF sensingUAV
English-first summary: Lockheed Martin, Verizon, NVIDIA, Keysight, ODC and Astris AI demonstrated NetSense Airspace Awareness-as-a-Service in the Miami area. The system used existing Verizon 5G spectrum, ODC AI-native RAN software, NVIDIA AI Aerial and Keysight RF simulation to detect RF disturbances, identify drones, maintain track custody and issue real-time alerts.

日本語訳: Lockheed Martin、Verizon、NVIDIA、Keysight、ODC、Astris AIは、マイアミ地域でNetSense Airspace Awareness-as-a-Serviceを実証した。既存Verizon 5G周波数、ODCのAI-native RAN、NVIDIA AI Aerial、KeysightのRFシミュレーションを使い、RFの乱れからドローンを検出・識別し、追跡を維持してリアルタイム警報を出した。

RF視点: 通信用RANをセンシング資産として再利用する具体例。実用化ではサイト同期、クラッタ抑圧、反射信号ダイナミックレンジ、通信KPIとの共存が評価点になる。

Source: everything RF / Lockheed Martin partners

 | 60 GHz / mmWave / UAV communications

Peraso、UAV向け60 GHz耐妨害mmWaveモジュールPRM2145を発表

mmWave60 GHzBeamformingUAVAnti-jam
English-first summary: Peraso introduced the PRM2145, a compact 60 GHz communications module for UAVs, autonomous systems and defense. It targets gigabit-class throughput, ultra-low latency and directional beamforming for command links, HD video, ISR data and drone-to-drone communications. Highly directional links are intended to improve resistance to congestion, interference, detection and jamming. Customer evaluation is planned for Q4 2026.

日本語訳: Perasoは、UAV、自律システム、防衛向けの小型60 GHz通信モジュールPRM2145を発表した。ギガビット級スループット、超低遅延、指向性ビームフォーミングにより、指令リンク、HD映像、ISRデータ、ドローン間通信を狙う。高指向性リンクで混雑、干渉、検出、妨害への耐性向上を目指す。顧客評価は2026年第4四半期を予定。

RF視点: 60 GHzは広帯域と狭ビームを得やすい一方、遮蔽・姿勢変化・雨減衰・ビーム追従が課題。耐妨害性は公表された設計意図であり、第三者評価値は未提示。

Source: everything RF / Peraso

 | Power amplifier / Ka-band / Space

Analog Devices、24〜34 GHz宇宙グレードGaAs MMIC PAを投入

Power amplifierGaAs pHEMTKa-bandMMICSpace
English-first summary: Analog Devices introduced the ADH943AS, a four-stage space-grade GaAs pHEMT MMIC power amplifier covering 24 to 34 GHz. It provides 23 dB gain, 34 dBm saturated output power, 39 dBm OIP3 and 23% power-added efficiency from a 5.5 V supply. Internally matched 50-ohm ports and a detector output simplify integration and power monitoring.

日本語訳: Analog Devicesは、24〜34 GHzをカバーする4段構成の宇宙グレードGaAs pHEMT MMIC PA、ADH943ASを発表した。5.5 V電源で利得23 dB、飽和出力34 dBm、OIP3 39 dBm、PAE 23%を提供する。内部50 Ω整合と検波出力により、実装と出力監視を簡素化する。

RF視点: Ka-band SATCOM/マイクロ波無線で使いやすい一チップPA。GaNではなくGaAsで、線形性・周波数範囲・宇宙スクリーニングを重視した構成。

Source: everything RF / Analog Devices

 | LNA / Digital attenuator / RF front end

Mercury AM1265、LNA・バイパス・6 bit減衰器を4 mm QFNへ統合

LNAAttenuatorSDRRadarRF front end
English-first summary: Mercury Systems introduced the AM1265, integrating a low-noise amplifier, bypass path and 6-bit digital step attenuator in a 4 mm QFN package. It operates from 9 kHz to 8 GHz and offers 20 dB gain with a 2 dB noise figure, a 1.4 dB-loss bypass, and 31.5 dB attenuation in 0.5 dB steps. Mercury claims up to 75% RF board-area reduction versus discrete implementations.

日本語訳: Mercury Systemsは、LNA、バイパス経路、6 bitデジタル・ステップ・アッテネータを4 mm QFNに統合したAM1265を発表した。9 kHz〜8 GHzで動作し、LNAは利得20 dB/NF 2 dB、バイパス損失1.4 dB、減衰量31.5 dBを0.5 dB刻みで設定できる。ディスクリート構成比でRF基板面積を最大75%削減できるとしている。

RF視点: 50 dB超の動的ゲイン制御を一部品で行え、広帯域SDR、EW、レーダー、計測器の受信ダイナミックレンジ設計を簡素化する。

Source: everything RF / Mercury Systems

 | LTCC filter / Balun / Sub-GHz IoT

Bourns、770〜928 MHzフィルタ・バラン・整合を1.6 × 0.8 mmへ統合

FilterBalunLTCCIoTRF front end
English-first summary: Bourns announced the FBD1608N080D6, a balanced LTCC band-pass filter covering 770 to 928 MHz. The 1.6 × 0.8 × 0.6 mm device combines filtering, balun conversion and impedance matching in one monolithic component for sub-GHz low-power IoT front ends. It is available through authorized distributors.

日本語訳: Bournsは、770〜928 MHzをカバーする平衡型LTCCバンドパスフィルタFBD1608N080D6を発表した。1.6 × 0.8 × 0.6 mmのモノリシック部品に、フィルタ、バラン変換、インピーダンス整合を統合し、sub-GHz低消費電力IoTのRFフロントエンドを小型化する。正規販売網で供給中。

RF視点: SAW/BAWではなくLTCC受動統合品。部品点数と配線ばらつきを減らせる一方、アンテナや無線ICごとの最終整合評価は必要。

Source: everything RF / Bourns

 | Waveguide / sub-THz / Interconnect

NPLとFlann、小型FSM-45導波管フランジを330 GHzまで検証

Waveguidesub-THz330 GHzLow lossMetrology
English-first summary: NPL and Flann Microwave received an ARFTG award for validating the FSM-45 miniature rectangular-waveguide interconnect. Conventional IEEE-standard interfaces become disproportionately large relative to the waveguide aperture at millimeter-wave and sub-terahertz frequencies. NPL measurements up to 330 GHz showed the smaller interface matched or exceeded the electrical performance of the current IEEE flange benchmark above 110 GHz.

日本語訳: NPLとFlann Microwaveは、小型矩形導波管インターコネクトFSM-45の検証でARFTG賞を受賞した。mmWave/sub-THzでは、従来のIEEE標準インターフェースが導波管開口に対して過大になる。NPLが330 GHzまで測定した結果、小型化したFSM-45は110 GHz超で基準となる現行IEEEフランジと同等以上の電気性能を示した。

RF視点: 高周波ではフランジ寸法、位置合わせ、接触再現性がシステム損失を左右する。sub-THz計測器、6G研究装置、コンパクトな導波管モジュールの実装密度向上につながる。

Source: everything RF / NPL and Flann Microwave

 | GNSS / LNA control / Wearables

u-blox LEAP、信号選択とLNA制御でGNSS消費電力を最大50%削減

u-bloxGNSSLNAIoTSmartwatch
English-first summary: u-blox introduced Low Energy Accurate Positioning (LEAP) for its M10 GNSS platform. LEAP prioritizes line-of-sight satellite signals while avoiding weak, low-elevation or multipath-affected signals, and it can control the external LNA to save energy. u-blox reports up to 50% lower GNSS power while maintaining accuracy; operation at 0.5 Hz can reduce consumption to about 5 mW.

日本語訳: u-bloxはM10 GNSSプラットフォーム向けLow Energy Accurate Positioning(LEAP)を発表した。見通しの良い衛星信号を優先し、弱い信号、低仰角信号、マルチパス影響信号を避け、必要に応じて外付けLNAも制御する。測位精度を維持しながらGNSS消費電力を最大50%削減し、0.5 Hz更新では約5 mWまで下げられるとしている。

RF視点: スマートウォッチやトラッカーでは、受信信号を増幅し続ける設計から、測位寄与度に応じてRFチェーンを動的制御する設計へ進む。50%はu-blox公表値で、実機効果はアンテナと環境に依存する。

Source: everything RF / u-blox

Research watch



 | arXiv preprint

AIで6G UAV-IoTのISAC測位アンカー/ビームを選択

English-first summary: AIRS-LaaS ranks aerial and terrestrial anchor-beam pairs using LoS probability, SINR, sensing confidence, geometry, mobility risk and resource cost. It activates only a compact subset before localization to balance positioning accuracy, communications performance, pilot overhead and energy.

日本語訳: AIRS-LaaSは、LoS確率、SINR、センシング信頼度、幾何、移動リスク、資源コストで空中/地上アンカーとビームの組を順位付けし、測位前に必要最小限だけを有効化する。測位精度、通信性能、パイロット負荷、電力の両立を狙う。

Source: arXiv:2608.10571

 | arXiv preprint

THz協調ISACの安全通信をGNN/Mambaで共同最適化

English-first summary: The paper studies secure cooperative THz OFDM bistatic ISAC with multiple base stations and extremely large antenna arrays. It jointly optimizes analog beamforming, digital precoding, true-time delays and sensing covariance to protect downlink data when sensed targets may also be eavesdroppers.

日本語訳: 複数基地局と超大規模アンテナアレイを用いるTHz OFDMバイスタティック協調ISACで、センシング対象が盗聴者にもなり得る条件を扱う。アナログビームフォーミング、デジタルプリコーディング、真時間遅延、センシング共分散を共同最適化する。

Source: arXiv:2608.10467

いずれも査読前プレプリントであり、標準仕様や量産性能を示すものではありません。


Component & market radar


Antenna / IoT

Abracon、915 MHz小型チップアンテナ

AANI-CH-0212は12 × 4 × 1.6 mm、平均効率65.9%、ピーク利得2.2 dBi。17 × 15 mmのグランドクリアランスで、LoRa、Wi-SUN、Sigfox機器を狙う。

Source: Microwave Journal / Abracon
Coupler / mmWave

KRYTAR、7〜24 GHz方向性結合器

10 dB/20 dB結合の2モデルを追加。平均20 W、ピーク3 kWに対応し、6G、5G NR、Wi-Fi 6/6E、SATCOM、ビームフォーミング計測を対象とする。

Source: everything RF / KRYTAR
IEEE 802.15.4

Signal Hound、SUN-OFDM解析/生成ツール

IEEE 802.15.4 SUN-OFDMの信号解析と生成をSpike/VSGへ追加。スマートメータ、産業オートメーション、ユーティリティ網の干渉解析と性能検証向け。

Source: everything RF / Signal Hound
IoT market

Semtech、セルラーモジュール事業をCompalへ6200万ドルで売却

知財、顧客関係、人員を含むセルラーモジュール事業をCompalが取得予定。SemtechはデータセンターとLoRa接続へ資源を集中する。完了はSemtech FY2027第4四半期の見込み。

Source: everything RF / Semtech

スマートフォン/スマートウォッチ分解動画

期間内の新規動画あり

iFixit:Galaxy Z Fold8 Teardown — The Hinge Has a Serious Problem

English-first summary: iFixit's August 13 teardown found that the Galaxy Z Fold8's IP48 rating protects against water but not fine dust. UV-reactive particles entered the hinge, causing grinding noises and abnormal opening, while the sealed batteries and main boards stayed comparatively clean. The teardown also identified a titanium-reinforced display structure, two silicon-carbon battery cells totaling 18.68 Wh, a modular USB-C port and a difficult hinge/inner-display repair path. The provisional repairability score is 4/10.

日本語訳: iFixitの8月13日分解では、Galaxy Z Fold8のIP48は耐水性を持つ一方、微細な粉塵を防げないことが確認された。UV反応粒子がヒンジへ入り、異音と開閉不良が発生したが、密閉された電池とメイン基板は比較的きれいだった。チタン補強ディスプレイ、合計18.68 Whの二つのシリコンカーボン電池、独立交換可能なUSB-Cポートも確認。ヒンジ/内側画面の修理は難しく、暫定修理容易性は4/10。

RF視点: 本分解の主題は修理性とヒンジ耐塵性で、RFフロントエンドのチップ同定ではない。ただし、薄型折りたたみ筐体でアンテナ、無線充電コイル、熱拡散、二分割バッテリ、シールド基板を共存させる実装制約を観察できる。

動画を見る(YouTube)  iFixit記事と分解写真

高周波・RFニュース特別編 Samsung Galaxy Z Fold 8をiFixitが分解、5Gミリ波AiP(Antenna in Package)はカメラの横に1個あることをCTスキャンでも確認

Samsung Galaxy Z Fold 8をiFixitが分解していた。Chip IDはまだ(やるのかな?)。

Galaxy Z Fold8 Teardown: Samsung’s Best Foldable Still Has a Hinge Problem

5Gミリ波AiPを探してみる。ここかな?

Fold81

CTスキャンで確認。当たり。5つのパッチアンテナが見える。

Fold82

別角度から。コネクタも見えた。

Fold83

すき家でシビ辛麻婆茄子牛丼をいただく。痺れは強くないが大きな茄子がピリ辛で美味しい。なか卯で金胡麻冷やし牛肉つけうどんをいただく。甘辛い牛肉とごまだれがよく合って美味しい。かつお節オクラすだちおろしうどんもいただく。爽やかで暑い日にぴったり。

すき家でシビ辛麻婆茄子牛丼をいただいた。サラダと味噌汁もつけて。

20260809-135519

20260809-135517

シビ辛ということだが痺れは弱め。でも茄子が大きく切られていてひき肉ともよく合って美味しい。

別の日、なか卯で金胡麻冷やし牛肉つけうどんをいただいた。かなり濃い甘辛い牛肉で濃すぎ?と思ったがごまだれと一緒にするとちょうどよくなる。うどんともよく合うタレ。

20260811-121105

また別の日、かつお節オクラすだちおろしうどんもいただいた。オクラとかつお節がうまい。すだちがとても爽やか。

20260815-130823

2026年8月15日 (土)

「オークストリートの異変」を観てきた。問題を抱えた家族の住む通りに恐竜が現れ生き残るために逃げ戦う。ジュラシックパークと違い普通のアメリカの街並み(1982年で時折に時代がわかるものが映る。カール・セーガンも)に出る恐竜が本家では絶対やらないことをするのに笑う。

一番最初の予告編では恐竜もちらっとしか映らないので何の映画?と思っていた。もう恐竜が出るのは予告でもわかる。

20260814-111313

なぜこの時代設定にしたのかはわからなかったが、ことあるごとに時代がわかるもの(CMだったり、曲だったり、スポーツ選手だったり)が映るのが面白い。なのでスマホもないし、カメラもポラロイド。

背景の説明がテレビで話しているNASA、天文がすきな長女がカール・セーガン、コスモスを語るのみ、というのがかえってすがすがしい。

最近の映画ではブラックホールの描写が実際のものに近くなっているが、この作品のあれはもう全然というのもすがすがしい。

そういう細かいことは置いておいてとにかく普通の人たちが普通の1982年のアメリカの街並みで恐竜に襲われ、殺されるのが新しい。

恐竜もジュラシックパークと変えてきていて、羽毛があるやつとか、また本家では絶対やらない(できない)行動を2つしていたので笑った。

でもジュラシックパークのオマージュっぽいシーンは結構あった気がする。

そしてとにかくアン・ハサウェイが走って闘いまくるのが新鮮で面白かった。ユアン・マクレガーもだめな夫だがやるときはやる感じで、途中でえ?と思った。これどうやって助かるのか?と思っていたら…なるほど最初の方のが伏線になっていた。タイトルもでないな、と思っていたらそういう…
でもそれをやってしまうとパラドクスが…なんて思ってはいけないんだろう。そういう話ではないという。


2026年8月14日 (金)

Meta Muse Glimmer 30B(llama.cppで使用)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作成。ローカルLLMは何度もやり直さないと駄目なものが多いが、一発で動くものができた。

Meta Muse Glimmer 30B、今回はいつもやっているPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作成してもらった。
VRAMが少ないのでめちゃくちゃ遅いが、コードはちゃんとできた。

Musespara5

動かしてみると一発で画面が出た。ローカルLLMは画面すら出ないものが多いので優秀。

dB

Musespara1

位相

Musespara2

スミスチャート

Musespara3

TDR

Musespara4

これは結構使えそう。

2026年8月13日 (木)

高周波・RFニュース 2026年8月13日 Google Pixel 11シリーズ発表・5Gミリ波対応は日本ではPixel 11 Pro Foldのみ、Microwave JournalはEuMW特集、ミニサーキットの車載部品テストアプリケーションノート、ローデシュワルツのミリ波スキャナがタイの空港に設置

・Google Pixel 11シリーズ発表・5Gミリ波対応は日本ではPixel 11 Pro Foldのみ。USモデルは無印11も対応
https://store.google.com/jp/product/pixel_11_pro_fold_specs?hl=ja&srsltid=AfmBOoo8LJmeMmlvbI774W1rjK0aJ2viI5MdZdhv9pg7-26CnvT7iaxB

202608131

 

・Microwave JournalはEuMW特集
https://www.microwavejournal.com/publications/1
202608132

 

・ミニサーキットの車載部品テストアプリケーションノート

Automotive Infotainment, Telematics (TCU) & Antenna Validation and Testing App Note

202608133

・ローデシュワルツのミリ波スキャナがタイの空港に設置

Rohde & Schwarz installs millimeter wave security scanners at Airports of Thailand (AOT) Airports

202608134

TimesFM 2.5(Googleの時系列予測基盤モデル。追加学習なしで予測する)をPythonで使ってカオスを生じるロジスティック写像を予測してみる。

気温、日経平均とやってきて、今回は正解があるものを試そうということで一番簡単なロジスティック写像

x(n+1) = a * x(n) * (1 - x(n))

をやってみる。

https://ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E5%86%99%E5%83%8F

コードはこちら。


import torch
import numpy as np
import timesfm
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Noto Sans CJK JP'

torch.set_float32_matmul_precision("high")
model = timesfm.TimesFM_2p5_200M_torch.from_pretrained("google/timesfm-2.5-200m-pytorch")

n = 1000
npred = 100
x0 = 0.1
a = 4.0
t = np.arange(n)
x = np.zeros(n)
x[0] = x0
for i in range(1, n):
    x[i] = a * x[i-1] * (1 - x[i-1])

ttrain = t[:(n-npred)]
ttest = t[(n-npred):]
xtrain = x[:(n-npred)]
xtest = x[(n-npred):]

model.compile(
    timesfm.ForecastConfig(
        max_context=1024,
        max_horizon=256,
        normalize_inputs=True,
        use_continuous_quantile_head=True,
        force_flip_invariance=True,
        infer_is_positive=True,
        fix_quantile_crossing=True,
    )
)


point_forecast, quantile_forecast = model.forecast(
    horizon=npred,
    inputs=[
        xtrain
    ],  
)

fig = plt.figure(figsize=(10, 6))
plt.figure(figsize=(10, 6))
plt.plot(ttest, xtest, label="真値")
plt.plot(ttest, quantile_forecast[0, :, 0], label="予測値")
plt.fill_between(ttest, quantile_forecast[0, :, 1], quantile_forecast[0, :, 9], alpha=0.2, label="10-90 パーセンタイル")
plt.legend()
plt.xlabel("n")
plt.ylabel("x_n")
plt.title(f"ロジスティック写像の予測 a={a}")

まずは3周期に落ちるパラメータ(a=3.8285)でやってみる。

Timesfmlogistic2

なるほどちゃんと予測しているな。次は強いカオス状態(a=4)でやってみる。

Timesfmlogistic1

全然予測できてないな(そりゃそうだ)。ある程度規則的な動きをするものなら基盤モデルでも予測はできそう。

2026年8月12日 (水)

永遠の記憶(東野圭吾さんガリレオシリーズ遺作)を読んだ。登場人物が年齢を重ねて終活まで考えている中、内海刑事が老人に刺される第一部 履歴る(たどる)を読み、第二部 終活る(ふりかえる)の途中で、あれ?これもしかして…?と思ったらそうだった。これは驚いた。

東野圭吾さんがお亡くなりになってすぐに出たガリレオシリーズ遺作でこれは読まねば…と思って一気に読む。

これは遺作にふさわしい作品だった。

20260811-164350

あらすじは「内海薫が刺された。
犯人は70歳ほどの老人。飛び降り自殺を図るも失敗し、
取り調べには黙秘を貫く。
やがて内海に恨みを抱く若い娘が捜査線上に浮かぶが、
老人との関係は不明。それどころか、内海への本当の復讐はこれからだった。
彼女が迫った「究極の選択」とは一体――。

一方、湯川と草薙は、老人の“ある持ち物”を手掛かりに、
「忘れてはいけない謎」の扉を開く。

第一部で出たある人物の名前を湯川は知っていたようだが、草薙にはわからない。それをたどっていくうちに…あれ?これもしかしてあの件?マジか?となったら本当にそうだった。なるほど最後の謎だ。これを描かれるということは東野さん、自分の死期がわかっていたのかもしれない。

深く振り返るような作品でした。ただ科学的要素がほぼない(一個だけ最後に出てくる)のはちょっと残念。

 

2026年8月11日 (火)

Meta Muse Glimmer 30B(llama.cppで使用)に、電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられたし、説明が丁寧。

Meta Muse Glimmer 30Bが使えるようになっていてGGUFも使える。

https://huggingface.co/meta-models/Muse-Glimmer-30B-GGUF

ということでいつもやっている電子レンジの動作原理と隕石の大気圏突入について聞いてみよう。

どちらも正しく答えられている上に、とても丁寧な説明で好感が持てる。

ーーーー

問:電子レンジの動作原理となぜ2.45GHzが使われているかを教えてください。特に水分子の共振周波数とも関連づけて説明してください。

答え:


電子レンジの加熱は 共鳴吸収ではなく誘電加熱 です。2.45GHzが選ばれているのは、水分子の「ピタリの共鳴周波数」だから、というより実用上の最適解だからです。


動作原理


  1. マグネトロンでマイクロ波を作る
    マグネトロンという真空管で2.45GHz、波長約12.2cmの電磁波を出力します。出力は数百W~1kW程度です。

  2. 空洞共振器で食品を照射する
    電子レンジ内部は金属の箱=共振空洞です。回転するターンテーブルとスターラーが電場分布を攪拌し、食品全体にマイクロ波が当たるようにしています。

  3. 水分子の双極子が回転して摩擦熱になる
    水分子は電気的なプラス・マイナスを別々に持つ双極子で、永久双極子モーメントが1.85Dあります。
    マイクロ波の電界が2.45×10^9回/秒で向きを変えると、水分子はその電界に追従して回転しようとします。
    分子は電界に少し遅れて向きを変えるため、分子同士の衝突でその遅れが熱に変わります。これが誘電損失、言い換えれば回転摩擦による発熱です。

    発熱量は誘電率の虚部 ε''、つまり損失正接に比例します。 P ∝ 2π f ε0 ε'' E^2
    食品中の水が多く、ε''が大きいほどよく温まります。油や砂糖は水よりε''が小さいので温まりにくい、金属は反射、ガラス・陶器はほぼ透過する、という違いになります。


なぜ2.45GHzなのか


1. 水の吸収帯と浸透深さのバランス
水の誘電緩和はデバイ緩和で、室温では緩和周波数が約18GHz付近にあります。吸収スペクトルは広く、1GHz~数十GHzで強く吸収されます。
2.45GHzは吸収が十分強く、かつ食品への浸透深さが1~2cm程度と適度です。
周波数が高すぎると浸透深さが数mmになり表面だけが焦げる。低すぎると浸透は深いがマグネトロンの作りが大型になり、発熱効率が下がります。


2. ISMバンドの割り当て
2.45~2.50GHzは国際的に産業・科学・医療用 ISMバンドとして割り当てられています。通信に使われないため干渉を受けにくく、世界中で使える周波数です。


3. マグネトロンの技術的都合
2.45GHzはマグネトロンで効率よく、比較的小型に高出力が得られる周波数でした。1940年代にパーシー・スペンサーがレーダーのマグネトロンを調べていて偶然チョコレートが溶けたことから実用化され、その設計がそのまま継承されています。


水分子の共振周波数との関係でよくある誤解


「2.45GHzは水分子の共鳴周波数」と言われることがありますが厳密には違います。


  • 水蒸気の回転遷移による吸収線は22.235GHz、183GHzなどに鋭いピークがあります。
  • 液体水の吸収は回転共鳴ではなく、双極子の向きを変えるのに必要な緩和時間による広帯域吸収です。
    液体水は分子が強く相互作用しているため共振はぼやけ、2.45GHz付近でも十分に吸収します。

要するに、2.45GHzは「水分子とピタリ共鳴する」周波数ではなく、「水がよく吸収し、食品に適度に浸透し、装置も作りやすい」周波数として国際的に標準化されたもの、というのが正確な理解です。

問:隕石が大気圏に突入すると燃えてしまいますが、その原理を教えてください。

答え:


隕石が「燃える」のは摩擦熱だけではなく、主に運動エネルギーが熱エネルギーに変わる圧縮加熱が原因です。


1. 凄まじい速度で突っ込んでくる


宇宙空間を漂う隕石は秒速11km〜72km、地球の公転速度と同じかそれ以上のスピードで大気圏に突入します。
秒速20kmの1kgの隕石の運動エネルギーは約2億ジュール。TNT換算で約50kg分です。このエネルギーが一瞬で放出されます。


2. 衝撃波による圧縮加熱が主役


隕石は空気分子を前に押しのけて進みますが、そのスピードは音速の数十倍。
前に集まった空気は一瞬で押しつぶされ、衝撃波ができて激しく圧縮されます。


気体は圧縮されると温度が上がる、これはピストンを急激に押し込むと空気が熱くなるのと同じ原理です。
このラム加熱・衝撃波加熱で隕石の前方に数千℃の高温プラズマのカーテンができます。
停滞温度はおおよそ T ≒ T0 + v² / 2Cp で見積もられ、20km/sだと理論上 2万℃以上になります。実際は輻射で逃げるので数千℃ですが、それでも十分に溶融・気化する温度です。


摩擦熱もわずかにありますが、空気は連続体で隕石表面が滑るような摩擦ではなく、分子が次々と衝突・加熱されるため、摩擦が主因ではないのがポイントです。


3. 隕石自身が加熱・蒸発する


その高温のプラズマが隕石表面を包み込みます。
表面温度は2000℃〜3000℃を超え、石質なら融点を超えて溶け、金属質なら蒸発します。
この過程をアブレーションと言います。表面が蒸発して吹き飛ぶため、尾を引いて「燃えている」ように見えます。


実際は化学反応による燃焼ではなく、加熱による気化と、気化した隕石物質と周囲の空気分子が発光する現象です。酸素がなくても光ります。


4. 大きさで運命が決まる


小さい隕石ほど表面積が大きく、減速も早いので大気圏内で完全に気化して消えます。これが流れ星です。
大きい隕石は運動エネルギーが大きく、表面が蒸発しても芯が残り、減速しながら地面まで届きます。これが隕石となります。


要するに、空気の抵抗で急激に減速する際に運動エネルギーが熱に変わり、衝撃波で空気が極高温になる。隕石はその高温に晒されて溶けて蒸発する、というのが大気圏突入の「燃える」原理です。

池田の呉服神社でお参り。ステンドグラスがあった。

阪急池田駅からすぐです。ごふくじんじゃではなく、くれはじんじゃと読むそう。

20260206-155655

20260206-155851

恵比寿社もあった。

20260206-155940

20260206-155943

ステンドグラスがあるのが珍しい。

20260206-160106

20260206-160110

 

«高周波エンジニアのためのAI・機械学習入門(GPU編41) 強化学習でLCバンドパスフィルタの素子値を最適化する。今回は準備として損失があるL,C(Q値を入力)を使って設計・特性評価するPythonライブラリを作る。

最近の記事

2026年8月
            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          

最近のコメント

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