Python绘制LTspice仿真趋势图

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:快速卷积滤波器

# our samples shall be 100 ms wide
sample_width=100e-3
# time step between samples: 0.1 ms
delta_t=0.1e-3
samples = int(sample_width/delta_t)
 
time = np.linspace(0,sample_width,samples)
 
# we want 1 V between 10 ms and 30 ms, and 2.5 V between 40 and 70 ms
signal_a = 0 + 1*((time > 10e-3) * (time < 30e-3)) + 2.5*((time > 40e-3) * (time < 70e-3))
 
##################################################
##             apply filter direct              ##
##################################################
 
# all values in SI units
filter_configuration = {
  "C":100e-6, # 100 uF
  "L":200e-3  # 200 mH
}
 
dummy, signal_b = apply_ltspice_filter(
      "ficircuit.asc",
      time, signal_a,
      params = filter_configuration
      )
 
##################################################
##                     plot                     ##
##################################################

结果绘图:

十个不同的输入脉冲,眨眼间全部由卷积滤波器处理。 根本没有调用 LTspice。

示例2:快速卷积滤波器应用于音频

我们看到卷积滤波器方法对于处理大量短输入信号很有用。 但是一个很长的输入信号呢,例如,音频文件? 我下载了一个很好的示例 .wav 文件来测试我们的过滤器。 音频处理电路图如下:

源代码

详情参阅 - 亚图跨际

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值