В этом примере показано, как использовать Compiler™ MATLAB для создания автономного приложения из функции MATLAB, использующей системные объекты из DSP System Toolbox™.
В этом примере запускается функция RLSFilterSystemIDCompilerExampleApp, использующая фильтр RLS для идентификации системы. Можно создать исполняемое приложение из этой функции с помощью компилятора MATLAB и затем запустить приложение. Преимущество создания таких автономных приложений заключается в том, что они могут быть запущены даже в системах, в которых не установлен MATLAB. Для этого требуется только установка среды выполнения MATLAB.
Рекурсивные фильтры наименьших квадратов (RLS) - это адаптивные фильтры, которые можно использовать для идентификации неизвестной системы. RLSFilterSystemIDCompilerExampleApp использует фильтры RLS для идентификации системы с переменной частотой отсечения. Система представляет собой низкочастотный фильтр FIR, реализованный с использованием dsp.VariableBandwidthFIRFilter. Фильтр RLS реализован с использованием dsp.RLSFilter.
Дополнительные сведения об алгоритме и настройке см. в примере «Идентификация системы с помощью адаптивной фильтрации RLS».
Проверка поведения RLSFilterSystemIDCompilerExampleApp, запустите функцию в MATLAB. Для этого требуется дополнительный ввод, представляющий собой количество шагов итерации. Значение по умолчанию - 300 итераций.
RLSFilterSystemIDCompilerExampleApp;

Появляется пользовательский интерфейс (UI), который имеет два параметра, которыми можно управлять:
Частота отсечки (Гц) - частота отсечки фильтра нижних частот, определяемая как скаляр в диапазоне [0, 5000] Гц.
Коэффициент забывания 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'));
В только что созданном временном каталоге выполните команду mcc (Компилятор MATLAB) для функции MATLAB RLSFilterSystemIDCompilerExampleApp. mcc вызывает компилятор MATLAB, который компилирует функцию MATLAB в автономный исполняемый файл, сохраненный в текущем каталоге. Используйте mcc (Компилятор MATLAB) функция из компилятора MATLAB для компиляции RLSFilterSystemIDCompilerExampleApp в автономное приложение. Укажите параметр «» -m «» для создания автономного приложения, параметр «» -N «» для включения только каталогов в путь, указанный параметром «» -p «».
mcc('-mN', 'RLSFilterSystemIDCompilerExampleApp', ... '-p', fullfile(matlabroot,'toolbox','dsp'));
DEMO Compiler license. The generated application will expire 30 days from today, on Mon Aug 10 18:05:54 2020.
Выполнение этого шага занимает несколько минут.
Используйте system для запуска созданного автономного приложения. Обратите внимание, что при запуске автономного приложения с помощью системной команды используется текущая среда MATLAB и все файлы библиотеки, необходимые для данной установки MATLAB. Чтобы развернуть это приложение на компьютере, на котором не установлен MATLAB, обратитесь к программе MATLAB Runtime (MATLAB Compiler).
if ismac status = system(fullfile('RLSFilterSystemIDCompilerExampleApp.app', ... 'Contents', 'MacOS', 'RLSFilterSystemIDCompilerExampleApp')); else status = system(fullfile(pwd, 'RLSFilterSystemIDCompilerExampleApp')); end
dyld: Library not loaded: @rpath/libmwlaunchermain.dylib Referenced from: /private/var/folders/dc/482hqt1x0_g33cty0z3_8v20000_8y/T/compilerDir/RLSFilterSystemIDCompilerExampleApp.app/Contents/MacOS/RLSFilterSystemIDCompilerExampleApp Reason: image not found RLSFilterSystemIDCompilerExampleApp.app/Contents/MacOS/RLSFilterSystemIDCompilerExampleApp: Aborted


Как и в примере MATLAB Идентификация системы с помощью адаптивной фильтрации RLS, запуск этого исполняемого приложения также запускает пользовательский интерфейс. Пользовательский интерфейс позволяет настраивать параметры, и результаты мгновенно отражаются в моделировании. Например, переместите ползунок «Частота отсечения (Гц)» влево во время моделирования. Вы увидите падение на графике частоты отсечки и соответствующее колебание MSE фильтра RLS. Для приостановки или остановки моделирования можно использовать кнопки пользовательского интерфейса.
После создания и развертывания исполняемого файла можно очистить временный каталог, выполнив следующие действия в командной строке MATLAB:
cd(curDir);
rmdir(compilerDir,'s');