このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
MATLAB Compiler を使用した DSP アプリケーションの生成
この例では、MATLAB Compiler™ を使用して、DSP System Toolbox™ の System object を使用する MATLAB 関数からスタンドアロン アプリケーションを作成する方法を説明します。
はじめに
この例では、システム同定に RLS フィルターを使用する関数 RLSFilterSystemIDCompilerExampleApp から開始します。MATLAB Compiler を使用してこの関数から実行可能なアプリケーションを生成して実行します。このようなスタンドアロン アプリケーションを生成する利点は、MATLAB がインストールされていないシステムでもアプリケーションを実行できることです。これらに必要とされるものは MATLAB Runtime のインストールのみです。
システム同定アルゴリズム
再帰的最小二乗 (RLS) フィルターは不明なシステムの特定に使用可能な適応フィルターです。RLSFilterSystemIDCompilerExampleApp
は RLS フィルターを使って可変カットオフ周波数をもつシステムを特定します。このシステムは、dsp.VariableBandwidthFIRFilter
を使って実装されるローパス FIR フィルターです。RLS フィルターはdsp.RLSFilter
を使って実装されます。
アルゴリズムと設定の詳細については、RLS 適応フィルター処理を使用したシステム同定の例に従ってください。
MATLAB シミュレーション
RLSFilterSystemIDCompilerExampleApp
の動作を検証するには、MATLAB で関数を実行します。反復ステップの回数をオプションとして入力できます。既定値は 300 回の反復です。
RLSFilterSystemIDCompilerExampleApp;
制御可能な 2 つのパラメーターをもつユーザー インターフェイス (UI) が表示されます。
Cutoff Frequency (Hz) - 特定するローパス フィルターのカットオフ周波数。範囲 [0, 5000] Hz のスカラー値として指定します。
RLS Forgetting Factor - システム同定に使用する RLS フィルターの忘却係数。範囲 [0, 1] のスカラー値として指定します。
シミュレーションの終了後または [Stop Simulation
] ボタンをクリックすると、これらのパラメーターに行った変更のプロットとそれが RLS フィルターの平均二乗誤差 (MSE) にどのように影響を与えたかが表示されます。
コンパイル用の一時ディレクトリの作成
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 関数のコンパイル
作成した一時ディレクトリで、MATLAB 関数 RLSFilterSystemIDCompilerExampleApp
に対して mcc
(MATLAB Compiler) コマンドを実行します。mcc
によって起動される MATLAB Compiler が MATLAB 関数をスタンドアロン実行可能ファイルとしてコンパイルし、現在のディレクトリに保存します。RLSFilterSystemIDCompilerExampleApp
をスタンドアロン アプリケーションにコンパイルするには、MATLAB Compiler から関数 mcc
(MATLAB Compiler) を使用します。スタンドアロン アプリケーションを生成するには '-m' オプションを、'-p' オプションを使って指定したパスのディレクトリのみを含めるには '-N' オプションを指定します。
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.
このステップは、完了するのに 2 ~ 3 分かかります。
配布アプリケーションの実行
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 適応フィルター処理を使用したシステム同定と同様に、この実行可能アプリケーションを実行すると UI も起動されます。UI ではパラメーターを調整でき、結果はシミュレーションにすぐに反映されます。たとえば、シミュレーションの実行中にカットオフ周波数 (Hz) のスライダーを左へ移動します。カットオフ周波数のプロットの減少と、対応する変動が RLS フィルターの MSE で見られます。UI のボタンを使用すると、シミュレーションを一時停止または停止できます。
生成ファイルのクリーンアップ
実行可能ファイルの生成と配布後、MATLAB コマンド プロンプトで以下を実行して一時ディレクトリをクリーンアップできます。
cd(curDir);
rmdir(compilerDir,'s');