mcpField
M
matlab-generate-5g-waveform

matlab-generate-5g-waveform

github.com/matlab其他1.2k85 次安装1 天前更新
代码仓库

关于 matlab-generate-5g-waveform

面向 MATLAB 的技能,指导使用 `nrWaveformGenerator` 生成符合标准的 5G NR 下行和上行波形,适用于测试测量、仿真与验证,并涵盖配置及布局约束。

主要功能

  1. 01生成下行与上行波形
  2. 02生成 5G NR 测试模型和 FRC 波形
  3. 03配置载波与带宽部分
  4. 04提供波形验证指导

适用场景

  1. 01创建 PDSCH 或 PUSCH 测试波形
  2. 02配置带宽和子载波间隔
  3. 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.yaml
references/
api-reference.md
critical-rules.md
documentation-links.md
multi-bwp-guidance.md
narrow-band-manual-config.md
patterns.md
test-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)或 FRChNRReferenceWaveformGenerator

不要使用原始级函数(nrCarrierConfig + nrPDSCH + nrOFDMModulate)生成波形,也不要将原始配置对象(nrPDSCHConfig、nrPUSCHConfig、nrCarrierConfig)与 nrWaveformGenerator 混用——请使用 nrWavegen* 对象。nrWaveformGenerator 会正确处理信道复用、功率缩放和 OFDM 调制。 完整的函数目录、属性名称和不兼容对象表: references/api-reference.md。

核心工作流(自定义 DL/UL)

  1. 创建载波配置,使用简化构造函数(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(不带参数)手动构建。

  1. 仅自定义任务所需的内容(见下方规则)。设置 非默认值,例如 cfg.PDSCH{1}.Modulation = '64QAM';。绝不要用其他值覆盖构造函数已设置的值(例如,在构造函数已将 NStartBWP 居中时强制将其设为 0)——这会破坏经过验证的布局。

  2. 生成——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

约定

  • 生成波形后,除非用户另有具体要求:
    1. 告知用户波形变量名称,并说明该变量位于工作区中
    2. 绘制 info.ResourceGrids(k).ResourceGridBWP 中的资源网格(按 BWP 大小,每个 BWP 一个);只有在查看完整载波时才使用 ResourceGridInCarrier。SS 突发是一个独立网格——当 SSBurst.Enable 为 true 且用户要求提供 SS 突发时,也绘制 info.ResourceGridSSBurst.ResourceGrid(它不属于 ResourceGridBWP)
    3. 将生成代码保存为 .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.

评论

支持 Markdown