MEX 関数を呼び出す MATLAB 関数を C コードに変換できますか?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
MathWorks Support Team
el 25 de Oct. de 2013
Editada: MathWorks Support Team
el 23 de Feb. de 2021
MEX 関数を内部で呼び出している MATLAB 関数を MATLAB Coder で C 言語に変換しようとすると、下記のエラーが発生します。
ここで、CallMexsamp.m が MATLAB 関数、timestwo.mexw64 が MEX 関数名です。
ERROR: ??? MATLAB ファイルのみがコード生成に対してサポートされます。ファイル拡張子 'mexw64' は 'C:\MATLAB\samp\timestwo.mexw64' に対してサポートされていません。
エラー ==> CallMexsamp 行: 7 列: 9
コードを生成できません:エラー レポートを開いてください。
エラー codegen
Respuesta aceptada
MathWorks Support Team
el 23 de Feb. de 2021
Editada: MathWorks Support Team
el 23 de Feb. de 2021
代替案として、coder.ceval 関数を利用する方法があります。この関数は、codegen 関数実行時に、指定した外部の C ソースコードを呼び出します。これにより、ユーザ側で用意した C 関数を呼び出すようにプログラミングし、コード生成と MATLAB 上の実行を切り替えることが可能です。
実際に行うには、下記の手順を実施します。
1. MEX-ファイルのコードを、外部から呼び出せるようなCソースコードに変換
2. MATLAB-ファイル(CallMexsamp.m)を下記のように変換
例えば、下記のように MEX 関数を呼び出している場合、
B = timestwo(a)
下記のように書き換えてから、Cコード生成を行います。
B = coder.ceval(‘timestwo’,a)
3. codegen でMATLAB-ファイルをコード生成
coder.ceval 関数の詳細については、下記 URL をご覧ください。
・MATLAB Coder 関数リファレンス:coder.ceval
なお、coder.ceval 関数の戻り値は、1つでかつスカラである必要があります。
0 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!