Как сделать оконный полосовой фильтр сигнала на Python? Здравствуйте.
Есть какой-то сложный сигнал. В нем есть очень много частот (от 0 до 100, например), это можно получить с помощью преобразования Фурье. Но требуется оставить только определенные частоты (например, от 10 до 50) и вывести сигнал обратно только уже с этими определенными частотами.
Недавно узнал про оконный полосовой фильтр. Не знаете, как сделать его на Python?

21 Авг 2019 в 06:03
193 +1
0
Ответы
1

Для создания оконного полосового фильтра на Python вы можете использовать функцию scipy.signal.firwin из библиотеки SciPy. Вот пример кода, который показывает, как создать и применить такой фильтр:

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import firwin, lfilter
# Генерация тестового сигнала
fs = 1000 # Частота дискретизации
t = np.arange0,1,1/fs0, 1, 1/fs0,1,1/fs signal = np.sin2∗np.pi∗20∗t2 * np.pi * 20 * t2np.pi20t + np.sin2∗np.pi∗40∗t2 * np.pi * 40 * t2np.pi40t + np.sin2∗np.pi∗60∗t2 * np.pi * 60 * t2np.pi60t
# Создание оконного полосового фильтра
cutoff = 10,5010, 5010,50 # Частоты среза
numtaps = 101 # Длина фильтра
b = firwinnumtaps,cutoff=cutoff,fs=fs,passzero=Falsenumtaps, cutoff=cutoff, fs=fs, pass_zero=Falsenumtaps,cutoff=cutoff,fs=fs,passz ero=False
# Применение фильтра к сигналу
filtered_signal = lfilterb,1,signalb, 1, signalb,1,signal
# Визуализация исходного и отфильтрованного сигналов
plt.figure plt.plott,signal,label=′Исходныйсигнал′t, signal, label='Исходный сигнал't,signal,label=Исходныйсигнал plt.plott,filteredsignal,label=′Отфильтрованныйсигнал′t, filtered_signal, label='Отфильтрованный сигнал't,filtereds ignal,label=Отфильтрованныйсигнал plt.xlabel′Время′'Время'Время plt.ylabel′Амплитуда′'Амплитуда'Амплитуда plt.legend plt.show

В этом примере мы сначала генерируем тестовый сигнал, затем создаем оконный полосовой фильтр с частотами среза от 10 до 50 Гц и длиной фильтра 101. После этого мы применяем этот фильтр к исходному сигналу с помощью функции lfilter и выводим исходный и отфильтрованный сигналы на одном графике.

Надеюсь, это поможет вам создать оконный полосовой фильтр на Python. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир