s-function ソースコード管理について

14 views (last 30 days)
TAKATOSHI INAZU
TAKATOSHI INAZU on 2 Mar 2017
Answered: Yoko on 6 Mar 2017
s-function ソースコード管理に関する質問です。
下記のようにフォルダ0の下にフォルダ1と2があり、 main.mdl の中で s-function の s_func1 と s_func2 を使っているとします。 s-function 自体のビルドは、フォルダ1と2の各々に移動して実施しています。
フォルダ0 main.mdl  フォルダ1 s_func1.h s_func1.c s_func1.mexw64  フォルダ2 s_func2.h s_func2.c s_func2.mexw64
フォルダ0上で main.mdl をビルドする際、addpath でフォルダ1と2を参照しています。 このとき
 (1) s_func*.h と s_func*.c は main.mdl のビルドに直接関係していますか。    それとも、s_func*.mexw64 のみが直接関係していますか。  (2) s_func1.h と s_func2.h は、名前が同じで内容が異なるように設計しても    問題ないでしょうか。   (質問 (1) で、s_func*.mexw64 のみが直接影響いれば問題ないと予想しますが、    この予想は正しいでしょうか。)
以上、ご教授よろしくお願いいたします。

Accepted Answer

Yoko
Yoko on 6 Mar 2017
(1), (2) の回答ともに、S-Functionのインラインでビルドか、非インラインでビルドするかに依存します。 インラインビルド、非インラインビルドに関する説明が、下記URLに記載されています。
・S-Function とコード生成
・Inlining S-Functions
----------------------------------------------------
(1),(2) について、それぞれ、下記で回答します。
(1) S-Function を非インラインでビルドする場合、MEX-ファイルのみでビルドできます。 S-Function をインラインでビルドする場合は、ソースコードが必要です。
(2) 上記文章を元に、下記の構成があると理解しています。
フォルダ0:main モデル
フォルダ1: s_func1.h (例えばパラメータが違って m=1 など定義されている), s_func1.mexw64
フォルダ2: s_func1.h (例えばパラメータが違って m=2 など定義されている), s_func2.mexw64
非インラインでビルドする場合は、MEX-ファイルが参照されるので影響はありません。 インラインでビルドする場合は、ソースファイルが参照されるため、問題が発生すると考えられます。 実際にコード生成して、動作を確認することで、より理解が深まるかと思います。まだお試し頂いていないようであれば、簡単なモデルでぜひ一度お試しください。

More Answers (0)

Categories

Find more on Code Generation in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!