Main Content

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

ワークフロー

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

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

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

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

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

  3. 固定小数点コンバーターまたは fiaccel を使用してコードを固定小数点に変換します。

固定小数点コンバーターは 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];

固定小数点コンバーター プロジェクトでのグローバル データの定義

  1. [入力の型を定義] ページでテスト ファイルを選択して実行した後で、[このコードはグローバル変数を使用していますか?] の隣の [はい] を選択します。

    既定では固定小数点コンバーターは、プロジェクト内の最初のグローバル変数に g という名前を付けます。

  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 を参照してください。

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

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

固定小数点コンバーターでの定数のグローバル データの定義

  1. [入力の型を定義] ページでテスト ファイルを選択して実行した後で、[このコードはグローバル変数を使用していますか?] の隣の [はい] を選択します。

  2. コード内で使用するグローバル変数の名前を入力します。

  3. グローバル変数の右側のフィールドをクリックします。

  4. [定数値の定義] を選択します。

  5. 定数のグローバル変数の右にあるフィールドに MATLAB 式を入力します。

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

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 の型 ([変数] タブ内)。

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

関連するトピック