exponenta event banner

Создание автономного исполняемого файла и взаимодействие с ним с помощью UDP

В этом примере показано, как создать автономный исполняемый файл для потоковой статистики с помощью MATLAB Coder™ и настроить созданный исполняемый файл с помощью пользовательского интерфейса (UI), который выполняется в MATLAB (TM).

Введение

Большинство алгоритмов в DSP System Toolbox™ поддерживают генерацию кода C с помощью кодера MATLAB.

Одной из опций программы MATLAB Coder является создание автономного исполняемого файла, который может быть запущен вне среды MATLAB путем запуска исполняемого файла непосредственно из терминала или командной строки.

Для алгоритмов, которые могут быть настроены, желательно взаимодействовать с алгоритмом во время выполнения с использованием пользовательского интерфейса. Одним из способов достижения этого является отправка/получение информации через UDP.

В этом примере UDP используется для обмена данными между MATLAB и созданным автономным исполняемым файлом во время выполнения. Значения дисперсии, смещения и экспоненциального взвешивания передаются из MATLAB в исполняемый файл. Фактический случайный сигнал вместе со средней, среднеквадратичной и дисперсионной оценками посылается из автономного исполняемого файла обратно в MATLAB для построения графика.

Пример архитектуры

Архитектура примера состоит из двух основных разделов:

  1. streamingStatsCodegenExampleApp: функция MATLAB, которая создает пользовательский интерфейс для изменения значений дисперсии, смещения и экспоненциального взвешивания. Эта функция также отображает данные, полученные из автономного исполняемого файла.

  2. HelperStreamingStatsEXEProcessing: Это функция, из которой генерируется автономный исполняемый файл. Эта функция генерирует случайный сигнал заданного смещения и дисперсии и вычисляет средние, среднеквадратичные и дисперсионные оценки такого сигнала. Шумовой сигнал вместе со статистикой, которая вычисляется, посылается по UDP для построения графика (или любой дальнейшей обработки). В любое время во время моделирования он также может реагировать на изменения в ползунках пользовательского интерфейса MATLAB.

Создание кода и создание исполняемого файла

Кодер MATLAB можно использовать для генерации считываемого и автономного C-кода из кода алгоритма потоковой статистики. Поскольку используется UDP, существуют дополнительные зависимости для созданного кода и исполняемого файла. Они доступны в каталоге/bin установки MATLAB.

Запуск сценария HelperStreamingStatsGenerateEXE вызовет MATLAB Coder для автоматической генерации C-кода и автономного исполняемого файла из кода алгоритма, представленного в HelperStreamingStatsEXEProcessing.

Выполнение примера

После создания исполняемого файла запустите функцию. streamingStatsCodegenExampleApp для запуска исполняемого файла и пользовательского интерфейса, предназначенного для взаимодействия с моделированием. Пользовательский интерфейс позволяет настраивать параметры, и результаты мгновенно отражаются в моделировании. Например, перемещение ползунка для «Дисперсии» во время моделирования повлияет на шумовой сигнал вместе с среднеквадратичными оценками и оценками дисперсии, которые нанесены на график.

На пользовательском интерфейсе также имеются две кнопки - кнопка «Pause Simulation» будет удерживать моделирование до тех пор, пока вы не нажмете на него снова. Моделирование может быть прервано нажатием кнопки «Stop simulation».

Пронизывание

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

Вызов исполняемого файла вручную

Вместо использования system чтобы запустить исполняемый файл из MATLAB, его можно запустить вручную из терминала или командной строки. Поскольку этот исполняемый файл включает в себя вызовы UDP, необходимо, чтобы dlls находились в пути для правильного поведения. Дополнительные сведения см. в разделе Как запустить созданный исполняемый файл вне MATLAB.