Документация Engee

Обработка сигналов по кадрам и отсчетам

Используемые термины
  • Шаг расчета (Sample time) — это время одного элемента данных.

  • Временной шаг (Time step) — это интервал времени, через который решатель обновляет расчеты и состояния модели.

  • Период дискретизации (Sample period) — это промежуток времени между последовательными измерениями или элементами данных.

  • Элемент данных (Sample) — это отдельное значение, полученное в результате дискретизации сигнала.

    • В обработке по отсчетам (sample-based), элемент данных — это одно значение, соответствующее конкретному моменту времени, определенному шагом расчета.

    • В покадровой обработке (frame-based), элемент данных — это одно значение внутри набора значений, собранных в течение периода дискретизации и обрабатываемых как единый кадр.

Обработка по отсчетам (Sample-based processing)

Обработка по отсчетам — сигналы обрабатываются по одному элементу данных за единицу времени. Такая обработка характеризуется обновлением данных на каждом временном шаге, что соответствует периоду дискретизации. Временной шаг (Time step) равен периоду шага (Sample period), обозначенному как . Частота дискретизации (Sample rate) определяется как величина, обратная периоду дискретизации, то есть — это означает, что данные обновляются и обрабатываются на каждом шаге .

Обработка по отсчетам лучше подходит для систем реального времени, требующих немедленной реакции на каждое новое измерение данных. Примеры таких систем:

  • Аудиообработка

  • Мониторинг в режиме реального времени

Покадровая обработка (Frame-based processing)

Покадровая обработка — сигналы обрабатываются кадрами, где каждый кадр содержит несколько элементов данных. Покадровая обработка обновляет данные на каждом временном шаге, равном периоду кадра. Период кадра определяется как произведение числа элементов в кадре ( ) на период дискретизации, то есть . Соответственно, частота кадров (Frame rate) равна частоте дискретизации, деленной на число элементов в кадре: — это позволяет обрабатывать большие объемы данных за один временной шаг.

Покадровая обработка эффективна для обработки больших объемов данных. Примеры использования:

  • Преобразование Фурье

  • Цифровая фильтрация

  • Обработка изображений и видео

Сравнение обработок по отсчетам и по кадрам

Для наглядности обратите внимание на рисунок, который демонстрирует пример обработки сигнала по отсчетам и по кадрам:

based processing 1

Таблица сравнения

Обработка по отсчетам

Обработка по кадрам

  • Обеспечивает более детальную настройку логики работы благодаря точной обработке каждого элемента данных.

  • Оптимальна для работы с реальным оборудованием, требующим точного контроля памяти и временных интервалов.

  • Используется на этапе реализации модели после ее тестирования на покадровой обработке.

  • Кодогенерация полностью поддерживается реальными системами, такими как ПЛИС (FPGA).

  • Подходит для финальной стадии разработки, где требуется высокая точность и оптимизация.

  • Подходит для прототипирования и быстрой разработки алгоритмов.

  • Модель представлена крупными блоками, что делает ее более читаемой и упрощает понимание.

  • Обрабатывает кадры целиком, что позволяет упростить тестирование и отладку.

  • Подходит для начальной стадии разработки и демонстрации работы системы.

  • Чаще используется при реализации на микроконтроллерах, где важна простота и скорость разработки.

Таким образом, рекомендуется начинать разработку с покадровой обработки, так как она удобна для быстрого прототипирования и демонстрации работы системы. Благодаря своей простоте и быстроте разработки, покадровая обработка позволяет легко тестировать и настраивать алгоритмы, не беспокоясь о сложностях работы с памятью. После того как убедились в правильности работы алгоритмов и моделей, можно переходить на обработку по отсчетам. Такая обработка, хотя и более сложная в реализации, но обеспечивает высокую точность и оптимизацию, необходимую для работы с физическими системами, требующими детальной проработки сигналов и взаимодействия с памятью. Этот подход позволяет максимально эффективно использовать преимущества обоих методов на разных этапах разработки.

Примеры

Простройте модель из блоков:

  • Sine Wave DSP — подает дискретную синусойду.

  • Terminator — блок закрывающий выходной порт.

  • Buffer — принудительно сохраняет заданное количество элементов данных в одном кадре. С помощью блока Buffer сигнал принудительно обрабатывается покадрово.

  • Unbuffer — принудительно превращает любое количество кадров в отсчеты. С помощью блока Unbuffer сигнал принудительно обрабатывается по отсчетам.

  • Включите запись сигналов signal logging 1 на выходе блоков DSP Sine Wave, Buffer и Unbuffer.

  • Для наглядности в окне настроек lk 5 во вкладке Отладка включите:

    • Размерности сигналов

    • Частота дискретизации сигнала

    • Выделение цветом

      sample frame based model 1

Установите следующие параметры блоков:

  • У блока DSP Sine Wave

    • Sample time в значение 0.1;

    • Samples per frame в значение 5.

  • У блока Buffer

    • Output buffer size (per channel) в значение 6.

  • Блоки Unbuffer и Terminator не имеют настраиваемых параметров. В окне настроек интервал моделирования и выбор решателя остаются по умолчанию.

Запустите симуляцию модели start simulation button. На графиках будут отображены изменения синусоидального сигнала с течением времени. Ось X представляет временной интервал моделирования от 0 до 10 секунд, а Y показывает значение синусоидального сигнала. Тогда в окне графиков stateflow graphs button отобразятся:

sample based buffer 1

На графике показан результат работы блока Buffer, который принудительно сохраняет заданное количество элементов данных в одном кадре. Каждый кадр содержит шесть элементов данных, представленных цветными линиями на графике. Эти линии отображают состояние каждого элемента в кадре.

Горизонтальные ступенчатые участки линий показывают, как значения элементов данных остаются постоянными в течение каждого кадра. Значения обновляются каждые 0.6 секунд, что соответствует интервалу обновления кадра (6 элементов данных * 0.1 сек/элемент = 0.6 сек). Блок Buffer группирует элементы данных по 6 штук и отображает их как единый кадр, в котором каждый цвет соответствует определенному элементу данных.

В данном примере выбрана обработка по отсчетам, несмотря на то, что блок Buffer принудительно сохраняет элементы данных в один кадр. Это сделано для демонстрации работы блока и отображения каждого элемента данных по отдельности.


frame based unbuffer 1

На графике показан результат работы блока Unbuffer, который превращает любое количество кадров в отсчеты. Каждый кадр, содержащий 6 элементов данных, разбивается на отдельные элементы данных и передается на выход блока Unbuffer по одному. В результате график показывает последовательные элементы данных синусоидального сигнала, возвращенные к исходному дискретному виду.

График ступенчатый, потому что значения элементов данных изменяются каждые 0.1 секунды. Это соответствует временному шагу, заданному для генерации синусоидального сигнала. Следовательно, блок Unbuffer преобразует покадровый сигнал обратно в отсчет, что иллюстрирует обратный процесс буферизации данных.

Для переключения графика с отображения по отсчетам на покадровое нажмите кнопку Меню сигналов signal menu 1 в верхнем меню окна графиков и выберите Кадр во временной области frame based icon 1.

Таким образом, обработки по кадрам и отсчетам могут по-разному влиять на представление и обработку сигналов. Блок Buffer преобразует отсчеты в кадры, группируя элементы данных и делая обработку более эффективной для задач, требующих обработки групп данных одновременно. Блок Unbuffer возвращает кадры обратно в формат по отсчетам.

Полезные ссылки