メインコンテンツ

グローバル データを含むコードの固定小数点への変換

ワークフロー

グローバル データを使用する MATLAB® コードを固定小数点に変換するには、次の手順に従います。

  1. コード内で変数をグローバルとして宣言します。

    詳細については、グローバル変数の宣言を参照してください。

  2. 使用する前に、グローバル データを定義し初期化します。

    詳細については、グローバル データの定義を参照してください。

  3. fiaccel または codegen (MATLAB Coder) を使用して、コードを固定小数点に変換します。

固定小数点の自動変換は、MATLAB 関数と生成された MEX 関数の間で常にグローバル データを同期します。

グローバル変数の宣言

グローバル データの使用時には、まず MATLAB コード内でグローバル変数を宣言しなければなりません。次のコードは 2 つのグローバル変数 ARB を使用する関数 use_globals を示します。

function y = use_globals(u)
%#codegen
% Declare AR and B as global variables
global AR;
global B;
AR(1) = u + B(1);
y = AR * 2;

グローバル データの定義

グローバル データの定義は、MATLAB グローバル ワークスペースまたはコマンド ラインで行えます。コマンド ラインでグローバル データを初期化しなかった場合、ソフトウェアは MATLAB グローバル ワークスペース内で変数を探します。

MATLAB グローバル ワークスペース内でのグローバル データの定義

use_globals 関数を変換するには、最初にグローバル データを定義して初期化しなければなりません。

global AR B;
AR = ones(4);
B=[1 2 3];

コマンド ラインでのグローバル データの定義

コマンド ラインでグローバル データを定義するには、fiaccel -globals オプションを使用します。たとえば、use_globals 関数を固定小数点に変換するには、コマンド ラインで 2 つのグローバル入力 ARB を指定します。-args オプションを使用して、入力 u が実数の double スカラーであることを指定します。

fiaccel -float2fixed cfg -global {'AR',ones(4),'B',[1 2 3]} use_globals -args {0}
または、-globals フラグを使用し、-globals {'g', {type, initial_value}} の形式でデータ型と初期値を指定します。

可変サイズのグローバル データの初期値を指定するには、-globals フラグを使用し、-globals {'g', {type, initial_value}} の形式でデータ型と初期値を指定します。たとえば、初期値 [1 1] と上限 [2 2] をもつグローバル変数 g を指定するには、次のように入力します。

fiaccel -float2fixed cfg -global {'g', {coder.typeof(0,[2 2],1),[1 1]}} myfunction
この構文の詳細は、coder.typeof を参照してください。

定数のグローバル データの定義

グローバル変数の値が実行時に変化しないことがわかっている場合、グローバル変数が定数値をもつと指定することで固定小数点コードのオーバーヘッドを減らすことができます。定数のグローバル変数には書き込みできません。

コマンド ラインでの定数のグローバル データの定義

fiaccel コマンドを使用してグローバル変数が定数であると指定するには、coder.Constant クラスと共に -globals オプションを使用します。

  1. 固定小数点変換の構成オブジェクトを定義します。

    cfg = coder.config('fixpt');
    

  2. coder.Constant を使用してグローバル変数が定数値をもつことを指定します。たとえば、次のコードはグローバル変数 g が初期値 4 をもち、グローバル変数 gc が定数値 42 をもつことを指定します。

    global_values = {'g', 4, 'gc', coder.Constant(42)};
  3. -globals オプションを使用してコードを固定小数点に変換します。たとえば、global_values を固定小数点に変換する場合、cell 配列 myfunction にグローバル変数が定義されるように指定します。

    fiaccel -float2fixed cfg -global global_values myfunction

コード生成レポート内の定数のグローバル データ

コード生成レポートは定数のグローバル変数について次の情報を提供します。

  • Global の型 ([変数] タブ内)。

  • 強調表示された変数名 ([関数] ペイン内)

参考

トピック