如何使用 SciPy 为Moku Laser Lock Box 生成自定义过滤器?
Laser Lock Box 自定义过滤器
Moku Laser Lock Box 在设定点上游和信号被分成快路径和慢路径之前实现了一个滤波器。除了低通和带阻形状外,还可以使用用户提供的系数实现自定义滤波器。
定制 IIR 滤波器由四个级联的直接型 I 二阶部分实现,并带有最终输出增益级。总传递函数由以下公式给出:
要指定滤波器,您必须提供包含滤波器系数的文本文件。该文件每行应有六个系数,每行代表一个阶段。如果需要输出缩放,则应在第一行给出:
g(可选) | 7.8357416 | |||||
第一阶段 | 1.0000000 | 0.0044157 | 0.0088314 | 0.0044157 | -1.669291 | 0.969226 |
第 2 阶段 | 1.0000000 | 0.0472217 | 0.0944434 | 0.0472217 | -1.898858 | 0.9341904 |
第 3 阶段 | 1.0000000 | 0.0375275 | 0.0750551 | 0.0375275 | -1.9259771 | 0.9311308 |
⋮ |
s | 博 | b1 | b2 | a1 | a2 |
条目应该用逗号分隔,例如
7.8357416974, 1.0000000000, 0.0044157, 0.0088314, 0.0044157, -1.669291, 0.969226, 1.0000000000, 0.0472217, 0.0944434, 0.0472217, -1.898858, 0.9341904, 1.0000000000, 0.0375275, 0.0750551, 0.0375275, -1.9259771, 0.9311308,
每个系数必须在 [-4.0, +4.0) 范围内。在内部,这些系数表示为有符号的 48 位定点数,具有 45 个小数位。输出缩放比例最高可达 8,000,000。
滤波器采样率取决于所使用的设备:
Moku Pro-78.125 MHz
Moku实验室 - 31.25 MHz
Moku Go - 7.8125 MHz
滤波器系数可以使用信号处理工具箱来计算。例如,我们可以使用 scipy 包为Moku Lab 生成二阶巴特沃斯滤波器的系数,如下所示:
从 scipy 进口 信号
进口 numpy 定义 gen_butterworth(角点频率): “”” 产生 系数 为了 一个 第二 命令 巴特沃思 低通 筛选。 角落 频率 应该 是 在 这 范围: 1 千赫 < 角落 频率 < 31.25 MHz 为了 Moku 实验室。 “”” 采样率 = 31.25e6 b, 一个 = 信号.黄油(2, 角频率, '低的', 模拟 = 错误的, 文件系统 = 采样率) 系数 = [[1.0, b[0], b[1], b[2], 一个[1], 一[2]]] numpy.savetxt(“系数.txt”, 系数, 分隔符=",")
也可以使用 API 调用来设置滤波器系数,请参阅set_custom_filter 。