Отличный заход, сразу в раздел ЧЧ
Я тебе написал на Питоне пример работы фильтра первого порядка.
Он даже интерактивный, для запуска в Jupiter Notebook.
Поиграйся и поймешь, что это такое.
И не хами. Сам подставился, задав так вопрос.
from ipywidgets import interact
import matplotlib.pyplot as plt
import numpy as np
# Параметры сигнала
Fs = 500
T = 1
N = Fs * T
t = np.linspace(0, T, N, endpoint=False)
# Исходный сигнал: 2 синуса + шум
f1 = 177
f2 = 20
signal = (
np.sin(2 * np.pi * f1 * t) +
0.5 * np.sin(2 * np.pi * f2 * t)
)
noise = 0.4 * (np.random.rand(N) - 0.5)
x = signal + noise
# Функция фильтрации и отображения графиков
def plot_filtered(fc=10):
dt = 1 / Fs
RC = 1 / (2 * np.pi * fc)
alpha = dt / (RC + dt)
y = np.zeros_like(x)
y[0] = x[0]
for i in range(1, len(x)):
y[i] = y[i-1] + alpha * (x[i] - y[i-1])
# График сигналов
plt.figure(figsize=(10, 4))
plt.plot(t, x, label="Шумовой сигнал")
plt.plot(t, y, label="Фильтрованный (fc={} Гц)".format(fc))
plt.xlabel("Время, сек")
plt.ylabel("Амплитуда")
plt.title("Фильтрация НЧ (1-го порядка)")
plt.legend()
plt.grid()
plt.tight_layout()
plt.show()
# Спектр
Y = np.fft.fft(y)
freq = np.fft.fftfreq(N, d=1/Fs)
half = N // 2
plt.figure(figsize=(10, 4))
plt.plot(freq[:half], np.abs(Y[:half]) / N, label='Спектр после фильтра')
plt.xlabel("Частота, Гц")
plt.ylabel("Амплитуда")
plt.title("Спектр фильтрованного сигнала")
plt.grid()
plt.legend()
plt.tight_layout()
plt.show()
# Слайдер для частоты среза
interact(plot_filtered, fc=(1, 100, 1));
2All: по цифровым фильтрам хотим короткий ликбез-курс? А то моя лекция по синтаксическому анализу интерес вызвала только у одного человека. И то почти без обратной связи.
Условие простое: для повторения визуальной части ставим VSCode c Питоном и Юпитером. На них удобнее всего показывать и учить ничего не надо, там все очевидно и можно только фильтры смотреть и “играться” параметрами.
Хотя бы трое слушателей если будет - сделаю несколько лекций.
По цифровой фильтрации сигналов интересно.
Но ты тоже должен понимать, что с твоим образованием и интегралы понятны с системой диф уравнений «на глаз».
Если сможешь еще и достаточно доступно объяснить с графиками (хотя бы примитивными) - это однозначно ДА,
ЗЫ: Поясню о чем я. Что такое интеграл (по крайней мере как это понимаю я)? Это площадь криволинейной трапеции, которая « далее по тексту» и график и вот это всё.
Если так сможешь (без пафоса своего обычного) - я за. Если нет, то и зачем начинать?
синтаксический анализ с “пафосом” написан? Нет.
И интегралы для фильтров не обязательно знать. Желательно, но не обязательно. Там интергирование “само” происходит, оно унутре запрятано… рядом с неонкой
Это по Риману… есть еще по Лебегу.
Если я не понимаю о чем «мы говорим» и/или хотя бы не представляю - для меня это «как в темной комнате искать черную кошку»…
Вот такое точно исключить при объяснении. Если захочется (кому-то) сможете потом по дискутировать.
А какой тут может быть пафос? Добавьте, чтобы Ваши прямоугольники с графика были как можно уже (ширина стремилась к нулю) и получите классическое определение интеграла. Какой там может быть пафос?
Евгений Петрович, может быть. И не только пафос )
Короче.
Кто хочет - ставит ВСКод, Юпитер и Питон. Критерий: запускается пример выше из темы.
С этой точки пойдем. Будем создавать и обрабатывать разные сигналы. Глядеть на их внешний вид, параметры и спектры.
Подразумевается именно практический курс. Визуализация - как вариант лабораторок, для тех кто помнит универ.
Если у кого-то трудности с установкой ВСкод с плагинами - скажите. Я список установки для винды и Линуха напишу. Там одинаково.
ЗЫ: Этот мой пример в гугль colab запускается, естественно, онлайн. Для тех, кто не хочет ставить всё локально.
ЗЗЫ: “перевод” в С++ Ардуино, ессно будет. Все инструменты, включая ФФТ, имеют полный перевод в Ардуино. Просто в условиях лабораторки проще моделировать и фильтровать и видеть результат сразу.
Сам фильтр: Выход = (4*Выход + Вход) /5.0
ты же знаешь?
Умные слова: “рекурсивный фильтр первого порядка” я объясню, откуда взялись.
Я же говорю - хочу сделать практику и минимум теории.
может про Вейвлет-преобразования расскажешь?
PS надо же дальше двигаться с генератором для катушки Мишина
А может не надо? Ну пожалуйста…
нельзя отрываться от коллектива, сказали ИИ, значит будем делать ИИ