我可以为激光锁箱中的低通滤波器设置较低的转折频率吗?
Moku:Lab激光锁箱使用 2 级二阶 IIR 滤波器。在 iPad 应用程序中,滤波器默认仅使用 1 级或 2 级二阶滤波器。由于计算过程中位数有限,因此将我们的转角限制在 ~1 kHz。为了获得具有较低转角频率的滤波器,可以手动加载 2 级一阶滤波器,该滤波器应在 1 Hz 或以下工作。
要手动加载自定义滤波器,请在滤波器配置器中选择自定义滤波器类型,然后从 SD 卡、剪贴板或我的文件中的 .txt 文件加载滤波器系数,如下面的屏幕截图所示。

该 .txt 文件应有两行、六列,格式如下:
| s1 | b0.1 | b1.1 | b2.1 | a1.1 | a2.1 |
| s2 | b0.2 | b1.2 | b2.2 | a1.2 | a2.2 |
s1 和 s2 表示第 1 阶段和第 2 阶段的总增益。bx.1 到 ax.1 表示第 1 阶段的滤波器系数,bx.2 到 ax.2 表示第 2 阶段的滤波器系数。这些滤波器系数可以通过 Python scipy 或带有信号处理工具箱的 MATLAB 生成。在这里,我们提供了一个 Python 脚本来生成 .txt 文件。
进口 numpy 作为 NP
进口 matplotlib.pyplot 作为 血小板
从 scipy 进口 信号
进口 数学
定义 主要的():
角频率 = 1 #在 赫兹
filter_type = 1 #1 为了 第一的 命令 2阶段, 2 为了 第二 命令 1阶段
生成滤波器数组(角频率,滤波器类型, 阴谋 = 错误的)
定义 生成滤波器数组(角频率、滤波器顺序、图):
采样率 = 31.25e6
标准化角 = 角频率 / (采样率 / 2)
如果 过滤顺序 == 1:
b, 一个 = 信号.黄油(1, 标准化角, '低的', 模拟 = 错误的)
一个 = np.append(a,0)
b = np.append(b,0)
gen_coe_array(b, 一个, filter_order,str(corner_frequency)+'Hz'+str(filter_order)+'order_filter')
如果 阴谋 == 真的:
plot_fra(b,a,过滤顺序)
elif 过滤顺序 == 2:
b, 一个 = 信号.黄油(2, 标准化角, '低的', 模拟 = 错误的)
gen_coe_array(b,a,filter_order,str(corner_frequency)+'Hz'+str(filter_order)+'order_filter')
如果 阴谋 == 真的:
plot_fra(b,a,过滤顺序)
定义 plot_fra(b,a,顺序):
瓦, 时长 = 信号.频率(b, 一个, 工作 = 2048*2048)
如果 命令 == 1:
时长 = np.multiply(h,h)
plt.semilogx(w*采样率/math.pi/2, 20 * np.log10(np.absolute(h)))
plt.title('巴特沃斯 筛选 频率 回复')
plt.xlabel('频率 [赫兹]')
plt.ylabel('振幅 [分贝]')
plt.grid(其中='both', 轴='both')
plt.显示()
定义 gen_coe_array(b,a,订单,名称):
如果 命令 == 1:
系数数组 = [[1.0, b[0], b[1], 0, 一个[1], 0],
[1.0, b[0], b[1], 0, 一个[1], 0]]
elif 命令 == 2:
系数数组 = [[1.0, b[0], b[1], b[2], 一个[1], a[2]],
[1.0, 1.0, 0.0, 0.0, 0.0, 0.0]]
np.savetxt(名称 +'.txt',系数数组, 分隔符 = “,”)
如果 __姓名__ == '__主要的__':
主要的()