mcpField
M
matlab-design-radar-waveform

matlab-design-radar-waveform

github.com/matlabその他1.2k65 回インストール2 日前に更新
リポジトリ

matlab-design-radar-waveform について

Phased Array System Toolbox を使ってレーダー波形を選択、設定、解析する MATLAB スキルです。センシング要件から波形を選び、信号を手作業で構成するのではなく、ツールボックスによる生成と解析を重視します。

主な機能

  1. 01要件に基づく波形オブジェクトの選択
  2. 02センシング制約からのパラメーター導出
  3. 03ツールボックスのオブジェクトと関数による波形生成
  4. 04曖昧度関数、サイドローブ、ドップラー応答の解析
  5. 05距離と速度の要件間にある競合の特定

活用シーン

  1. 01レーダーセンシング用途に合う波形の選択
  2. 02距離分解能要件に基づくパラメーター設定
  3. 03サイドローブとドップラー特性の比較
  4. 04非曖昧距離と速度の目標間にある競合への対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-design-radar-waveform

インストール後、Claude Code で/matlab-design-radar-waveformを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

manifest.yaml
references/
analysis-functions.md
common-mistakes.md
phase-code-reference.md
spectral-notching.md
waveform-objects.md

詳細

レーダー波形設計

Phased Array System Toolbox を使用してレーダー波形を設計し、選択します。要件に基づいて適切な波形オブジェクトを選択するために判断ツリーを使用し、関数とオブジェクトの正しい組み合わせに従って、よくある間違いを避けます。

使用する場合

主なキーワード(いずれか単独でもスキルを起動する場合があります): waveform、signal、chirp、LFM、NLFM、FMCW、PMCW、pulse compression、transmit signal、M-sequence、MLS、PN code、spread spectrum、phase code、joint radar-communication、dual-function waveform

センシング領域を示す語句(主なキーワードと組み合わせることでセンシング領域を確認できます): target、jammer、jamming、pulse、pulses、spectrum、sidelobe、Doppler、range resolution、detection、clutter、matched filter、ambiguity、sweep、PRF、PRI

起動条件:

  • 主なキーワード+センシング領域を示す語句 → このスキルをそのまま使用します
  • 主なキーワードのみ → センシングと通信のどちらかを確認します(通信の場合は、このスキルは適用されません)
  • センシング領域を示す語句+曖昧な表現(「毎回変化する信号」など) → このスキルを使用します

起動後、目的と範囲を確認します。

  1. 目的 — アプリケーションに基づくものですか、それとも探索・学習が目的ですか?

    • 探索・学習(学生、論文の再現、特性の比較):指定されたパラメーターで進め、radarWaveformGenerator を提案します。アプリケーションの背景を無理に尋ねる必要はありません。
    • アプリケーションに基づくもの → 以下の項目を確認します。
  2. アプリケーションの条件(不明な項目を確認します。あらゆるセンシング用途に適用されます): 距離のスケール | ターゲットの動きと速度 | 必要な分解能 | 環境(クラッター、妨害、干渉) | ハードウェアの制約(ADC、デューティサイクル) | 主な評価指標(検出、分解能、精度、または曖昧さのないこと)

  3. 要件 — 上記の回答から波形パラメーターを導き出します(以下の表を参照)。

使用しない場合

  • レーダーシステム全体のシミュレーション(送信機 → チャネル → 受信機の一連の処理)
  • ビームフォーミングまたはアレイ設計(フェーズドアレイのスキルを使用します)
  • ターゲット検出/CFAR 処理
  • Simulink の波形生成ブロック
  • 通信波形(OFDM、QAM など)
エスカレーション/適用範囲の境界条件

波形の選択だけで解決できるかのように回答してはいけません。

  • 距離/速度の曖昧さを解消する戦略(スタガード PRF のスケジューリング、中 PRF 処理)
  • トラッカー側でのドップラー/距離の対応付け
  • 詳細な受信機チェーンの設計(雑音指数、ダイナミックレンジの予算)
  • クラッター抑圧の設計(MTI、STAP)
  • アンテナ/アレイのパターンに関する問題
  • CFAR または検出器の性能に関する質問

その代わり、問題がシステムレベルであることを説明し、波形に関連する範囲で対応可能な点を示します。

ワークフロー

  1. 要件を確認する — ユーザーが指定していない内容を確認します(以下の表を参照)
  2. 波形オブジェクトを選択する — 以下の判断ツリーを使用します
  3. 波形を設定する — 要件に基づいてプロパティを設定します
  4. 解析する — 適切な解析関数(ambgfun、pambgfun、sidelobelevel)を使用します
  5. 対話形式での探索を提案する — radarWaveformGenerator アプリを推奨します
生成ルール(必須)

信号は必ずツールボックスの System オブジェクトと関数を使用して生成します。exp(1j*...) を手作業で組み立てたり、カスタムの LFSR/シーケンス生成器を記述したりしてはいけません。mlseq、legendreseq、phased.LinearFMWaveform などのツールボックス関数で必要なものを生成できる場合は、それを使用します。手作業での生成が許容されるのは、特定の操作に相当するツールボックス機能がない場合のみです(例:既存の波形ベクトルに要素ごとの位相変調を適用する)。ハイブリッド波形(例:LFM+通信エンコーディング)では、適切なオブジェクトでベース波形を生成して変更を適用し、その結果を Code='Custom' を指定した PhaseCodedWaveform でラップします。適合する組み込みオブジェクトがない場合(例:正確な DFT ビンのヌル、非連続帯域)は、カスタム IQ 合成にエスカレーションしますが、パラメーターの導出、ラップ、解析にはツールボックス関数を使用します。ツールボックスを使用する部分とカスタムの部分を必ず明示します。

分析ルール(必須)

レーダー波形の自己相関や整合フィルター応答の可視化には、xcorr を絶対に使用しないでください。代わりに、以下を使用してください。

  • 整合フィルター応答/自己相関: 'Cut','Doppler' を指定して ambgfun を使用します(ゼロドップラー断面=遅延に対する応答)。
  • PSL の測定: dB に変換した断面に sidelobelevel を使用します。
  • ドップラー耐性: 'Cut','Delay' を指定して ambgfun を使用します(ゼロ遅延断面=ドップラーに対する応答)。
  • 後段の信号処理: 実際のフィルター処理済み信号が必要な場合(レンジ処理、ビット復元など)は、phased.MatchedFilter を使用します。
エージェントの推論ポリシー
  • 上記の確認フローに従い、十分なコンテキストが得られる前にコードへ進まないでください。
  • ユーザーが波形ファミリーを指定した場合 → 制約として扱い、設定と解析を行います。そのファミリーでは要件を満たせない場合に限り、別のものを提案します。
  • ユーザーが性能要件のみを提示した場合 → 要件を満たす最もシンプルなファミリーを選び、その理由を説明します。
  • 性能要件が提示された場合 → オブジェクトを選択する前にパラメーターを導出します。
  • 波形ファミリーが指定された場合(例:「NLFM」)→ 目標(サイドローブ、スペクトル整形、ドップラー耐性、ハードウェア)について確認します。
  • 探索・学習目的の場合 → 提示されたパラメーターを使って直接支援します。それでもツールボックスのオブジェクトを使用してください — 基本波形は System オブジェクトで生成し、シーケンスには mlseq/legendreseq/apaseq を使用します。カスタム結果は Custom コードで PhaseCodedWaveform にラップします。手作業による信号生成は行わないでください。対話的な探索には radarWaveformGenerator を提案してください。
  • アプリケーションのコンテキストのみが提示された場合(数値要件なし)→ 波形ファミリー/オブジェクトを推奨し、その理由を説明します。その分野に広く使われる既定値(例:77 GHz の車載レーダー)がある場合は、前提を明示して進めます。それ以外の場合は、アプリケーションの条件を確認します。パラメーターを説明なしに設定しないでください。
  • 要件が矛盾する場合 → 波形を提案する前に、矛盾点を明らかにします。
  • 「最適な波形」→ 分解能、曖昧性、サイドローブ、ドップラー、ハードウェア、処理によって異なることを説明します。
  • ユーザーが MATLAB のリリースを指定した場合 → 関数が利用可能か確認し、radarWaveformGenerator には R2026a が必要であることを伝えます。
  • デバッグを繰り返さないでください。 コードでエラーが発生した場合や、結果が期待と異なる場合は、対象を絞った修正を最大 1 回だけ試してください。2 回目も失敗した場合は、そこで止め、何が問題だったか、何を試したかを報告し、要件の調整、制約の緩和、追加情報の提供のいずれを希望するかユーザーに尋ねます。2 回を超えて繰り返さないでください。
  • 断片的なコードではなく、完全なスクリプトを作成してください。 evaluate_matlab_code の呼び出しを何度も重ねてコードを作成しないでください。代わりに、スクリプト全体を設計し、.m ファイルに保存して、run_matlab_file で一度実行します。ファイルを保存するには、利用可能であれば Write ツールを使用し、そうでなければ MATLAB の writelines または fopen/fprintf/fclose を使って evaluate_matlab_code で保存します。MATLAB コードに Bash のヒアドキュメントを使用しないでください — シングルクォートやフォーマット文字列(%d、\n)でシェルのクォート処理が壊れるためです。API やパラメーターが不確かで、MATLAB で「試してみよう」と思った場合は、対話的に探索するのではなく、そこで止めてユーザーに確認してください。evaluate_matlab_code の使用は、最大でも次の用途に限ります:(1)セットアップ/クリーンアップの呼び出しを 1 回、(2)スクリプトの保存と実行、(3)必要な場合の再試行を 1 回。
  • PSL のトレードオフ確認ポイント。 PSL の目標が -30~-45 dB の場合:TBP を計算します。TBP < 500 の場合は、コード生成の前にトレードオフを提示します:(a)NLFM — SNR 損失はありませんが、この TBP では定常位相近似によって PSL が制限されます。(b)LFM + 時間領域の窓付き整合フィルター — 任意の TBP で目標 PSL を保証しますが、約 3~4 dB の SNR 損失が発生します。(c)NLFM が可能になるよう TBP を増やします。続行する前に、ユーザーに選択してもらいます。
確認が必要な要件

アプリケーションの仕様がわかったら、次の具体的な確認事項をチェックしてください。

ユーザーが指定していない項目...確認する内容...影響する事項...
変調方式パルス方式とCW方式のどちらか、FM方式と位相符号化方式のどちらかオブジェクトの選択(決定木)
距離分解能必要な分解能(m)rangeres2bw による帯域幅
サイドローブ要件許容可能な PSL(dB)NLFM、窓付き整合フィルター、位相符号の選択
距離と速度の両方最大非曖昧距離と最大非曖昧速度PRF の競合チェック(「パラメーターの導出」を参照)
ドップラー耐性コヒーレント積分時間中の目標の最大速度LFM(高耐性)と位相符号化方式(低耐性)のトレードオフ
ハードウェアの制約ADC 帯域幅、瞬時帯域幅の上限広帯域 LFM の代わりにストレッチ処理またはステップ FM を使用
要件に基づく推奨方法
  • ドップラー耐性を優先 → LFM 方式のソリューション
  • SNR を損なわずにサイドローブを低くする → NLFM(十分な TBP が必要)
  • スペクトルのノッチ処理 → 構造化波形には振幅のみのバンドストップを使用し、shapespectrum は PRO-FM の場合にのみ使用します。references/spectral-notching.md を参照してください。
  • サイドローブを抑えるためのカスタム周波数プロファイル → nlfmspec2freq + CustomFMWaveform
  • ハードウェアの帯域幅に制限がある → ストレッチ処理またはステップ FM
  • 外部 IQ → カスタム IQ パターン(Code='Custom' を指定した PhaseCodedWaveform)
  • CW/周期解析 → pambgfun(ambgfun ではありません)

各ファミリーの概要表(長所とトレードオフ)については、references/waveform-objects.md を参照してください。

波形選択の決定木

Is the waveform continuous (CW)?
├── Yes: Does the user need linear FM sweep?
│   ├── Yes: Multiple targets where ghost targets are a concern?
│   │   ├── Yes → phased.MFSKWaveform (resolves range+speed without ghosts)
│   │   └── No → phased.FMCWWaveform (triangle sweep for range+speed)
│   └── No: Does the user need multiple frequency steps?
│       ├── Yes → phased.MFSKWaveform
│       └── No: No dedicated CW object for desired modulation?
│           └── Use pulsed object with PRF = 1/PulseWidth (see CW Pattern below)
│               ├── Nonlinear FM → phased.NonlinearFMWaveform or phased.CustomFMWaveform
│               └── Phase-coded → phased.PhaseCodedWaveform
│
└── No (pulsed): What modulation?
    ├── None (simple pulse) → phased.RectangularWaveform
    ├── Linear FM → phased.LinearFMWaveform
    ├── Nonlinear FM (built-in type) → phased.NonlinearFMWaveform
    │   (4 types: Polynomial, Hyperbolic, Hybrid Linear-Tangent, Stepped Price)
    ├── Nonlinear FM (custom shape) → phased.CustomFMWaveform
    │   (use with nlfmspec2freq for stationary-phase design)
    ├── Phase-coded → phased.PhaseCodedWaveform
    ├── Stepped frequency → phased.SteppedFMWaveform
    └── Hybrid (base waveform + additional modulation)
        → Generate base with appropriate FM/pulse object
        → Apply secondary modulation to the IQ vector
        → Wrap result with PhaseCodedWaveform (Code='Custom')

主な関数

関数用途利用可能なバージョン
rangeres2bw距離分解能(m)を帯域幅(Hz)に変換—
speed2dop速度をドップラーシフトに変換(一方向のみ。レーダーでは 2 倍します)—
freq2wavelen搬送周波数を波長に変換—
nlfmspec2freq指定したスペクトル形状から瞬時周波数を計算R2023a
shapespectrum指定したスペクトル形状(ノッチ、マスク)で波形を生成R2024b
sidelobelevelピークサイドローブレベルと積分サイドローブレベルを測定(入力は dB 単位で指定する必要があります)R2024b
legendreseqルジャンドル系列を生成(完全な周期自己相関)R2024a
mlseq最大長系列を生成R2024a
apaseqほぼ完全な自己相関系列を生成。長さ N を渡しますR2024a
pnkcode長さ N の多相 P(n,k) 符号を生成:pnkcode(N, n, k) — 深い PSL に最適R2024a
getMatchedFilter整合フィルター係数を返します。SteppedFMWaveform では行列(ステップごとに 1 列)を返します。それぞれのパルスを対応する列でフィルター処理します—
bandwidth波形の帯域幅(Hz)を返します。SteppedFMWaveform を除くすべてのパルスオブジェクトで利用できます—
ambgfunあいまい度関数を計算(パルス列を含むあらゆる波形)—
pambgfun周期あいまい度関数を計算(CW/周期波形)—

パターン

要件からのパラメーター導出

すべての波形パラメーターはシステム要件から導出し、ハードコードしないでください。

fc = 10e9;                              % carrier frequency
rangeRes = 20;                          % required range resolution (m)
maxRange = 80e3;                        % max unambiguous range (m)
maxVel = 300;                           % max target velocity (m/s)

lambda = freq2wavelen(fc);
bw = rangeres2bw(rangeRes);             % bandwidth from range resolution
c = physconst('LightSpeed');
prfMax = c / (2 * maxRange);            % max PRF from range ambiguity
fdMax = 2 * speed2dop(maxVel, lambda);  % TWO-WAY Doppler (speed2dop is one-way)
tbp = 50;                               % time-bandwidth product
pw = tbp / bw;                          % pulse width from TBP

PRF の競合: fdMax > prfMax の場合、速度要件が要求する PRF は距離要件が許容する PRF より高くなり、両方を満たす単一の PRF はありません。単一 PRF の設計で進めないでください。 競合を提示し、トレードオフ(距離と速度)を説明したうえで、スタガード PRF または曖昧さ解消を伴う中 PRF を推奨してください。波形コードを生成する前に、どの方法を希望するかユーザーに確認してください。波形オブジェクトはスタガード動作用に PRF をベクトルとして受け取りますが、曖昧さ解消の戦略はシステムレベルの課題です。「エスカレーション/境界条件」を参照してください。

コードを生成する前に、以下を確認してください:

  • PulseWidth <= 1/PRF(パルスが PRI 内に収まる)
  • SampleRate / PRF が整数(PRI あたりのサンプル数が整数)
  • 位相符号化の場合:SampleRate * ChipWidth が整数
  • サンプルレート:fs = ceil(8*bw / prf) * prf により、オーバーサンプリングに加えて PRI あたりのサンプル数が整数になることを保証します

主ローブの広がりの補正: テーパー処理(窓関数を適用した MF または NLFM)を使用する場合: bwComp = rangeres2bw(rangeRes, 'RangeBroadening', broadeningFactor)(Taylor では約 1.3 倍)。

定常位相法による NLFM 設計

nlfmspec2freq を使用して、所望のスペクトル形状から周波数プロファイルを計算し、それを phased.CustomFMWaveform に渡します。phased.NonlinearFMWaveform では使用しないでください(組み込みのタイプが固定されているため)。

% Design NLFM waveform with low sidelobes
bw = 5e6;
nSamples = 500;
desiredSpectrum = taylorwin(nSamples, 4, -40);
freq = nlfmspec2freq(bw, desiredSpectrum);

wav = phased.CustomFMWaveform( ...
    'PulseWidth', 10e-6, ...
    'SampleRate', 10e6, ...
    'FrequencyModulation', freq);

TBP と PSL のトレードオフ: 定常位相近似ではフレネルリップルが生じ、達成可能な PSL が制限されます。設計スペクトル(例:Taylor ウィンドウ)は上限を定めますが、実際の PSL は常に設計 SLL より悪くなります。TBP が大きくなるほど、その差は小さくなります。TBP が小さい場合(< 100)は、PSL が設計目標を大幅に上回ることを想定してください。TBP が大きい場合(200 以上)は、PSL が設計 SLL に近づきます。

達成された PSL が目標を満たさない場合、ウィンドウパラメーターや設計の調整を繰り返さないでください。この差は、その TBP における定常位相法の根本的な制約です。代わりに、次のトレードオフの選択肢を提示してください:

  • パルス幅または帯域幅を増やして TBP を大きくする
  • 窓関数を適用した整合フィルターに切り替える(目標 SLL にかかわらず目標 PSL を達成できますが、SNR 損失は目標 SLL が大きいほど増加します)
  • システム要件を満たす場合は、達成された PSL を受け入れる
パルスオブジェクトからの CW(デューティサイクル 100%)

変調タイプに対応する専用 CW オブジェクトがない場合は、PRF = 1/PulseWidth としたパルス波形オブジェクトを使用し、パルスが PRI 全体を占めるようにします。

DutyCycle = 1 は使用しないでください — すべてのパルス波形オブジェクトでエラーになります。代わりに、PRF をパルス幅の逆数に設定してください。

% Phase-coded CW using Legendre sequence
seq = legendreseq(127);
chipWidth = 1e-6;
prf = 1/(numel(seq) * chipWidth);  % 100% duty cycle
wav = phased.PhaseCodedWaveform( ...
    'Code', 'Custom', ...
    'CustomCode', seq, ...   % Do NOT set NumChips — inferred from vector length
    'ChipWidth', chipWidth, ...
    'PRF', prf, ...
    'SampleRate', 10e6);

重要: Code='Custom' の場合、NumChips は絶対に設定しないでください。チップ数は CustomCode ベクトルの長さから推定されます。NumChips を明示的に設定すると警告が発生し、予期しない動作を引き起こす可能性があります。

PMCW(位相変調連続波): PMCW はデューティサイクル 100% の位相符号化 CW です。PRF = 1/(numel(code) * ChipWidth) として設定してください。ユーザーが「PMCW」と言った場合は、CW として扱ってください。PMCW の文脈での PRI は符号の繰り返し間隔を意味し、送信休止時間を伴うパルス送信ではありません。

波形オブジェクトとしてのカスタム IQ(外部データまたは構成したハイブリッド)

phased.PhaseCodedWaveform の Code='Custom' を使用すると、ハードウェアから取得したデータ、ファイルから読み込んだデータ、または他の波形を組み合わせたり変更したりして構成したデータ(例:通信の位相変調を埋め込んだ LFM)を問わず、あらゆる複素 IQ ベクトルをツールボックスのエコシステムに組み込めます。名前にかかわらず、CustomCode は位相値だけでなく、あらゆる複素数値ベクトルを受け取ります。Custom コードを使用する場合は NumChips を設定しないでください。ベクトルの長さから推定されます。

% Example: LFM + communication phase encoding as a toolbox object
wfLFM = phased.LinearFMWaveform('SampleRate', fs, 'PulseWidth', pw, ...
    'SweepBandwidth', bw, 'PRF', prf);
xLfm = wfLFM();
xHybrid = xLfm(1:nPulse) .* exp(1j * commPhaseVector);

wfHybrid = phased.PhaseCodedWaveform( ...
    'Code', 'Custom', ...
    'CustomCode', xHybrid, ...
    'ChipWidth', 1/fs, ...
    'SampleRate', fs, ...
    'PRF', prf);

% Now usable with toolbox processing
mfCoeffs = getMatchedFilter(wfHybrid);

ラップしない場合: IQ の曖昧さ解析だけが必要な場合は、ambgfun(iq, fs, prf) に直接渡してください。オブジェクトは不要です。ラッパーは、ツールボックスとの統合(整合フィルター、距離処理など)が必要な場合にのみ使用してください。

サイドローブの低減

状況に応じて、次の3つの方法があります。

1. 時間領域の窓付き整合フィルター(信頼性が高く、どの波形でも使用可能):

整合フィルターの係数に直接窓を適用します。どの TBP でも目標 PSL を確実に達成できますが、ミスマッチ損失が発生します(目標が -35 dB の場合は約 3 dB、-40 dB の場合は約 4 dB)。PSL を正確に測定するには、SampleRate >= 8 * bandwidth を使用してください。

wav = phased.LinearFMWaveform('PulseWidth', 10e-6, 'SweepBandwidth', 5e6, ...
    'SampleRate', 40e6, 'PRF', 1e4);
mfCoeffs = getMatchedFilter(wav);
N = numel(mfCoeffs);
tWin = taylorwin(N, 4, -40);  % target -40 dB PSL
mf = phased.MatchedFilter('Coefficients', mfCoeffs .* tWin);

SpectrumWindow プロパティに関する注意: phased.MatchedFilter の SpectrumWindow プロパティは、周波数領域でスペクトル重み付けを適用します。テストでは、指定した dB 減衰量の約 50% しか達成できないことが示されています(例:Taylor-40 の仕様に対し、実際の PSL は約 -20 dB)。PSL を正確に制御する必要がある場合は、時間領域で係数に窓を適用してください。

2. NLFM(本質的にサイドローブが低く、SNR 損失なし):

上記の NLFM 設計パターンで、nlfmspec2freq と CustomFMWaveform を使用します。窓付き整合フィルターとは異なり、SNR 損失はありません。主ローブは広がります(広がりの程度はスペクトルのテーパー形状によって異なります)。目標 PSL に近づけるには、十分な TBP が必要です。

3. 自己相関特性の良い位相符号:

中程度の長さで深い PSL(< -30 dB)を得るには、pnkcode を使用します。legendreseq で達成できる PSL は約 -17 dB です。選択方法については、references/phase-code-reference.md を参照してください。

曖昧度関数の解析

曖昧度関数の形状が波形の選択を左右します。

形状特性使用する状況
稜線(LFM)ドップラー耐性があります。シフトによって距離オフセットが生じますが、SNR 損失はありません未知のドップラーに対するロバスト性が必要な場合。速度を別の手段で求める場合
親指状(位相符号化波形の一部、最適化された符号)距離とドップラーを明確に分離します同じ波形から曖昧さのない距離とドップラーの両方を得る必要がある場合

波形クラスだけで親指状になると決めつけないでください。位相符号化波形でもドップラーに敏感な場合があります。NLFM は距離サイドローブを改善しますが、遅延とドップラーを分離できるとは限りません。必ず ambgfun の2次元カットで検証してください。

適切な関数を選択してください。単一パルスとパルス列には ambgfun、CW/周期波形には pambgfun を使用します(周期性を利用して、より細かなドップラー分解能を得られます)。

重要: ambgfun にはパルス部分だけでなく、末尾のゼロを含む PRI 全体の出力を渡してください。パルス部分だけを渡すとエラーになります。

sig = wf();          % full PRI — pass this to ambgfun

カットの方向(直感に反する命名): 'Cut' パラメーターが指定するのは、返される軸ではなく、一定に保つ変数です。

カットパラメーター一定に保つ値戻り値用途
'Cut','Doppler'Doppler = CutValue(Hz)[afmag, delay]距離サイドローブ(整合フィルター応答)
'Cut','Delay'Delay = CutValue(s)[afmag, doppler]ドップラー耐性(速度感度)

カットが返す出力は 2つだけ です。カットを指定した場合に3つの出力を要求しないでください。

詳細な使用例とプロットのガイドラインについては、references/analysis-functions.md を参照してください。

ステップ FM 処理

ステップ FM データの処理には、単一の整合フィルターではなく、周波数ステップ間のコヒーレント積分が必要です。各ステップに整合フィルターを適用してから、ステップ間で受信信号を結合し(周波数方向に IFFT)、全帯域幅を合成して細かな距離分解能を実現します。有効帯域幅は NumSteps × FrequencyStep です。コード全体については、references/waveform-objects.md を参照してください。

ストレッチ処理(広帯域 LFM)

目標のおおよその距離が分かっている場合は、広帯域 ADC を避けるために、整合フィルタリングの代わりにストレッチ処理を使用します。LinearFMWaveform でのみ使用できます。

wav = phased.LinearFMWaveform('PulseWidth', 10e-6, 'SweepBandwidth', 100e6);
strproc = getStretchProcessor(wav, 5000, 200);  % refRange, rngSpan
slope = bw / pw;  % sweep slope for range conversion
rng = stretchfreq2rng(beatFreq, slope, refRange);
多項式 NLFM の係数規約

phased.NonlinearFMWaveform の Type='Polynomial' では、多項式が定義するのは位相ではなく、瞬時周波数 です。LFM は線形周波数なので、係数は [0, 1, 0] です。[1, 0, 0] は使用しないでください。これは二次周波数を与えるため、LFM にはなりません。係数の例については、references/waveform-objects.md を参照してください。

受信機のアーキテクチャ

波形のみを基準とした PSL の主張は不完全です。必ず受信機の前提を明記してください。

受信機PSL の動作SNR コスト
純粋な整合フィルター波形によって決まる PSL0 dB(最適)
時間領域窓付き MF目標 PSL を安定して達成約 3-4 dB の不整合損失
Tx ノッチ適用後の全帯域 MF狭いノッチ:窓によって制御、広いノッチ:ギャップによるフロア狭いノッチでは無視できる程度
NLFM(自己整合)TBP によって制限される PSL、Rx 損失なし0 dB
検証出力

すべての波形設計スクリプトで、次の内容を報告してください。

  • 導出された帯域幅と距離分解能
  • PRF、最大非曖昧距離、最大双方向ドップラー
  • PSL(sidelobelevel を使用)と、要件を満たしているかどうか
  • 受信時の重みによる SNR/不整合損失
  • 送信スペクトルのプロット(該当する場合はマスク付き)
  • 目標 PSL の基準線を含むゼロドップラー断面

トラブルシューティングのパターン

  • カスタムコードの警告 → NumChips を設定しない(ベクトルから推定されます)
  • PSL が低い → SampleRate >= 8*bandwidth と、sidelobelevel への入力が dB であることを確認する
  • PRF/サンプルレートのエラー → SampleRate/PRF が整数であることを確認する
  • ambgfun のサイズエラー → パルス部分だけでなく、wf() から得られる PRI 全体を渡す
  • ドップラーの誤り → レーダーの双方向ドップラーには 2*speed2dop を使用する
  • 位相符号化の構築エラー → SampleRate*ChipWidth が整数であることを確認する

全項目については references/common-mistakes.md を参照してください。

複数ステップの推論例

  • 「分解能 > ADC 帯域幅」 → ストレッチ処理(距離が既知の場合)またはステップド FM(そうでない場合)
  • 「CW NLFM」 → CustomFMWaveform + PRF=1/PulseWidth + nlfmspec2freq → pambgfun
  • 「深い PSL + ドップラー耐性」 → LFM + 時間領域窓付き MF(SNR コスト約 3-4 dB)

規約

  • 常にツールボックスの System オブジェクトと関数を使用してください。手動の exp(1j*...) やカスタムの系列ジェネレーターは使用しないでください(構築ルールを参照)。
  • 対話的な波形の検討には、常に radarWaveformGenerator を推奨してください(R2026a が必要です)。
  • 位相符号化波形では、コードを推奨する前に、バイナリとポリフェーズの制約を明確にしてください(references/phase-code-reference.md を参照)。
  • サイドローブ目標が指定されている場合は、ゼロドップラー断面に yline(targetPSL, 'r--') を追加し、合否を視覚的に確認できるようにしてください。

参考資料

  • references/waveform-objects.md — 8 種類の波形オブジェクトと、そのプロパティおよび制約
  • references/phase-code-reference.md — コードの種類、バイナリとポリフェーズ、NumChips の制約
  • references/analysis-functions.md — ambgfun、pambgfun、sidelobelevel の使用方法の詳細
  • references/common-mistakes.md — よくある間違いと修正方法の全項目
  • references/spectral-notching.md — 干渉回避のためのスペクトルノッチング、shapespectrum API

Copyright 2026 The MathWorks, Inc.

コメント