matlab-generate-5g-waveform について
`nrWaveformGenerator`を使った、標準準拠の5G NR上下リンク波形生成を支援するMATLABスキルです。測定、シミュレーション、検証に向けた設定やレイアウト上の注意点を案内します。
主な機能
- 01上下リンク波形の生成
- 025G NRテストモデルとFRC波形の生成
- 03キャリアと帯域幅部分の設定
- 04波形検証のガイダンス
活用シーン
- 01PDSCHまたはPUSCHテスト波形の作成
- 02帯域幅とサブキャリア間隔の設定
- 03参照チャネル波形の生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-generate-5g-waveformインストール後、Claude Code で/matlab-generate-5g-waveformを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
manifest.yamlreferences/api-reference.mdcritical-rules.mddocumentation-links.mdmulti-bwp-guidance.mdnarrow-band-manual-config.mdpatterns.mdtest-models-and-frc.md詳細
5G NR 波形を生成する
nrWaveformGenerator を使用して、テストおよび測定、シミュレーション、検証向けの標準準拠 5G NR ダウンリンクおよびアップリンク波形を生成します。
使用する場合
- 5G、NR、または New Radio の波形を生成する場合(DL:PDSCH、PDCCH、SSBurst、CSI-RS;UL:PUSCH、PUCCH、SRS)
- NR テストモデル(TM)または固定基準チャネル(FRC)の波形を生成する場合
- 帯域幅、SCS、変調、電力、または複数帯域幅パートの配置を設定する場合
使用しない場合
- チャネルモデリングまたは伝搬 —
nrCDLChannel、nrTDLChannelを使用してください - 受信機の処理または復号 —
nrPDSCHDecode、nrDLSCHDecoderを使用してください - リンクレベルのエンドツーエンドシミュレーション
API の選択
| 必要なもの | API |
|---|---|
| カスタム DL 波形 | nrDLCarrierConfig + nrWaveformGenerator |
| カスタム UL 波形 | nrULCarrierConfig + nrWaveformGenerator |
| 標準テストモデル(TM)または FRC | hNRReferenceWaveformGenerator |
波形生成にプリミティブレベルの関数(nrCarrierConfig + nrPDSCH +
nrOFDMModulate)を使用しないでください。また、プリミティブの設定オブジェクト(nrPDSCHConfig、nrPUSCHConfig、nrCarrierConfig)を
nrWaveformGenerator と組み合わせないでください。nrWavegen* オブジェクトを使用してください。nrWaveformGenerator
は、チャネルの多重化、電力スケーリング、OFDM 変調を適切に処理します。
関数の完全なカタログ、プロパティ名、互換性のないオブジェクトの表については、
references/api-reference.md を参照してください。
コアワークフロー(カスタム DL/UL)
- 簡略化されたコンストラクターでキャリア設定を作成します(R2026a 以降)。このコンストラクターは、SCSCarriers、BandwidthParts、SSBurst/CORESET(DL)、および帯域幅に合わせたデフォルトの PDSCH/PUSCH を自動的にサイズ調整します。
cfg = nrDLCarrierConfig('FR1', 20, 30); % DL: FR1, 20 MHz, 30 kHz SCS
cfg = nrULCarrierConfig('FR1', 20, 15); % UL: FR1, 20 MHz, 15 kHz SCS
DL の場合、要求された SCS がデフォルトの SSB ニューメロロジーと異なると、コンストラクターは専用の SSB SCS キャリアを追加します(例:nrDLCarrierConfig('FR1', 5, 30) は非表示の 15 kHz キャリアを追加します)。R2026a より前のバージョンを使用する場合、または SCS キャリアの数を正確に制御する場合は、nrDLCarrierConfig(引数なし)を使用して手動で作成してください。
-
タスクに必要なものだけをカスタマイズします(以下のルールを参照)。
cfg.PDSCH{1}.Modulation = '64QAM';のように、デフォルト以外の値を設定します。コンストラクターが設定した値を異なる値で上書きしないでください(例:コンストラクターが中央に配置したNStartBWP = 0を強制するなど)。検証済みの配置が壊れます。 -
生成します —
validateConfigは構造上のルールを確認しますが、チャネルの競合(重複する PDSCH/CSI-RS、CSI-RS/SSBurst)は検出しません。必ずジェネレーターを実行してください。ジェネレーターは波形とリソースグリッド情報を返します。
[waveform, info] = nrWaveformGenerator(cfg);
簡略化されたコンストラクターが作成する設定は、そのまま生成に使用できます。編集していない nrDLCarrierConfig(fr, bw, scs) または nrULCarrierConfig(fr, bw, scs) は、FR1/FR2 のすべての帯域幅/SCS の組み合わせで波形を生成するため、設定内容を再確認する必要はありません。これは、引数なしの nrDLCarrierConfig / nrULCarrierConfig には当てはまりません。これらのデフォルト(15 kHz、Case A SSB、52 RB の PRBSet)は手動でサイズ調整する必要があります。注意が必要な例外が 1 つあります。3 MHz / 15 kHz では SSB が 15 RB キャリアより広いため、PBCH がパンクチャされます。これは想定された動作です。SSB はそのままにしてください(詳細は「重要なルール」を参照)。手動で作成または変更したものについては、重要なルールを確認してください。対象となるのは、引数なしで作成した(手動の)キャリア、編集した NSizeGrid/BWP/CORESET/PRBSet、BlockPattern の上書き、追加した SCS キャリアまたは BWP(Point A のセンタリング)、BWP をまたぐ CSI-RS または PDCCH、あるいは 2 つのコードワード(レイヤー/DM-RS)です。これらの変更は、生成時に最も多くのエラーを引き起こします。
タスクに必要なものだけを設定する
タスクで必要なプロパティをすべて設定してください。指示に明記されていなくても、要求された機能によって必須となるパラメーターを含め、それ以外は設定しないでください。たとえば、2 つのコードワード → NumLayers が 5~8 → 4 ポートを超える数に対応した DM-RS(重要なルールを参照)、CSI-RS の要求 → CSIRS{1}.Enable = true(デフォルトではオフ)です。これらは必須設定であり、過剰な設定ではありません。SSBurst はデフォルトですでに有効なため、SS バーストを要求された場合でも Enable の行は不要です。
レシピとリファレンス
タスクに合ったリファレンスを開いてください。いずれもそのままコピーでき、動作確認済みのコードを掲載しています。
- 一般的な単一キャリア波形(デュアルグリッドプロット付きの基本的な DL、基本的な UL、電力スペクトル):references/patterns.md
- 狭帯域 11-RB キャリア、手動ビルド専用(5 MHz/30 kHz、10 MHz/60 kHz)。簡易コンストラクターではすでに対応しているため、これを使う場合はこのリファレンスをスキップしてください。引数なしのビルド(R2026a より前、または SSB キャリアの自動追加を避ける場合)でのみ開いてください。この場合、デフォルト設定では不十分なため、
NSizeGrid = 11、SSB の無効化または移設、CORESET の縮小、AL1、および明示的なPRBSetが必要です:references/narrow-band-manual-config.md - マルチ BWP/マルチニューメロロジーのレイアウト:references/multi-bwp-guidance.md
- テストモデル(TM)と固定リファレンスチャネル(FRC) — ヘルパー関数
hNRReferenceWaveformGenerator(RC, BW, SCS)(例:'DL-FRC-FR1-64QAM'、'NR-FR1-TM1.1')を使い、その後generateWaveformとdisplayResourceGridを実行します。これはデフォルトではパス上にありません。まず、ポータブルなセットアップ(setupExample('5g/NRTestModelWaveformGenerationExample', ...)+copyfile+cd、またはopenExample)で利用可能にしてください。ハードコードしたパスや、作り出した名前空間付きの名前は使用しないでください。有効な名前、ポータブルなセットアップ用ブロック、およびmakeConfigWritableの編集方法:references/test-models-and-frc.md - 完全な API カタログと出力構造(
infoのフィールド、正しいプロパティ名):references/api-reference.md - オンラインドキュメントへのリンク:references/documentation-links.md
規約
- 波形を生成した後は、ユーザーから特定の指定がない限り、次のことを行います。
- 波形変数の名前と、その変数がワークスペースにあることをユーザーに伝えます。
info.ResourceGrids(k).ResourceGridBWP(BWP サイズで、BWP ごとに 1 つ)からリソースグリッドをプロットします。ResourceGridInCarrierはキャリア全体を表示する場合にのみ使用します。SS バーストは独立したグリッドです。SSBurst.Enableが true で、SS バーストの出力が求められている場合は、info.ResourceGridSSBurst.ResourceGridもプロットします(これはResourceGridBWPの一部ではありません)。- 生成コードを
.mスクリプトとして保存し、edit('scriptName.m')で MATLAB エディターに表示します。
- 可能な場合は、簡易コンストラクター
nrDLCarrierConfig('FR1', bw, scs)から始めます。 - 正しいプロパティ名:
DMRSPower(PowerDMRS ではありません)、PTRSPower(PowerPTRS ではありません)、NSizeGrid(NRB ではありません)、ChannelBandwidth(Bandwidth ではありません) SCSCarriers、BandwidthParts、CORESET、PDSCH、PUSCHはセル配列です。{}を使用してください。SSBurstは直接オブジェクトです。{}ではなく.を使用してください。- 複数パネルの図には
tiledlayout/nexttileを使用します。軸には必ず単位を付けてラベルを付け、図のタイトルも含めます。 - 分かりにくく相互に依存する設定(
NSizeGridの値を選んだ理由、SSBurst を無効にする理由、特定のAggregationLevelを選ぶ理由など)にはコメントを付け、コードだけで意図が伝わるようにします。
Copyright 2026 The MathWorks, Inc.