# Python绘制LTspice仿真趋势图

{% tabs %}
{% tab title="关键词" %}
Python | LTspice | Matplotlib | scipy | Numpy | 电子电路
{% endtab %}

{% tab title="梗概" %}
### 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：快速卷积滤波器

```python
# 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))

# 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
      )
```

结果绘图:

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

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

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

### 源代码
{% endtab %}
{% endtabs %}

{% content-ref url="../zhi-dian-mi-jin-brief" %}
[zhi-dian-mi-jin-brief](../zhi-dian-mi-jin-brief)
{% endcontent-ref %}
