Этот пример показывает, как использовать 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 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');