1386 подписчиков
🚀 Потоковая обработка сигналов в скриптах: системные объекты Engee!
Когда вы моделируете алгоритмы ЦОС в виде кода (например, в скриптах с массивами), вы работаете со всем сигналом целиком. Это удобно для анализа, но абсолютно не подходит для:
➖Реального времени — нужно обрабатывать отсчёты по мере их поступления, а не ждать окончания всего сигнала;
➖Динамических систем — параметры цифрового фильтра или частота сигнала могут меняться на лету;
➖Эффективности памяти — хранение длинных записей сигнала может быть критично для встраиваемых систем.
Переход к обработке отсчет за отсчетом через явные циклы возможен, но резко увеличивает объем кода и риск ошибок. Строить же алгоритм блоками, действительно, не всегда удобно.
➡ Что предлагает Engee?
В Engee есть мощный механизм — системные объекты из собственных библиотек EngeeDSP, EngeePhased, EngeComms и EngeeRadar. Это готовые классы, которые:
✅ работают в потоковом режиме,
✅ хранят внутренние состояния между вызовами,
✅ позволяют строить скриптовые модели, которые по гибкости не уступают диаграммам из блоков.
📌 Проект «Системные объекты EngeeDSP для потоковой обработки» — это живой пример, как использовать подобные объекты:
➡ Что реализовано в виде кода?
1⃣ Генератор сигнала с переменной частотой
Используется SineWaveDSP — системный объект, который выдаёт отчёты синусоиды. Внутри цикла можно менять его частоту «на ходу», создавая линейно-частотную модуляцию (ЛЧМ).
2⃣ КИХ-фильтр нижних частот (ФНЧ)
Объект DiscreteFIRFilter инициализируется коэффициентами, рассчитанными под нужную частоту среза ФНЧ. Каждый шаг цикла он принимает новый вектор отсчётов сигнала и возвращает результат — дополнительной буферизации не требуется.
3⃣ Спектральный анализ в скользящем окне
Объект EngeeFFT вычисляет БПФ кадра сигнала с оконной функцией на входе. Комплексный вектор на выходе алгоритма БПФ затем берется по модулю и переводится из значений амплитуды в децибелы объектом dBConversion.
4⃣ Анимация
Средствами редактора кода Engee реализована анимация спектра сигнала в процессе вычислений.
⭐ Бонус проекта
Проект также включает эталонную модель reference_FFT.engee, реализованную на параметризуемых блоках. Это позволяет сопоставить два подхода (скриптовый и блочный) и верифицировать результаты.
📎 Переходите по ссылке, смотрите код, экспериментируйте:
2 минуты
23 апреля