Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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) が表示されます。

  1. Cutoff Frequency (Hz) - 特定するローパス フィルターのカットオフ周波数。範囲 [0, 5000] Hz のスカラー値として指定します。

  2. 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
copyfile(which('RLSFilterSystemIDCompilerExampleApp'),compilerDir,'f');
copyfile(which('HelperRLSFilterSystemIdentificationSim'),compilerDir,'f');
copyfile(which('HelperCreateParamTuningUI'),compilerDir,'f');
copyfile(which('HelperUnpackUIData'),compilerDir,'f');
curDir = cd(compilerDir);

スタンドアロン アプリケーションへの 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'));

このステップは、完了するのに 2 ~ 3 分かかります。

展開済みアプリケーションの実行

system コマンドを使用して、生成したスタンドアロン アプリケーションを実行します。システム コマンドを使用してスタンドアロン アプリケーションを実行する場合、現在の MATLAB 環境と、MATLAB のインストールで必要なライブラリ ファイルを使用する必要があります。MATLAB がインストールされていないマシンにこのアプリケーションを展開するには、Relocate Code Generated from MATLAB Code to Another Development Environmentを参照してください。

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

MATLAB の例RLS 適応フィルター処理を使用したシステム同定と同様に、この実行可能アプリケーションを実行すると UI も起動されます。UI ではパラメーターを調整でき、結果はシミュレーションにすぐに反映されます。たとえば、シミュレーションの実行中にカットオフ周波数 (Hz) のスライダーを左へ移動します。カットオフ周波数のプロットの減少と、対応する変動が RLS フィルターの MSE で見られます。UI のボタンを使用すると、シミュレーションを一時停止または停止できます。

生成ファイルのクリーンアップ

実行可能ファイルの生成と展開後、MATLAB コマンド プロンプトで以下を実行して一時ディレクトリをクリーンアップできます。

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