LTspice集成Python处理信号
首先,使用Python创建一个信号,然后,通过一个 LTspice 滤波器电路运行它,同时我们在 python 中控制一些滤波器的可调参数,最后,使用Python绘制结果。
我们打开 LTspice 并创建一个如下所示的电路,并将其保存为“ficircuit.asc”。
重点是:
- 电压源被配置为“回放”在尚不存在的、即将自动生成的输入文件 (“sig_in.csv”) 中定义的信号
- 电路的电压输出必须标记为“vout”
- 框中的命令,告诉 LTspice 包含来自external .txt 文件的参数以及定义瞬态仿真的停止时间和时间步长的 .tran 命令
电路的其余部分稍后可以根据您自己的需要进行更改。 请注意,我们示例电路中的电容器和电感器尚未定义值,但它们的值设置为变量“C”和“L”(我们将在 python 代码中设置)。
我们设计了过滤器。 现在我们关闭 LTspice 并在 python 中完成剩下的工作。 让我们创建一个python脚本:
结果绘图如下:
快速卷积滤波器
针对上述信号处理速度太慢,在此设计以恶快速卷积滤波器。假设您在 LTSpice 中为您的高保真系统设计了一个均衡器,如下,就是通过电路播放 wav 文件时的声音。
工作原理
但是,如果我们的滤波器/电路是线性时不变系统系统(LTI),我们可以使用一个技巧,简而言之,LTI 系统是由无源元件和理想(非饱和)运算放大器构成的一切。 那么我们的滤波器可以完全由它的脉冲响应函数 h(t) 来表征。
示例1:快速卷积滤波器
sample_width=100e-3
delta_t=0.1e-3
samples = int(sample_width/delta_t)
time = np.linspace(0,sample_width,samples)
signal_a = 0 + 1*((time > 10e-3) * (time < 30e-3)) + 2.5*((time > 40e-3) * (time < 70e-3))
filter_configuration = {
"C":100e-6,
"L":200e-3
}
dummy, signal_b = apply_ltspice_filter(
"ficircuit.asc",
time, signal_a,
params = filter_configuration
)
结果绘图:
十个不同的输入脉冲,眨眼间全部由卷积滤波器处理。 根本没有调用 LTspice。
示例2:快速卷积滤波器应用于音频
我们看到卷积滤波器方法对于处理大量短输入信号很有用。 但是一个很长的输入信号呢,例如,音频文件? 我下载了一个很好的示例 .wav 文件来测试我们的过滤器。 音频处理电路图如下:
源代码
详情参阅 - 亚图跨际
|