ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

導出範囲に基づくデータ型の推奨

この例では、指定した静的範囲に基づいて固定小数点データ型を推奨する方法を示します。派生範囲に基づいてデータ型を推奨すると、動作範囲全体にわたってアルゴリズムを実行するテスト ファイルを提供する必要がないというメリットがあります。このようなテスト ファイルは実行に非常に長い時間がかかることが多いため、代わりに派生範囲を使用すると時間を節約できます。

必要条件

この例を実行するには、次の製品をインストールしなければなりません。

  • MATLAB®

  • Fixed-Point Designer™

  • C コンパイラ (ほとんどのプラットフォームでは、既定の C コンパイラが MATLAB と共に提供されています)。サポートされているコンパイラの一覧は、「サポートされるコンパイラ」を参照してください。

    mex -setup を使用して既定のコンパイラを変更できます。「既定のコンパイラの変更」を参照してください。

新規フォルダーの作成と関連ファイルのコピー

  1. ローカル作業フォルダーを作成します。たとえば、c:\dti のようにします。

  2. docroot\toolbox\fixpoint\examples フォルダーに変更します。MATLAB コマンド ラインで次のように入力します。

    cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples')) 

  3. dti.m および dti_test.m ファイルをローカル作業フォルダーにコピーします。

    入力の読み込みや、入力値の設定、テストする関数の呼び出し、テスト結果の出力など、すべての前処理と後処理を実行するための独立したテスト スクリプトを作成することをお勧めします。

    タイプ名前説明
    関数のコードdti.mMATLAB のエントリポイント関数
    テスト ファイルdti_test.mMATLAB スクリプト。次をテストします。 dti.m

 関数 dti

 関数 dti_test

固定小数点コンバーター アプリケーションを開く

  1. MATLAB コマンド ラインで以下を入力します。

    fixedPointConverter

  2. 固定小数点コンバーター アプリケーションで、[ソース ファイルの選択] ステップを選択します。

  3. [ソース ファイルの選択] をクリックします。ファイル dti.m を参照してから [OK] をクリックしてファイルをプロジェクトに追加し、ファイルの潜在的なコード生成の問題を確認します。

    既定では、アプリケーションはこのプロジェクトの情報および設定を現在のフォルダーの dti.prj というファイルに保存します。dti.m ファイルの潜在的な問題は検出されません。

入力の型の定義

  1. アプリケーションの右側にある矢印をクリックし、ワークフローの次のステップに移動します。

  2. テスト ファイルとして dti_test を参照して追加し、 をクリックします。

    テスト ファイルが実行され、各入力信号のフィルターの出力が表示されます。

    アプリケーションはテスト ファイルから、u_in の入力型を double(1x1) とすることを決定します。

固定小数点の変換

  1. アプリケーションの右側にある矢印をクリックし、ワークフローの次のステップに移動します。

    固定小数点コンバーター アプリケーションはエントリポイント MATLAB 関数に対してインストルメント化された MEX 関数を生成します。MEX 関数の生成後、コードに含まれる変数についてコンパイルされた情報 (データ型、サイズ、実数/複素数) が表示されます。詳細は、「変数情報の表示と変更」を参照してください。

    MEX 関数の生成が失敗した場合は、エラー メッセージのリンクが表示され、ビルドの問題の原因となったコードに移動できるようになります。固定小数点の変換に対応していない関数がコードに含まれている場合は、それらの関数が [関数の置き換え] タブに表示されます。

  2. [固定小数点の変換] ウィンドウの [変数] タブで、入力 u_in[静的最小値] を選択して、-1 に設定します。次に、[静的最大値]1 に設定します。

    派生範囲情報を計算するには、すべての入力変数の静的最小値および最大値または推奨されたデータ型を少なくとも指定しなければなりません。

      メモ:   手動で静的範囲を入力すると、手動で入力した範囲がシミュレーション範囲より優先され、アプリケーションはその範囲を使用してデータ型を推奨します。さらに、推奨された型を変更およびロックすることもできます。

  3. [派生範囲の計算] をクリックします。

    範囲解析によって派生範囲が計算され、[変数] タブに表示されます。これらの派生範囲を使用して、既定の型推奨設定に基づく固定小数点型が変数ごとに推奨され、[推奨された型] 列に表示されます。

    関数 dti で、出力 clip_status の最小値は -2、最大値は 2 です。

    % Compute Output
    if (u_state > limit_upper)
        y = limit_upper;
        clip_status = -2;
    elseif (u_state >= limit_upper)
        y = limit_upper;
        clip_status = -1;
    elseif (u_state < limit_lower)
    	y = limit_lower;
        clip_status = 2;
    elseif (u_state <= limit_lower)
    	y = limit_lower;
        clip_status = 1;   
    else        
        y = u_state;
        clip_status = 0;
    end
    

    範囲を導出すると、固定小数点コンバーター アプリケーションによって関数が解析され、clip_status のこれらの最小値と最大値が計算されます。

    このアプリケーションでは、[派生範囲のクイック解析] オプションを選択できるほか、解析に非常に長い時間がかかる場合にタイムアウトを指定するオプションもあります。詳細は、「派生した範囲の計算」を参照してください。

  4. 浮動小数点アルゴリズムを固定小数点に変換するには、[変換] をクリックします。

    推奨された型がソフトウェアによって検証され、エントリポイント関数 dti_fixpt.m の固定小数点バージョンがローカル作業フォルダー内の codegen\dti\fixpt フォルダーに生成されます。

    検証時にエラーまたは警告が発生した場合は、[型の検証の出力] タブに表示されます。詳細は、「型の検証」を参照してください。

  5. 浮動小数点アルゴリズムを固定小数点に変換するには、[変換] をクリックします。

    固定小数点の変換プロセスでは、推奨された型がソフトウェアによって検証され、ローカル作業フォルダー内の codegen\dti\fixpt フォルダーに次のファイルが生成されます。

    • dti_fixpt.mdti.m の固定小数点バージョン。

    • dti_wrapper_fixpt.m — このファイルは、テスト ファイルにより入力された浮動小数点データを、変換時に入力用に指定された固定小数点型に変換します。これらの固定小数点値は、変換後の固定小数点設計 dti_fixpt.m に反映されます。

    • dti_fixpt_report.html — このレポートは、生成された固定小数点コードと固定小数点の計測結果を表示します。

    • dti_report.html — このレポートは、元のアルゴリズムと固定小数点の計測結果を表示します。

    • dti_fixpt_exVal.mat — 入力引数用の構造体、出力引数用の構造体および固定小数点ファイルの名前を含む MAT ファイル。

    検証時にエラーまたは警告が発生した場合は、[型の検証の出力] タブに表示されます。詳細は、「型の検証」を参照してください。

  6. [出力ファイル] リストで、dti_fixpt.m を選択します。生成された固定小数点コードがアプリケーションによって表示されます。

  7. シミュレーション データ インスペクターを使用して浮動小数点と固定小数点の結果をプロットします。

    1. をクリックします。

    2. [プロットとレポート] 設定を展開して [シミュレーション データ インスペクターを用いてプロット][はい] に設定します。

  8. [テスト] の右側の矢印をクリックし、[比較プロット用の入力と出力を記録] を選択してから [テスト] をクリックします。

    入力型を定義するために使用したテスト ファイルが実行され、固定小数点 MATLAB コードがテストされます。オプションでテスト ファイルを追加し、数値のテスト用に複数のテスト ファイルを実行することを選択できます。浮動小数点と固定小数点の両方のシミュレーションが実行され、出力変数 y の誤差が計算されます。比較プロット用の入力と出力の記録と、プロットにシミュレーション データ インスペクターを使用することを選択したため、シミュレーション データ インスペクターが開きます。

    [検証の出力] タブに、型の推奨レポートへのリンクが表示されます。

    dti_fixpt_report.html リンクをクリックしてレポートを開きます。

  9. シミュレーション データ インスペクターを使用して、浮動小数点と固定小数点の実行情報の表示や結果の比較を行うことができます。たとえば [比較] タブで出力 y の浮動小数点の値と固定小数点の値を比較するには、[y] を選択して [実行の比較] をクリックします。

    シミュレーション データ インスペクターは、ベースラインの浮動小数点の実行と固定小数点の実行のプロットおよびそれらの差を表示します。

固定小数点コードの統合

コードの固定小数点バージョンを統合してシステムレベルのシミュレーションを実行するには、MEX 関数を生成して固定小数点アルゴリズムを高速化し、元の MATLAB アルゴリズムの代わりにこの MEX 関数を呼び出します。

  1. dti_fixpt.m をローカル作業フォルダーにコピーします。

  2. dti_fixpt.m の MEX 関数を生成します。型の推奨レポートを使用して、入力 u_infimathfm および固定小数点データ型を取得します。

    fm = fimath('RoundingMethod', 'Floor', 'OverflowAction', 'Wrap', 'ProductMode', 'FullPrecision', 'MaxProductWordLength', 128, 'SumMode', 'FullPrecision', 'MaxSumWordLength', 128);
    fiaccel dti_fixpt -args {fi( 0, 1, 16, 14, fm )}

    fiaccel は現在のフォルダーに MEX 関数 dti_fixpt_mex を生成します。

  3. これで、元の MATLAB アルゴリズムの代わりにこの MEX 関数を呼び出すことができます。

この情報は役に立ちましたか?