跳转至

插值波形

运行离线示例:

python3 examples/user/analog_interpolated_waveform.py

当测量或设计得到的控制采样点需要形成平滑曲线,而不是用直线逐段连接时,使用 Waveform.interpolated():

from cascaqit import AHSProgram, AtomRegister, MockNeutralAtomTarget, Waveform

program = AHSProgram(AtomRegister.line(count=1, spacing=5.0))
target = MockNeutralAtomTarget.v0_2()
omega = program.parameter("omega", default=3.0)
program.drive(
    rabi=Waveform.interpolated(
        times=(0.0, 0.2, 0.7, 1.0),
        values=(0.0, omega, omega / 3.0, 0.0),
    ),
    detuning=Waveform.constant(0.0, duration=1.0),
    phase=0.0,
).measure()

result = program.bind({}).run(
    target=target,
    shots=32,
    seed=31,
    time_steps=256,
)

插值算法固定为 PCHIP(分段三次 Hermite 保形插值):曲线经过每个声明采样点,并避免无约束三次样条的过冲。时间必须从 0.0 开始,至少包含两个有限且严格递增的采样点,最后一个时间就是 waveform duration。值可以使用统一的 Parameter 和 Expression,在 bind() 时转为数值。需要显式选择 MockNeutralAtomTarget.v0_2();冻结的 v0.1 target 不声明支持该能力。

校验、离散化、离线编译、脉冲可视化、可扩展理想模拟、精确 density 演化、trajectory 演化和 Hybrid 执行都会保留 kind="interpolated" 及 metadata["interpolation_method"] == "pchip"。运行时会缓存插值系数,不会在每个 solver step 重建曲线。

concat() 会拒绝插值波形,因为跨新接缝重新拟合会改变原曲线斜率;应直接在完整时间域上构造一条插值波形。可选 Pulser reference adapter 尚不声明支持这一原生插值语义,会在执行前明确拒绝。该路径不创建硬件 payload、云提交或生产调度。

SDK 1.0.8a · `6eff6362`