ルックアップ テーブルを使用した MATLAB Function ブロックでの関数の置換
この例では、MATLAB® Function ブロック内で使用される関数をより効率的な実装で置換する方法を示します。次のモデルには、入力の正弦を計算する MATLAB Function ブロックが含まれます。コード ビューを使用して、組み込みの関数 sin
をルックアップ テーブルに置き換えます。
モデルが置かれているフォルダーにディレクトリを変更します。MATLAB コマンド ラインで以下のように入力します。
cd(fullfile(docroot,'toolbox','fixpoint','examples'))
ex_mySin.slx
ファイルをローカルの書き込み可能なフォルダーにコピーして保存し、モデルを開きます。
function y = my_sin(u) %#codegen y = sin(u);
固定小数点ツールを開くには、[アプリ] タブで [アプリ] ギャラリーを展開し、[固定小数点ツール] を選択します。
固定小数点ツールの [新規] ボタンの矢印を展開し、
[固定小数点の反復的変換]
を選択します。[設計対象のシステム (SUD)] で、変換するシステムとしてモデル
ex_mySin
を選択します。[範囲の収集モード] で、範囲の収集方法として [シミュレーション範囲] を選択します。これにより、理想的な浮動小数点データ型を使用して範囲を収集するようにモデルが設定されます。
ツールストリップの [準備] セクションで、[準備] をクリックします。
[範囲の収集] ボタンの矢印を展開して
[倍精度]
を選択します。[範囲の収集] をクリックして、シミュレーションを開始します。固定小数点ツールは、
BaselineRun
というタイトルの実行にシミュレーション データを格納します。スプレッドシートで MATLAB 変数の範囲情報を確認します。コード ビューを起動するには、ツールストリップの [変換] セクションで [MATLAB 関数] をクリックします。
[関数の置き換え] タブを選択します。
置換する関数の名前を入力します。この例では、
sin
と入力します。[ルックアップ テーブル]
を選択して、をクリックします。
固定小数点の変換プロセスで関数の値域が推定され、内挿されたルックアップ テーブルを使用してその関数が置き換えられます。既定では、ルックアップ テーブルは 1000 点の線形内挿と、テスト ファイルを実行して求められたその最小値と最大値を使用します。
[推奨] をクリックして、変数に対するデータ型の推奨を取得します。
[適用] をクリックしてデータ型の推奨を適用して、固定小数点ルックアップ テーブルを生成します。
生成された固定小数点コードの動作が元のコードの動作を十分に近似していない場合は、ルックアップ テーブルで使用する内挿法と点の数を変更してから、固定小数点コードを生成し直してください。
固定小数点ツールに戻ります。ツールストリップの [検証] セクションで [組み込み型によるシミュレーション] ボタンをクリックし、新しく適用された固定小数点データ型を使用してモデルをシミュレートします。モデルは、固定小数点のバリアントをアクティブなバリアントとして使用してシミュレーションを実行します。