В этом примере показано, как использовать MATLAB Compiler™, чтобы создать автономное приложение от функции MATLAB, которая использует Системные объекты от DSP System Toolbox™.
В этом примере вы начинаете с функционального RLSFilterSystemIDCompilerExampleApp, который использует фильтр RLS для системы идентификации. Вы генерируете исполняемое приложение от этой функции с помощью MATLAB Compiler и затем запускаете приложение. Преимущество генерации таких автономных приложений состоит в том, что они могут быть запущены даже в системах, которым не установили MATLAB. Им только нужна установка MATLAB Runtime.
Фильтры Рекурсивных наименьших квадратов (RLS) являются адаптивными фильтрами, которые могут использоваться, чтобы идентифицировать неизвестную систему. RLSFilterSystemIDCompilerExampleApp
RLS использования фильтрует, чтобы идентифицировать систему, которая имеет переменную частоту среза. Система является КИХ-фильтром lowpass, реализованным с помощью dsp.VariableBandwidthFIRFilter
. Фильтр RLS реализуется с помощью dsp.RLSFilter
.
Для получения дополнительной информации об алгоритме и настройке, последуйте примеру: System Identification Используя Адаптивную Фильтрацию RLS.
Проверять поведение RLSFilterSystemIDCompilerExampleApp
, запустите функцию в MATLAB. Это берет дополнительный вход, который является количеством шагов итерации. Значением по умолчанию являются 300 итераций.
RLSFilterSystemIDCompilerExampleApp;
Пользовательский интерфейс (UI) подходит, который имеет два параметра, которыми можно управлять:
Частота среза (Гц) - Частота среза lowpass фильтрует, чтобы быть идентифицированной в виде скаляра в области значений [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 Compiler) команда на функции MATLAB RLSFilterSystemIDCompilerExampleApp
. mcc
вызывает MATLAB Compiler, который компилирует функцию MATLAB в независимый исполняемый файл, который сохранен в текущем каталоге. Используйте mcc
(MATLAB Compiler) функция от MATLAB Compiler, чтобы скомпилировать 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
Подобно System Identification MATLAB в качестве примера Используя Адаптивную Фильтрацию RLS, запуская это исполняемое приложение также запускает пользовательский интерфейс. Пользовательский интерфейс позволяет вам настройкам параметров, и результаты отражаются в симуляции немедленно. Например, переместите ползунок для 'Частоты среза (Гц)' налево, в то время как симуляция запускается. Вы будете видеть уменьшение графика для частоты среза и соответствующего колебания MSE фильтра RLS. Можно использовать кнопки на пользовательском интерфейсе, чтобы приостановить или остановить симуляцию.
После генерации и развертывания исполняемого файла, можно очистить временную директорию путем выполнения следующего в командной строке MATLAB:
cd(curDir);
rmdir(compilerDir,'s');