Сгенерируйте приложения DSP с MATLAB Compiler

Этот пример показывает, как использовать MATLAB Compiler™, чтобы создать автономное приложение от функции MATLAB, которая использует Системные объекты от DSP System Toolbox™.

Введение

В этом примере вы запускаете с функционального RLSFilterSystemIDCompilerExampleApp, который использует фильтр RLS для системы идентификации. Вы генерируете исполняемое приложение от этой функции с помощью MATLAB Compiler и затем запускаете приложение. Преимущество генерации таких автономных приложений состоит в том, что они могут быть запущены даже в системах, которым не установили MATLAB. Им только нужна установка MATLAB Runtime.

Алгоритм System Identification

Фильтры Рекурсивных наименьших квадратов (RLS) являются адаптивными фильтрами, которые могут использоваться, чтобы идентифицировать неизвестную систему. RLSFilterSystemIDCompilerExampleApp использует фильтры RLS, чтобы идентифицировать систему, которая имеет переменную частоту среза. Система является реализованным использованием фильтра lowpass КИХ dsp. VariableBandwidthFIRFilter. Фильтр RLS реализован с помощью dsp. RLSFilter.

Для получения дополнительной информации об алгоритме и настройке, последуйте примеру: 'System Identification Используя Адаптивную Фильтрацию RLS'.

Симуляция MATLAB

Чтобы проверить поведение RLSFilterSystemIDCompilerExampleApp, запустите функцию в MATLAB. Это берет дополнительный вход, который является количеством шагов итерации. Значение по умолчанию является 300 итерациями.

RLSFilterSystemIDCompilerExampleApp;

Пользовательский интерфейс (UI) подходит, который имеет два параметра, которыми можно управлять:

  1. Частота среза (Гц) - Частота среза фильтра lowpass, который будет идентифицирован, заданный как скаляр в области значений [0, 5000] Гц.

  2. RLS Упущение Фактора - Упущение фактора для фильтра RLS, используемого для системы идентификации, заданной как скаляр в области значений [0, 1].

Когда симуляция заканчивается или когда вы нажмете на кнопку Stop Simulation, вы будете видеть график изменений, которые вы внесли в эти параметры и как это влияло на среднеквадратическую ошибку (MSE) фильтра RLS.

Создайте временную директорию для компиляции

Если вы удовлетворены симуляцией функции в MATLAB, можно скомпилировать функцию. Перед компиляцией создайте временную директорию, в которой у вас есть полномочия записи. Скопируйте основную функцию MATLAB и связанные файлы помощника в эту временную директорию.

compilerDir = fullfile(tempdir,'compilerDir'); % Name of temporary directory
if ~exist(compilerDir,'dir')
    mkdir(compilerDir); % Create temporary directory
end
curDir = cd(compilerDir);
copyfile(which('RLSFilterSystemIDCompilerExampleApp'));
copyfile(which('HelperRLSFilterSystemIdentificationSim'));
copyfile(which('HelperCreateParamTuningUI'));
copyfile(which('HelperUnpackUIData'));

Скомпилируйте функцию MATLAB в автономное приложение

Во временной директории вы только создали, команда MCC выполнения на функции MATLAB RLSFilterSystemIDCompilerExampleApp. mcc вызывает MATLAB Compiler, который компилирует функцию MATLAB в независимый исполняемый файл, который сохранен в текущем каталоге. Используйте функцию MCC от MATLAB Compiler, чтобы скомпилировать RLSFilterSystemIDCompilerExampleApp в автономное приложение. Задайте '-m' опция, чтобы сгенерировать автономное приложение, '-N' опция, чтобы включать только директории в путь, заданный через '-p' опция.

mcc('-mN', 'RLSFilterSystemIDCompilerExampleApp', ...
    '-p', fullfile(matlabroot,'toolbox','dsp'));

Этот шаг занимает несколько минут, чтобы завершиться.

Запустите развертываемое приложение

Используйте команду system, чтобы запустить сгенерированное автономное приложение. Обратите внимание на то, что выполнение автономного приложения с помощью системной команды использует текущую среду MATLAB и любые файлы библиотеки, необходимые от этой установки MATLAB. Чтобы развернуть это приложение на машине, которой не установили MATLAB, обратитесь к разделу 'Distribute with MATLAB Runtime' в документации для продукта MATLAB Compiler.

if ismac
    status = system(fullfile('RLSFilterSystemIDCompilerExampleApp.app', ...
        'Contents', 'MacOS', 'RLSFilterSystemIDCompilerExampleApp'));
else
    status = system(fullfile(pwd, 'RLSFilterSystemIDCompilerExampleApp'));
end

Подобно System Identification 'в качестве примера MATLAB Используя Адаптивную Фильтрацию RLS', запуская это исполняемое приложение также запускает пользовательский интерфейс. Пользовательский интерфейс позволяет вам настройкам параметров, и результаты отражаются в симуляции немедленно. Например, переместите ползунок для 'Частоты среза (Гц)' налево, в то время как симуляция запускается. Вы будете видеть уменьшение графика для частоты среза и соответствующего колебания MSE фильтра RLS. Можно использовать кнопки на пользовательском интерфейсе, чтобы приостановить или остановить симуляцию.

Очистите Сгенерированные Файлы

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

cd(curDir);
rmdir(compilerDir,'s');