メディア

「MATLAB/Simulink」の新バージョン、MATLABコードからCコードの生成が可能に

» 2011年04月08日 00時00分 公開
[EDN Japan]

 米MathWorks社は2011年4月、東京都内で記者会見を開き、モデルベース開発環境「MATLAB/Simulink」の最新バージョン「R2011a」で導入された新機能についての説明を行った。

 R2011aでは、MATLAB/Simulinkで作成したアルゴリズムやモデルからC/C++言語のソースコード(以下、Cコード)を生成する機能について、新たな機能の追加やオプション製品の統合が行われた。


写真1 MathWorks Japanの柴田克久氏 写真1 MathWorks Japanの柴田克久氏 

 まず、新機能となるのが、MATLAB言語で記述したプログラムから直接Cコードを生成することができる「MATLAB Coder」である。この機能を用いることにより、Cコードを生成できるだけでなく、実行形式のコードやライブラリなどを直接生成することも可能になる。MathWorks Japanのインダストリーマーケティング部でシニアマーケティングスペシャリストを務める柴田克久氏(写真1)は、「MATLAB言語で記述したプログラムを製品開発で利用する場合には、MATLABコードをCコードに書き換えてその動作を確認する必要がある。R2010b以前のバージョンでは、このCコードへの書き換えのほとんどは手作業で行わなければならなかった。また、この手作業で書き換えたCコードが、正確に元のプログラムの動作を反映していることを検証するためのプロセスも必要だった。さらにその後には、Cコードを実際の利用形態に合わせて最適化する作業を行わなければならない。MATLAB Coderによって、これらの作業をすべてMATLAB上で行えるようになった」と説明する(図1)。

図1 「MATLAB Coder」による開発の効率化 図1 「MATLAB Coder」による開発の効率化 

 また、MATLAB Coderを使えば、MATLAB言語で記述したコードをMEX(MATLAB Executable)ファイルに変換できることも特徴となっている。MEXファイルとは、CコードをMATLAB上で実行可能なバイナリコードに変換したもので、主にMATLAB上で行う検証作業などに利用されている。検証作業におけるMEXファイルの利用には、大まかに分けて2つの利点がある。1つは、MATLAB言語で記述したコードと比べて、MATLAB上での実行速度が速いことである。柴田氏によれば、「あるデジタルフィルタのアルゴリズムをMATLAB上で実行する際に、MATLAB言語で記述したコードとMEXファイルの実行速度を比較すると、MEXファイルのほうが2倍ほど速かった」という。もう1つは、MEXファイルを作成する際に、MATLAB言語で記述したコードから生成したCコードとMATLAB以外の手法で作成したCコードの統合が可能なことだ。これによって、MATLAB上でさまざまなCコードの検証作業が行えるようになる。柴田氏は、「MATLAB Coderの投入により、従来よりもMEXファイルを利用する場面が増えてくるだろう」と語る。

 なお、MATLAB Coderは、MATLAB言語の基本的な行列/配列、データタイプ、プログラミング要素に対応している。また、400個の演算子/関数、200個のSystem Objectsをサポートしている。演算子と関数、System Objectsのサポートは、R2011b以降のバージョンで拡充していく予定だ。

 また、Cコード生成に関連するオプション製品群の統合については次のようなことが行われた。まず、R2010b以前のバージョンのコード生成関連オプション製品としては、SimulinkモデルからCコードを生成する「Real-Time Workshop」や、組み込み機器向けプロセッサ上で使用可能なCコードを生成する「Real-Time Workshop Embedded Coder」などがあった。Real-Time Workshopでは、MATLAB言語の演算子や関数をCソースで利用できるように変換する「Embedded MATLAB」という機能が提供されていた。これはMATLAB Coderの前身とも言えるものだ。ほかにも、「Stateflow」で作成した状態遷移図からCコード生成を行う「Stateflow Coder」や、Real-Time Workshop Embedded Coderをさまざまな統合開発環境(IDE)で利用できるようにする「Embedded IDE Link」、特定の評価ボードにReal-Time Workshop Embedded Coderで生成したCコードを実装する「Target Support Package」などが用意されていた。

図2 Cコード生成関連オプション製品群の統合イメージ 図2 Cコード生成関連オプション製品群の統合イメージ 

 R2011aからは、これらのオプション製品群が、MATLAB Coder、「Simulink Coder」、「Embedded Coder」の3つに統合されることになった(図2)。まず、MATLAB言語で記述したコードからCコードを生成するオプション製品として、先述したMATLAB Coderを販売する。MATLAB Coderは、Embedded MATLABにさまざまな機能拡張を施した製品として位置付けることができる。次に、Embedded MATLABの機能を除いたReal-Time Workshopと、Stateflow Coderを統合したものがSimulink Coderである。最後に、Embedded Coderは、Real-Time Workshop Embedded Coder、Embedded IDE Link、Target Support Packageを統合したものとなる。なお、Simulink CoderとEmbedded Coderを用いるには、MATLAB Coderが必須になる。

 柴田氏は、「従来、MATLAB/Simulinkを用いる場合のCコード生成は、車載、航空宇宙、産業用機器などの業界で、Simulinkモデルを用いて行うことが一般的だった。しかし、複雑な信号処理を行う通信機器業界などでは、MATLABで作成したアルゴリズムの最適化を効率良く行いたいという要望がある。MATLAB Coderは、このような要望に応えられる製品だ」と述べている。

 なお、R2011aでは、MATLABとSimulinkの両方で用いる「System Toolbox」関連のオプション製品についても、機能の強化や統合が行われた。「DSP System Toolbox」では、従来バージョンの「Signal Processing Blockset」と「Filter Design Toolbox」の機能が統合された。また、「Communications System Toolbox」でも、「Communications Toolbox」と「Communications Blockset」の機能が統合されている。「Computer Vision System Toolbox」では、「Video and Image Processing Blockset」に、映像をコンピュータ処理するための機能が新たに追加された。「Phased Array System Toolbox」は、位相配列信号処理システムの設計や解析に用いるアルゴリズムやツールとして利用できる新たなオプション製品である。

(朴 尚洙)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.