MATLAB Coder

MATLAB コードからの C コードと C++ コードの生成

 

MATLAB Coder™ は、デスクトップ システムから組み込みハードウェアまで、さまざまなハードウェア プラットフォームに対応した C コードと C++ コードを MATLAB® コードから生成します。この製品は、MATLAB 言語の大部分とさまざまなツールボックスをサポートしています。また、生成されたコードをソースコード、スタティック ライブラリまたはダイナミック ライブラリとしてプロジェクトに統合できます。生成コードは可読性および移植性に優れています。これを既存の C コードと C++ コードおよびライブラリの主要部分と組み合わせることができます。また、MATLAB 環境で使用できるように、生成したコードを MEX 関数としてパッケージ化することもできます。

Embedded Coder® を併用することで、MATLAB Coder にコード カスタマイズ、ターゲット固有の最適化、コード トレーサビリティ、ソフトウェアインザループ (SIL) とプロセッサインザループ (PIL) の検証機能が追加されます。

MATLAB プログラムをスタンドアロン アプリケーションとして配布するには、MATLAB Compiler™ を使用します。他のプログラミング言語へ統合するソフトウェア コンポーネントを生成するには、MATLAB Compiler SDK™ を使用します。

今すぐ始める:

多種多様な実行環境

可読性と移植性に優れた ANSI C/C++ ソース コードを生成します。コード配布は無償です。

アルゴリズムの配布が無償

任意の C/C++ コンパイラを使用して、生成したコードをコンパイルし、デスクトップ システムからモバイル デバイス、組み込みハードウェアまであらゆるハードウェアで実行できます。生成したコードはロイヤリティフリーなので、商用アプリケーションで顧客に無料配布することができます。

行列乗算用に生成されたコード

サポートされているツールボックスと関数

MATLAB 言語の幅広い機能を使用して MATLAB Coder で生成されるコードにより、設計エンジニアは大規模システムのコンポーネントとして使用するアルゴリズムを開発することができます。MATLAB および関連ツールボックスから 2500 以上の演算子と関数を利用できます。

コード生成のための MATLAB 言語とツールボックスのサポート

MATLAB から C++ コードを展開

生成コードのオブジェクト指向 C++ ソース コードとの統合。

名前空間を使用した C++ コードの生成

MATLAB Coder では、名前空間で C++ コードを生成することができるので、同一の関数名またはデータ型名を持つ可能性がある他のソース コードとの統合が簡単になります。コード生成では、生成されたすべての関数および型定義は名前空間にパッケージされます。

生成されたコードは、名前空間を使用して同じデータ型名を持つ変数を統合します。

MATLAB クラスから C++ クラスを生成

MATLAB Coder は、値クラス、ハンドル クラス、およびシステム オブジェクトを含む MATLAB コード内のクラスから C++ クラスを生成します。生成されたコードは C++ ライブラリまたは実行可能ファイルにコンパイルすることができ、既存の C++ ソース コードに統合することもできます。

クラス インターフェイスを使用した C++ コードの生成

生成された関数インターフェイスで動的に割り当てられた C++ 配列を使用

コンパイル時にサイズが不明な配列、または定義されたしきい値を超える配列を受け取る、または返すMATLAB 関数のための C++ コードを生成します。生成されたコードでは、配列用のメモリは動的に割り当てられ、coder::array という名称でクラス テンプレートとして実装されます。例外セーフなメモリの割り当て解除に加え、coder::array は動的配列にアクセスして管理する API を提供します。

生成された関数に動的に割り当てられた配列を渡します。

ディープラーニング ネットワークの展開

学習済みディープラーニング ネットワークからコードを生成

エンドツーエンドのディープラーニング アルゴリズムを展開

LSTM その他の層に加え、ResNet-50 や MobileNet-v2 などのさまざまな学習済みディープラーニング ネットワークを Deep Learning Toolbox™ から Intel® および ARM® Cortex® CPU に展開します。前処理と後処理用のコードを学習済みディープラーニング ネットワークと共に生成して、完成したアルゴリズム全体を展開します。

推論に最適化されたコードを生成

MATLAB Coder は特定のアルゴリズムで推論を実行するために必要なコードのみを生成するため、コードは他のディープラーニング ソリューションより高速でメモリ使用量も少なくなります。生成されたコードは、Intel プロセッサ用 Intel MKL-DNN や ARM Cortex プロセッサ用 ARM Compute Library などの最適化されたライブラリを呼び出します。最新の NVIDIA® GPU で実行する CUDA® コードを生成して、アルゴリズムを高速化または配布するには GPU Coder™ を使用します。

ハードウェアでのプロトタイピング

アルゴリズムを C/C++ に自動変換することでハードウェア開発期間を短縮します。

デスクトップおよびクラウド プラットフォームでのプロトタイピング

MATLAB Coder アプリまたは同等のコマンドライン関数を使用すると、簡単にコードを生成し、使用するハードウェア用にコンパイルできます。信号処理、コンピューター ビジョン、ディープラーニング、制御システムをはじめ、幅広いアプリケーションに対応します。

デスクトップおよびクラウド プラットフォームでアルゴリズムを簡単にプロトタイピング

組み込みおよびモバイル プラットフォームでのプロトタイピング

生成したコードとアプリケーションを手動で統合すれば、すべてのデバイスをターゲットにできます。Raspberry Pi 用の MATLAB  サポート パッケージを使用すれば、Raspberry Pi のプロセスを自動化することができます。

組み込みおよびモバイル プラットフォームでアルゴリズムを簡単にプロトタイピング

プロトタイピングから量産への移行

MATLAB Coder と Embedded Coder  を併用すると、標準的な ANSI/ISO C/C++ コードよりも実行速度に優れた、プロセッサ固有の機能を利用したコードも生成できます。

生成したスタンドアロン コードの実行時間のプロファイリング

ソフトウェアとの統合

ソフトウェア環境内で MATLAB アルゴリズムを C/C++ コードとして再利用します。

簡単に統合できるシンプルなインターフェイスでコードを生成

生成されるコードは自動的に C/C++ 型を使用するため、外部コードとの統合が容易です。生成したコードをソースコードやライブラリとして統合することができます。信頼できる C/C++ ライブラリやコンポーネントを MATLAB に統合して、より忠実度の高いテストを実施できるだけでなく、生成したコードから自動的に呼び出すことも可能です。

MATLAB Coder と Embedded Coder を併用する対話型のトレーサビリティ レポート

生成されたコードのパフォーマンスの最適化

最適化を適用することで、実行速度、メモリ使用量、可読性、移植性のトレードオフを調整できます。ボトルネックの特定にはプロファイリング ツールを使用します。パフォーマンスをさらに高めるには、マルチコア対応の OpenMP コードを生成し、使用可能な場合に LAPACK、BLAS、FFTW などの最適化済みライブラリを呼び出します。

OpenMP を呼び出す生成コードの例

統合の前に生成したコードで MATLAB テストを再利用

対話型の MATLAB 環境で、既存の MATLAB テストを再利用して生成コードの動作を検証します。MATLAB ユニット テスト フレームワークを使用すると、生成した C/C++ コードの検証に使用できる多種多様な回帰テストを簡単に開発できます。

アプリケーションに統合する前に生成したコードの動作を検証

アルゴリズムの高速化

C/C++ コードを生成し、MATLAB 内で使用できるようにコンパイルします。

CPU でのアルゴリズムの高速化

生成したコードを MEX 関数として MATLAB コードから呼び出すと実行速度が向上しますが、実際のパフォーマンスは MATLAB コードの性質によって異なります。生成した MEX 関数をプロファイリングし、ボトルネックを特定して最適化の対象を絞り込むことができます。

パフォーマンスのボトルネックを特定するための MEX 関数のプロファイリング

GPU を使用したアルゴリズムの高速化

Parallel Computing Toolbox™ を使用すると、MATLAB でのアルゴリズムの実行を高速化できます。最新の NVIDIA  GPU での高速化や配布に対応した CUDA コードを生成するには GPU Coder を使用します。

新機能

C++ コード

MATLAB クラスから C++ クラスを生成

C++ コード

生成された関数インターフェイスで動的割り当てされた C++ 配列を使用

コード生成の型エディター

対話的に入力型を作成して編集

高速 FFT

高速フーリエ変換 (FFT) 関数用に生成されたコードの性能を改善

Datetime と Timetables

datetime 配列と timetable 用にコードを生成

Optimization Toolbox コードの生成

quadprog を使用して線形制約および二次目的を持つ問題のためのC コードを生成

長期短期記憶 (LSTM) ネットワーク

LSTM などの再帰型ネットワークのためのコードを生成

ディープラーニング ネットワーク

DenseNet-201 および Xception 用のコードを生成

これらの機能および対応する機能の詳細については、リリースノートを参照してください。

Panel Navigation

MATLAB から C コードを簡単に生成するには

MATLAB Coder の使用に関するヒントとベスト プラクティスをご紹介します。Delphi、Baker Hughes、iSonea、dorsaVi など、各社の生成コードの事例もご覧いただけます。