关于 matlab-generate-5g-waveform
面向 MATLAB 的技能,指导使用 `nrWaveformGenerator` 生成符合标准的 5G NR 下行和上行波形,适用于测试测量、仿真与验证,并涵盖配置及布局约束。
主要功能
- 01生成下行与上行波形
- 02生成 5G NR 测试模型和 FRC 波形
- 03配置载波与带宽部分
- 04提供波形验证指导
适用场景
- 01创建 PDSCH 或 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 numerology 不同,构造函数会添加专用的 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)必须手动调整大小。还有一个不明显的注意事项:在 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 burst 时无需添加
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 一个);只有在查看完整载波时才使用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.