Обработка сигналов по кадрам и отсчетам
Используемые термины
|
Обработка по отсчетам (Sample-based processing)
Обработка по отсчетам — сигналы обрабатываются по одному элементу данных за единицу времени. Такая обработка характеризуется обновлением данных на каждом временном шаге, что соответствует периоду дискретизации. Временной шаг (Time step) равен периоду шага (Sample period), обозначенному как . Частота дискретизации (Sample rate) определяется как величина, обратная периоду дискретизации, то есть — это означает, что данные обновляются и обрабатываются на каждом шаге .
Обработка по отсчетам лучше подходит для систем реального времени, требующих немедленной реакции на каждое новое измерение данных. Примеры таких систем:
-
Аудиообработка
-
Мониторинг в режиме реального времени
Покадровая обработка (Frame-based processing)
Покадровая обработка — сигналы обрабатываются кадрами, где каждый кадр содержит несколько элементов данных. Покадровая обработка обновляет данные на каждом временном шаге, равном периоду кадра. Период кадра определяется как произведение числа элементов в кадре ( ) на период дискретизации, то есть . Соответственно, частота кадров (Frame rate) равна частоте дискретизации, деленной на число элементов в кадре: — это позволяет обрабатывать большие объемы данных за один временной шаг.
Покадровая обработка эффективна для обработки больших объемов данных. Примеры использования:
-
Преобразование Фурье
-
Цифровая фильтрация
-
Обработка изображений и видео
Сравнение обработок по отсчетам и по кадрам
Для наглядности обратите внимание на рисунок, который демонстрирует пример обработки сигнала по отсчетам и по кадрам:
Таблица сравнения |
|
---|---|
Обработка по отсчетам |
Обработка по кадрам |
|
|
Таким образом, рекомендуется начинать разработку с покадровой обработки, так как она удобна для быстрого прототипирования и демонстрации работы системы. Благодаря своей простоте и быстроте разработки, покадровая обработка позволяет легко тестировать и настраивать алгоритмы, не беспокоясь о сложностях работы с памятью. После того как убедились в правильности работы алгоритмов и моделей, можно переходить на обработку по отсчетам. Такая обработка, хотя и более сложная в реализации, но обеспечивает высокую точность и оптимизацию, необходимую для работы с физическими системами, требующими детальной проработки сигналов и взаимодействия с памятью. Этот подход позволяет максимально эффективно использовать преимущества обоих методов на разных этапах разработки.
Примеры
Простройте модель из блоков:
-
Sine Wave DSP — подает дискретную синусойду.
-
Terminator — блок закрывающий выходной порт.
-
Buffer — принудительно сохраняет заданное количество элементов данных в одном кадре. С помощью блока Buffer сигнал принудительно обрабатывается покадрово.
-
Unbuffer — принудительно превращает любое количество кадров в отсчеты. С помощью блока Unbuffer сигнал принудительно обрабатывается по отсчетам.
-
Включите запись сигналов на выходе блоков DSP Sine Wave, Buffer и Unbuffer.
-
Для наглядности в окне настроек во вкладке Отладка включите:
-
Размерности сигналов
-
Частота дискретизации сигнала
-
Выделение цветом
-
Установите следующие параметры блоков:
-
У блока DSP Sine Wave
-
Sample time в значение
0.1
; -
Samples per frame в значение
5
.
-
-
У блока Buffer
-
Output buffer size (per channel) в значение
6
.
-
-
Блоки Unbuffer и Terminator не имеют настраиваемых параметров. В окне настроек интервал моделирования и выбор решателя остаются по умолчанию.
Запустите симуляцию модели . На графиках будут отображены изменения синусоидального сигнала с течением времени. Ось X представляет временной интервал моделирования от 0
до 10
секунд, а Y показывает значение синусоидального сигнала. Тогда в окне графиков отобразятся:
На графике показан результат работы блока Buffer, который принудительно сохраняет заданное количество элементов данных в одном кадре. Каждый кадр содержит шесть элементов данных, представленных цветными линиями на графике. Эти линии отображают состояние каждого элемента в кадре.
Горизонтальные ступенчатые участки линий показывают, как значения элементов данных остаются постоянными в течение каждого кадра. Значения обновляются каждые 0.6
секунд, что соответствует интервалу обновления кадра (6
элементов данных * 0.1
сек/элемент = 0.6
сек). Блок Buffer группирует элементы данных по 6
штук и отображает их как единый кадр, в котором каждый цвет соответствует определенному элементу данных.
В данном примере выбрана обработка по отсчетам, несмотря на то, что блок Buffer принудительно сохраняет элементы данных в один кадр. Это сделано для демонстрации работы блока и отображения каждого элемента данных по отдельности.
На графике показан результат работы блока Unbuffer, который превращает любое количество кадров в отсчеты. Каждый кадр, содержащий 6
элементов данных, разбивается на отдельные элементы данных и передается на выход блока Unbuffer по одному. В результате график показывает последовательные элементы данных синусоидального сигнала, возвращенные к исходному дискретному виду.
График ступенчатый, потому что значения элементов данных изменяются каждые 0.1
секунды. Это соответствует временному шагу, заданному для генерации синусоидального сигнала. Следовательно, блок Unbuffer преобразует покадровый сигнал обратно в отсчет, что иллюстрирует обратный процесс буферизации данных.
Для переключения графика с отображения по отсчетам на покадровое нажмите кнопку Меню сигналов в верхнем меню окна графиков и выберите Кадр во временной области . |
Таким образом, обработки по кадрам и отсчетам могут по-разному влиять на представление и обработку сигналов. Блок Buffer преобразует отсчеты в кадры, группируя элементы данных и делая обработку более эффективной для задач, требующих обработки групп данных одновременно. Блок Unbuffer возвращает кадры обратно в формат по отсчетам.