Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コマンド ラインでの単精度の C コードの生成

この例では、単精度の C コードを倍精度の MATLAB® コードからコマンド ラインで生成する方法について示します。

前提条件

この例を実行するには、次の製品をインストールします。

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

  1. ローカルの作業フォルダー (例: c:\ex_2ndOrder_filter) を作成します。

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

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

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

    種類名前説明
    関数のコードex_2ndOrder_filter.mMATLAB のエントリポイント関数
    テスト ファイルex_2ndOrder_filter_test.m

    ex_2ndOrder_filter.m をテストする MATLAB スクリプト

     関数 ex_2ndOrder_filter

     ex_2ndOrder_filter_test スクリプト

入力引数の型の決定

入力引数 x の型を決定するには、coder.getArgTypes を使用してテスト ファイル ex_2ndOrder_filter_test.m を実行します。

types = coder.getArgTypes('ex_2ndOrder_filter_test', 'ex_2ndOrder_filter');

テスト ファイルが実行され、各入力信号のフィルターの出力が表示されます。coder.getArgTypesx の入力型を 1 行 256 列の double とすることを決定します。

単精度の MEX を生成して実行し、数値的動作を検証

  1. 単精度の C コードを生成する前に、生成された単精度コードの動作の検証に使用できる単精度の MEX 関数を生成します。単精度の MEX コードが必要であることを示すには、-singleC オプションを使用します。

    codegen -singleC ex_2ndOrder_filter -args types -report

    MEX の生成中に、コード ジェネレーターによって単精度変換の問題が検出されます。C/C++ コードを生成する前に、この問題を解決します。この例には単精度変換の問題はありません。

    生成された MEX は単精度と倍精度の入力を受け入れます。同じテスト ファイルを使用して、倍精度の MATLAB 関数と単精度の MEX 関数を実行できます。単精度の MEX 関数を呼び出すためにテスト ファイルを変更する必要はありません。

  2. テスト ファイル ex_2ndOrder_filter_test.m を実行します。このファイルは倍精度の MATLAB 関数 ex_2ndOrder_filter.m を呼び出します。

    ex_2ndOrder_filter_test

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

  4. 倍精度の関数 ex_2ndOrder_filter の呼び出しを単精度の関数 ex_2ndOrder_filter_mex の呼び出しで置き換えてテスト ファイル ex_2ndOrder_filter_test を実行します。

    coder.runTest('ex_2ndOrder_filter_test', 'ex_2ndOrder_filter')
  5. テスト ファイルが実行され、各入力信号のフィルターの出力が表示されます。単精度の MEX 関数は倍精度の MATLAB 関数と同じ結果を生成します。

単精度の C コードの生成

  1. C のスタティック ライブラリ、ダイナミック ライブラリまたは実行可能ファイルを生成するためのコード構成オブジェクトを作成します。

    cfg = coder.config('lib');
    

  2. 単精度の C コードを生成するには、-singleC オプションを使用して codegen を呼び出します。コード生成レポートの生成を有効にします。

    codegen -config cfg -singleC ex_2ndOrder_filter -args {types{1}} -report

生成された単精度の C コードの表示

C コード生成についてのコード生成レポートを表示するには、[レポートの表示] リンクをクリックします。

[生成されるコード] ペインで、ex_2ndOrder_filter.c をクリックします。

  • 倍精度変数は C コード内に float 型をもちます。

  • インデックス i は整数です。

潜在的なデータ型の問題の表示

単精度コードを生成する場合、codegen を使用して潜在的なデータ型の問題をコード生成レポートで強調表示できます。codegen で倍精度演算を削除できない場合、演算を行う MATLAB 式がレポートで強調表示されます。

[コードの洞察] タブをクリックします。[潜在的なデータ型の問題] を展開します。倍精度演算がないということは、倍精度演算が残っていないことを示します。

参考

| | |

関連する例

詳細