理想带阻滤波器python代码
时间: 2023-07-09 20:06:46 浏览: 126
以下是一个简单的理想带阻滤波器的Python代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义理想带阻滤波器函数
def ideal_bandstop_filter(signal, fs, f_cutoff_low, f_cutoff_high):
# 计算归一化频率
w_cutoff_low = f_cutoff_low / (fs / 2)
w_cutoff_high = f_cutoff_high / (fs / 2)
# 计算滤波器的频率响应
frequency_response = np.ones(len(signal))
for i in range(len(signal)):
if w_cutoff_low < i / len(signal) < w_cutoff_high:
frequency_response[i] = 0
# 应用频率响应到信号中
filtered_signal = np.fft.ifft(np.fft.fft(signal) * frequency_response)
return filtered_signal.real
# 生成测试信号
fs = 1000
t = np.linspace(0, 1, fs, endpoint=False)
signal = np.sin(2 * np.pi * 50 * t) + np.sin(2 * np.pi * 150 * t) + np.sin(2 * np.pi * 300 * t)
# 应用理想带阻滤波器
filtered_signal = ideal_bandstop_filter(signal, fs, 100, 200)
# 绘制结果
plt.figure(figsize=(10, 6))
plt.subplot(2, 1, 1)
plt.plot(t, signal)
plt.title('Original Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.subplot(2, 1, 2)
plt.plot(t, filtered_signal)
plt.title('Filtered Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.tight_layout()
plt.show()
```
在这个示例中,我们定义了一个名为 `ideal_bandstop_filter` 的函数,该函数接受一个信号、采样率和两个截止频率作为输入,并返回一个经过理想带阻滤波器处理后的信号。该函数的实现基于理想带阻滤波器的频率响应,即在截止频率之间的所有频率上,将频率响应设置为零,以削减这些频率分量。
我们还生成了一个测试信号,该信号包含三个不同频率的正弦波。然后,我们将该信号传递给 `ideal_bandstop_filter` 函数,并使用 `matplotlib` 库显示原始信号和经过滤波器处理后的信号的图形。
阅读全文